Skip to content

3.1 Propulsion

Elie-Dimitri Abdo edited this page Sep 10, 2023 · 12 revisions

Propulsion

The propulsion package's role is to transform efforts, in the form of wrenches, into PWM signals (in microseconds) for each thruster on the AUV.

Table of Contents

Overview

The propulsion package first arms the thrusters - which means that it makes them functional. It does this by sending high-low PWM signals (Pulse Width Modulation) in microseconds to each thruster. The PWMs directly control the motors of the individual thrusters. The package also handles transforming efforts into PWM signals. The efforts are received in the form of a wrench, which consists of a set of forces AND torques on the X,Y,Z axis. These are then mapped into the forces of each thruster using the following transformation matrix:

image

The rows of the matrix correspond to the force and torque on the three axis X,Y,Z. The dx and dy are distances between thrusters positioned on the chassis of the AUV. The columns correspond to the 8 thrusters on the AUV.

The forces of each thruster in Newtons are then converted into PWMs in microseconds using formulas included in the utilities. The formulas are obtained from the below curves - that map forces in KgF (9.806650 N) to microseconds - defined for the T200 thrusters from Blue Robotics. For more info on the specifications of the performance of the thrusters, visit Blue Robotics.

image


Usage

The propulsion package is not for direct use, it is used through publishing efforts on the 'effort' topic.

Nodes

The only ROS node included in this package is "thrust_mapper", it is subscribed to the effort topic and publishes on the thruster_forces and thruster_microseconds.

Launch Files

There is only one launch file "propulsion.launch" in this package. It starts the thrust_mapper node.

Dependencies

  • auv_msgs
  • geometry_msgs
  • python3-numpy
  • roscpp
  • rospy
  • rosserial_arduino
  • rosserial_client