The software of the ship control management system is a crucial aspect that enables the robot to perform its tasks. It makes use of a Jetson Nano, a single-board computer, as the central processing unit to control the robot’s motion and perform high-level tasks such as obstacle avoidance and path planning. The Nano communicates with the manipulator and the mobile base to ensure coordinated and smooth movements.
Robot Operating System, or ROS, is a popular framework used in robotics projects for its robustness and flexibility. One of the main advantages of using ROS is its modular architecture, which allows developers to create independent software modules that can communicate with each other seamlessly. This makes it easy to create complex robotic systems by combining different modules and reusing existing code. ROS also provides a wide range of tools and libraries for various tasks such as perception, planning, and control. These tools help developers to prototype and test their ideas quickly and efficiently, reducing the time and effort required for development.
As previously stated, our robot consists of three subsystems, the locomotion base, the manipulator base, and the perception system. To establish control in all these subsystems, wrapper nodes were created to interact with the hardware. In the control hierarchy, a master control node was created to keep track of individual processes. Subroutines to manage and restart the process were added to help maintain control in case of process failure. A mission parser node was also created which received a mission file and started publishing encoded mission info along with current panel info for the arm node.
The perception subsystem used two nodes, a predict node that worked in conjunction with the RealSense ROS wrapper and used a YOLO architecture to predict what valve the panel current had and what was the current status of the valve. All the labels perceived by the model architecture were published as a part of the realsense_predict topic. The endoscope node 13 communicated with the arm node for visual actuation of the end effector using the position status topic. This allowed the arm to align itself correctly with the valve.
The base node used the Arduino-ROS wrapper to establish serial communication between ROS and the Arduino Mega 2560. The base node expected information from the arm node in the completion status topic to understand when the valve operations are complete, and it is time to move to the next panel. The base node also publishes data on a reached status topic which tells the arm node that the robot has reached the next base and it is time for the next set of operations.
The arm node is at the center of the control schema. It sends and receives data from the base and perception subsystem. Once it receives a confirmation from the base to start executing the instruction for a new panel, it reaches a predefined vision position and waits for the input from the realsense_predict topic. Using the information from the realsense_predict topic and the panel_info topic, the arm decides what trajectory to execute. The position_status topic helps the end effector to position itself correctly for performing the task. Once the task is complete, the arm returns to the predefined vision position and waits for confirmation from the camera. If the task has been completed successfully, the arm collapses and the base is ready to move to the next position. If the task is not complete, the arm attempts the panel again. The panel is attempted at a maximum of three times.
Once the mission file has been executed successfully, the base moves the robot to a safe distance and publishes a completion message. On receiving this message, the master control node cleanly shuts down the entire ROS process.