URI RoboBoat

From EGRwiki
Jump to: navigation, search

URI RoboBoat is an Autonomous Surface Vehicle (ASV) that competes in the AUVSI RoboBoat competition. URI's boat must navigate the course without human interaction. This Wiki page is meant to assist new members of the ASV team and also a reference for existing members during development.

Editing this page to keep it up to date is strongly encouraged!

Software Development (getting started)


Prerequisites and Install

User Guide

Dev Guide

Software overview

The software system is designed to interface high level programming with low level sensors and actuators. The software is implemented mainly in the high level programming languages python and C++. Low level programming with micro controllers is necessary for low level interfacing with some sensors and actuators that communicate with protocols such as servo PWM, SPI and voltage levels.

General flow of information through the software system. Green arrows indicate the primary path, while dotted arrows are secondary. Solid black arrows are low level information.


LCM system


Guidance Navigation and Control


The flow diagram pictured at right is intended to give a broad overview of the software flow. The low level I/O interfaces directly with the physical world, this may require uController programming or may be handled on board the hardware itself. The vision code processes sensor information directly before it is passed on to navigation. This reflects the complexity of vision processing. The navigation system is in charge of processing all information to make it the most useful to the mission code possible.

The mission code makes all of the high level decisions on board the robot in order to complete the tasks assigned to us for the competition. Mission will then sends the decision to guidance, which processes them into desired control variables. The controller then uses the robot's actuators and feedback from it's sensor to meet guidance's desires.

Finally, the middleware Lightweight communication and marshaling (LCM) is used to communicate between a number of processes that actually implement all of these systems.

Electronics system

Battery Merging (desired)

Personal tools