Bumblebee’s software system consists of the mission planner and the vision subsystems to complete the competition courses. The software system runs on Gentoo GNU/Linu utilizing Robot Operating System (ROS) as the messaging passing interface. Various ROS utilities help structure the nodes as well as facilitate in debugging.
Each software unit is a ROS node, and all communication, data acquisition and publishing are done through the ROS architecture. The software stack has been further modularised to allow experimentation and quick reconfiguration on-site. Highly customisable interfaces have been developed in Python to facilitate vision tuning. Locomotion of the vehicle is achieved using the action servers and clients based on the ROS actionlib API.
The Bumblebee 3.0 Control panel displays telemetry information and camera images, which aids in monitoring of sensors and actuator data for system analysis during practice runs. This control panel has been modified as more features have been added onto the new vehicle. Some of these features involve a toggle-able video display to save processing power and sonar displays. In addition to the main telemetry panel, there are also two more panels, one for navigation & mapping, and a trial user interface involving immediate mode GUI.
The ROS logging system is used to capture telemetry and video information, and log messages during both tethered and autonomous runs. The data is captured in .bag files in the form of ROS messages. The rosbag playback utility is used to allow post-processing to improve the algorithms and system.
Vehicle dynamics during an autonomous mission is fully controlled by the mission planner, which directs task nodes, controls trajectory between tasks and manages time. The mission planner is written in Python and utilizes a finite state machine structure.
The highly modular software architecture complements the functionality of the mission planner. The mission planner’s multi-threaded structure allows for simultaneous execution of mission tasks and watch states that serve to keep track of the mission and task statuses. It is coupled with extensions for execution and cleanup of arbitrary scripts on the fly. The mission planner also manages contingency states to allow for recovery via the saved waypoints during the mission run.
Mission runs can be dynamically built from user input, providing an option to test task nodes independently in addition to a full mission test. The vehicle status is consistently checked and an alert is sounded in the event of an irrecoverable component failure.
BumbleBee 3.0 retains six degrees of freedom: surge, sway, heave, roll, pitch and yaw. Six PID (Proportional Integral Derivative) control loops are tuned to control the vehicle’s underwater dynamics. The PID control loops have been improved for dynamic allocation of actuator limits, allowing greater output in specific degree of freedoms. Velocity controllers for the surge and sway domains have been implemented for more precise maneuvering of the vehicle during mission tasks. A User Interface was designed by the software team to facilitate PID Tuning.