controls  3.0.0
Public Member Functions | List of all members
AuvDriver Class Reference
Inheritance diagram for AuvDriver:
ControlsROS2Wrapper

Public Member Functions

 AuvDriver (std::unique_ptr< Vehicle > robot)
 
- Public Member Functions inherited from ControlsROS2Wrapper
 ControlsROS2Wrapper (const std::string &name, std::unique_ptr< Vehicle > robot, std::string body_frame_tf_name="base_link", std::string world_frame_tf_name="map")
 Constructs the node, initialises all ROS interfaces, and loads parameters. More...
 
 ~ControlsROS2Wrapper () override
 
 ControlsROS2Wrapper (const ControlsROS2Wrapper &)=delete
 
ControlsROS2Wrapperoperator= (const ControlsROS2Wrapper &)=delete
 
 ControlsROS2Wrapper (ControlsROS2Wrapper &&)=delete
 
ControlsROS2Wrapperoperator= (ControlsROS2Wrapper &&)=delete
 

Additional Inherited Members

- Public Types inherited from ControlsROS2Wrapper
using Locomotion = bb_controls_msgs::action::Locomotion
 
using GoalHandleLocomotion = rclcpp_action::ServerGoalHandle< Locomotion >
 
- Static Public Attributes inherited from ControlsROS2Wrapper
static const std::unordered_map< std::string_view, double Params::* > DOUBLE_PARAM_MAP
 Maps ROS parameter names to their corresponding Params member pointers. More...
 
static const std::unordered_map< std::string_view, bool Params::* > BOOL_PARAM_MAP
 
- Protected Member Functions inherited from ControlsROS2Wrapper
void control_loop ()
 Executes one iteration of the 20 Hz control loop. More...
 
void publish_controller_status (const Vehicle::ControllerStatus &status)
 Publishes a ControllerStatus message from the given status snapshot. More...
 
void debug_publish_loop ()
 Drains the debug queue and publishes all pending messages. More...
 
rcl_interfaces::msg::SetParametersResult parameters_callback (const std::vector< rclcpp::Parameter > &parameters)
 Callback invoked by the ROS parameter system when any parameter changes. More...
 
void declare_controller_params ()
 Registers all entries in DOUBLE_PARAM_MAP / BOOL_PARAM_MAP with the ROS parameter server. More...
 
void load_params_from_server ()
 Reads all declared ROS parameters into config_. More...
 
void apply_config_to_vehicle ()
 Applies config_ to the Vehicle's dynamics model, controller gains, and limits. More...
 
void sub_callback_world_position (const nav_msgs::msg::Odometry::ConstSharedPtr &m)
 Odometry subscriber callback — updates vehicle state and starts the control loop. More...
 
void sub_callback_battery_voltage (const bb_sensor_msgs::msg::BatteriesWithId::ConstSharedPtr &msg)
 Battery subscriber callback — forwards the minimum cell voltage to the Vehicle. More...
 
void sub_callback_teleop_force (const geometry_msgs::msg::Twist::ConstSharedPtr &msg)
 Teleop subscriber callback — allocates the raw force directly if the controller is disabled. More...
 
void srv_callback_controller (const std::shared_ptr< bb_controls_msgs::srv::Controller::Request > req, std::shared_ptr< bb_controls_msgs::srv::Controller::Response > res)
 Service callback to enable (stationkeep) or disable the controller. More...
 
void srv_callback_trajectory_xyz (const std::shared_ptr< bb_controls_msgs::srv::SplineTraj::Request > req, std::shared_ptr< bb_controls_msgs::srv::SplineTraj::Response > res)
 Service callback to request a straight XYZ or multi-waypoint spline trajectory. More...
 
void srv_callback_encircle_traj (const std::shared_ptr< bb_controls_msgs::srv::EncircleTraj::Request > req, std::shared_ptr< bb_controls_msgs::srv::EncircleTraj::Response > res)
 Service callback to request a circular arc (encircle) trajectory. More...
 
rclcpp_action::GoalResponse poly_handle_goal (const rclcpp_action::GoalUUID &uuid, std::shared_ptr< const Locomotion::Goal > goal)
 Action server goal handler — rejects goals when the controller is disabled. More...
 
rclcpp_action::CancelResponse poly_handle_cancel (const std::shared_ptr< GoalHandleLocomotion > goal_handle)
 Action server cancel handler — always accepts cancel requests. More...
 
