The Project 11 framework was developed as a backseat driver for Autonomous Surface Vehicles (ASVs). Key design features include the ability to quickly and easily specify survey plans; monitoring of mission progress, even over unreliable wireless networks; and to provide an environment to develop advanced autonomous technologies.
See the following for detailed instructions on setting up a Simulation Environment:
Installing Project11's backseat driver system and simulator.
If you have an available ROS Noetic system, you can quickly install and run Project11 with the following:
mkdir -p project11/catkin_ws/src
cd project11/catkin_ws/src
git clone https://github.com/CCOMJHC/project11.git
sudo apt-get install python3-rosdep python3-vcstool
sudo rosdep init
rosdep update
vcs import < project11/config/repos/simulator.repos
rosdep install --from-paths . --ignore-src -r -y
cd ..
catkin_make
source devel/setup.bash
roslaunch project11_simulation sim_local.launch
A typical setup has a ROS core running on the robot with some key nodes including the mission_manager
, the helm_manager
and the udp_bridge
. The operator station runs a separate ROS core that also runs a udp_bridge
node as well as camp
, the CCOM Autonomous Mission Planner which provide a planning and monitoring interface.
The CCOM Autonomous Mission Planner, also known as CAMP, displays the vehicle's position on background georeferenced charts and maps. It also allows the planning of missions to be sent to the vehicle and to manage the vehicle's piloting mode.
The UDP Bridge sends select ROS topics between ROS cores. It allows control and monitoring over wireless unreliable networks.
The Mission Manager receives missions from CAMP and sends them to the Project11 Navigator as a list of tasks to execute.
The Helm Manager controls which commands get sent to the underlying hardware. It reacts to changes in piloting mode by sending messages to the piloting mode enable topics and only allowing incoming control messages from the current piloting mode to be sent to the hardware interface.
Project11 operates in 3 major piloting modes: "manual", "autonomous" and "standby".
In "manual" mode, the vehicle responds to commands sent from a device such as a joystick or a gamepad. The commands are converted to "helm" messages by the joy_to_helm
node and are sent from the operator station to the vehicle via the udp_bridge
.
In "autonomous" mode, the mission_manager
sends mission items to the navigation stack and responds to override commands such as the hover command that can allow the vehicle to station keep for a while, then resume the mission when the hover is canceled.
The "standby" mode is used to when no control commands are to be sent by Project11.
The mission_manager
receives the higher level missions and turns them into task lists. The task list is sent to the navigator which eventually generates a Twist message to send to the helm_manager
.