Skip to content

Software System Overview

Wesley Fisher edited this page Sep 2, 2019 · 1 revision

The current picture of our software system (most still under development) has 2 main areas. The first area concerns the basic stability and control of the sub. The second concerns logic for the main competitions. Each of these will interact with either the real robot or a simulation.

The main idea behind ROS is that these systems will be composed of small programs. Each will run independently, and communicate with the other programs by sending messages.

Robot

The real robot will have a node running to read each sensor and publish the latest readings. A node will also be running to communicate with and send commands to the thrusters.

These will be simulated by Gazebo when working in simulation

Stability and Control

The basics of stability and control, which will also be used by the logic system, include the following:

  • Sensors
  • State Estimation
  • Stabilization Controls
  • Thruster Control

Sensors

As mentioned before, each sensors will have a node which talks to it and publishes information.

State Estimation

Still to be developed, this node will take in information from all of the sensors, and attempt to determine the sub's state (angular and xyz positions, velocities, etc). At this stage, readings will be filtered, combined, etc.

At the moment, control nodes are currently working off of raw sensors readings. We want to replace this by having them work off of the full estimated state.

Stabilization Controls

This currently includes our Depth and Roll-Pitch-Yaw PID controls. This nodes can take set-points, and issue controls to move the sub's state to these points.

Controls are currently published in the form of a Wrench. This is a collection of 3 forces and 3 moments.

The logic system can interact with these by sending commands to change the goal points of each pid controller.

Thruster Control

The thruster control system first accumulates all of the Wrench-type commands published throughout the system. These are combined into a single Wrench. The required thruster forces are then calculated to generate this Wrench. These commands are sent to the thrusters.

Competition Logic

Still mostly to be done.

Clone this wiki locally