Configuration
Configuring the Transform Tree
First create an arbitrary transform link to be used as center of gravity link.
You may use URDF, static transform publisher, or your own TF publisher to achieve that.
This link will be passed to mvp_control
with cg_link
parameter.
Depending on the navigation solution, you maybe forced to use NED (North East Down) coordinate system.
For example, robot_localization package only works with ENU (East North Up) coordinate system.
You’ll be configuring world_link
parameter to base as the same convention as cg_link
.
In other words, if cg_link
is ENU, world_link
must be ENU and vica versa.
Note
MVP Controller requires a working navigation stack. ROS robot_localization package provides easiest navigation integration.
Odometry input set with odometry_source
parameter. Your navigation solution must output the odometry in nav_msgs/Odometry
type.
Your final TF tree structrue should look like the following image.
Setting up the thrust curve
Some manifacturers provide thrust curve for their thrusters that represets control command and force relation.
mvp_control
accepts polynomails as thrust curves.
It has a built-in polynomial solver to solve for control command.
For example, if you want to use Blue Robotics T200 thruster, you can download the performance metrics from their webpage. Then, you can apply curve-fitting to find polynomial that represents the thrust curve.
Note
You can use either Matlab’s curve fitting toolbox or you can use one of the Python scientific libraries curve fitters.
In some cases, actuator performance degregades or enhances based on the power supply efficiency and one-to-one mapping of control command to force might not be feasible.
To fix that problem, you may already have actuator controller that takes force as an input to control the actuator.
mvp_control
requested forces per thruster in another topic to cover this case.