Skip to content

inner_loops_pid Node

In a nutshell

This node launches the inner loop of the vehicle, where the realization is made using PID controllers. It outputs the thrust necessary for the thrusters of the vehicle. For indepth documentation, refer the links below:

Diagram

inner_loops_pid Diagram

Subscribers

Subscribers msgs type Purpose
/#vehicle#/nav/filter/state auv_msgs/NavigationStatus Filtered vehicle state
/#vehicle#/force_bypass auv_msgs/BodyForceRequest Forces from external controllers to be also considered in the PID controllers
/#vehicle#/ref/altitude_safety std_msgs/Float64 Reference for minimum safe altitude
/#vehicle#/ref/depth_safety std_msgs/Float64 Reference for maximum safe depth
/#vehicle#/ref/<controller> std_msgs/Float64 References for PID controllers to follow

where, just like in the diagram, <controller> can be one of the following:

Angles Angle Rates Speeds Position
yaw yaw_rate surge depth
roll roll_rate sway altitude
pitch - heave -

Publishers

Publishers msg type Purpose
/#vehicle#/thrust_body_request auv_msgs/BodyForceRequest Calculated forces to be applied on the thrusters

Services

Services srv type Purpose
/#vehicle#/inner_forces/change_ff_gains inner_loops_pid/ChangeFFGains Change feedforward gains
/#vehicle#/inner_forces/change_inner_gains inner_loops_pid/ChangeInnerGains Change the gains one of the PID controllers
/#vehicle#/inner_forces/change_inner_limits inner_loops_pid/ChangeInnerLimits Change the output limits of one of the PID controllers

Parameters

All the parameters are under the namespace of this node (/#vehicle#/controls/inner_loops_pid/), so we will refrain from repeating it for each parameter. Visit the control.yaml config file for each vehicle to check these parameters.

Altitude Controller

Parameters type Default Purpose
/controllers/altitude/kd float - Altitude controller derivative gain
/controllers/altitude/ki float - Altitude controller integral gain
/controllers/altitude/kp float - Altitude controller proportional gain
/controllers/altitude/max_depth float - Maximum depth for altitude controller
/controllers/altitude/max_err float - Maximum error for altitude controller input
/controllers/altitude/max_out float - Maximum output for altitude controller
/controllers/altitude/min_err float - Minimum error for altitude controller
/controllers/altitude/min_out float - Minimum output for altitude controller

Depth Controller

Parameters type Default Purpose
/controllers/depth/kd float - Deth controller derivative gain
/controllers/depth/ki float - Depth controller for integral gain
/controllers/depth/kp float - Depth controller for proportional gain
/controllers/depth/max_err float - Maximum error for depth controller input
/controllers/depth/max_out float - Maximum output for depth controller
/controllers/depth/min_alt float - Maximum altitude for depth controller
/controllers/depth/min_err float - Minimum error for depth controller
/controllers/depth/min_out float - Minimum output for depth controller

Surge Controller

Parameters type Default Purpose
/controllers/surge/ki float - Surge controller integral gain
/controllers/surge/kp float - Surge controller proportional gain
/controllers/surge/max_err float - Maximum error for surge controller input
/controllers/surge/max_out float - Maximum output for surge controller
/controllers/surge/max_ref float - Maximum reference for surge controller
/controllers/surge/min_err float - Minimum error for surge controller
/controllers/surge/min_out float - Minimum output for surge controller
/controllers/surge/min_ref float - Minimum reference for surge controller

Sway Controller

Parameters type Default Purpose
/controllers/sway/ki float - Sway controller integral gain
/controllers/sway/kp float - Sway controller proportional gain
/controllers/sway/max_err float - Maximum error for sway controller input
/controllers/sway/max_out float - Maximum output for sway controller
/controllers/sway/max_ref float - Maximum reference for sway controller
/controllers/sway/min_err float - Minimum error for sway controller input
/controllers/sway/min_out float - Minimum output for sway controller
/controllers/sway/min_ref float - Minimum reference for sway controller

Yaw Controller

Parameters type Default Purpose
/controllers/yaw/kd float - Yaw controller derivative gain
/controllers/yaw/ki float - Yaw controller integral gain
/controllers/yaw/kp float - Yaw controller proportional gain
/controllers/yaw/max_err float - Maximum error for yaw controller input
/controllers/yaw/max_out float - Maximum output for yaw controller
/controllers/yaw/min_err float - Minimum error for yaw controller input
/controllers/yaw/min_out float - Minimum output for yaw controller

Yaw Rate Controller

Parameters type Default Purpose
/controllers/yaw_rate/ki float - Yaw rate integral gain
/controllers/yaw_rate/kp float - Yaw rate proportional gain
/controllers/yaw_rate/max_err float - Maximum error for yaw rate controller input
/controllers/yaw_rate/max_out float - Maximum output for yaw rate controller
/controllers/yaw_rate/min_err float - Minimum error for yaw rate controller input
/controllers/yaw_rate/min_out float - Minimum output for yaw rate controller

General Parameters

Parameters type Default Purpose
/forces_hard_bypass bool false If hard bypass is true, the controller completely ignores the yaw PID forces and reads from an external source, otherwise it sums all the force components
/min_alt float - Minimum altitude for overall controller
/node_frequency float - Working frequency of the node
/timout_ref float - Timeout for hard bypass reference use (stops using external forces after this time)

Last update: November 23, 2022