void poly_handle_accepted (const std::shared_ptr< GoalHandleLocomotion > goal_handle)
 Action server accepted handler — preempts any active goal and starts a new execute thread. More...
 
void poly_execute_action (const std::shared_ptr< GoalHandleLocomotion > goal_handle)
 Executes a Locomotion action: plans trajectory, waits for completion, checks tolerances. More...
 
- Protected Attributes inherited from ControlsROS2Wrapper
std::once_flag control_loop_started_
 Flag for starting control loop. More...
 
const std::string vehicle_frame_id_
 TF child_frame_id of the vehicle body frame. More...
 
const std::string world_frame_id_
 TF frame_id of the world frame. More...
 
std::unique_ptr< Vehicleauv_
 Encapsulated vehicle control stack. More...
 
rclcpp::Subscription< nav_msgs::msg::Odometry >::SharedPtr world_sub_
 
rclcpp::Subscription< bb_sensor_msgs::msg::BatteriesWithId >::SharedPtr battery_sub_
 
rclcpp::Subscription< geometry_msgs::msg::Twist >::SharedPtr teleop_force_sub_
 
rclcpp::Publisher< geometry_msgs::msg::WrenchStamped >::SharedPtr pub_controller_force_
 
rclcpp::Publisher< bb_controls_msgs::msg::ControllerStatus >::SharedPtr pub_status_
 
rclcpp::Publisher< geometry_msgs::msg::PoseArray >::SharedPtr pub_traj_viz_
 
rclcpp::Publisher< bb_controls_msgs::msg::Thrusters >::SharedPtr pub_thruster_commands_
 
rclcpp::Publisher< geometry_msgs::msg::WrenchStamped >::SharedPtr pub_allocator_force_
 
rclcpp::Publisher< bb_controls_msgs::msg::ThrusterForces >::SharedPtr pub_thruster_forces_
 
rclcpp::TimerBase::SharedPtr control_loop_timer_
 
rclcpp::TimerBase::SharedPtr debug_publish_timer_
 
moodycamel::ConcurrentQueue< DebugMessagedebug_queue_
 Lock-free queue through which the control loop passes debug messages to the publish timer. More...
 
rclcpp::Service< bb_controls_msgs::srv::Controller >::SharedPtr controller_srv_
 
rclcpp::Service< bb_controls_msgs::srv::SplineTraj >::SharedPtr spline_traj_srv_
 
rclcpp::Service< bb_controls_msgs::srv::EncircleTraj >::SharedPtr encircle_traj_srv_
 
rclcpp_action::Server< Locomotion >::SharedPtr poly_action_server_
 
std::mutex action_goal_mutex_
 
std::shared_ptr< GoalHandleLocomotioncurrent_action_goal_
 
std::atomic< bool > shutdown_requested_ {false}
 Signals the action execution thread to exit its loop. More...
 
std::thread action_execute_thread_
 Thread running action execute method; joined before destruction. More...
 
OnSetParametersCallbackHandle::SharedPtr callback_handle_
 
Params config_
 Local snapshot of ROS parameters, pushed to Vehicle subsystems on change. More...
 
double prev_time_ = 0.0
 ROS timestamp of the previous control loop iteration. More...
 
rclcpp::CallbackGroup::SharedPtr odom_cb_group_
 
rclcpp::CallbackGroup::SharedPtr control_loop_cb_group_
 
rclcpp::CallbackGroup::SharedPtr services_cb_group_
 
rclcpp::CallbackGroup::SharedPtr actions_cb_group_
 
rclcpp::CallbackGroup::SharedPtr aux_cb_group_
 
- Static Protected Attributes inherited from ControlsROS2Wrapper
static constexpr int CONTROL_LOOP_RATE = 20
 Control loop frequency in Hz. More...
 
static constexpr double MIN_DEPTH_CLAMP = 0.00
 Minimum depth value clamp to avoid near-zero depth noise (m) More...
 
static constexpr double POSITION_JUMP_THRESHOLD = 0.5
 Position jump threshold for outlier rejection (m) More...
 

Constructor & Destructor Documentation

◆ AuvDriver()

AuvDriver::AuvDriver ( std::unique_ptr< Vehicle robot)
inlineexplicit

The documentation for this class was generated from the following file: