Nav2 Navigation Stack - jazzy  jazzy
ROS 2 Navigation Stack
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
opennav_docking::Controller Class Reference

Default control law for approaching a dock target. More...

#include <nav2_docking/opennav_docking/include/opennav_docking/controller.hpp>

Collaboration diagram for opennav_docking::Controller:
Collaboration graph
[legend]

Public Member Functions

 Controller (const rclcpp_lifecycle::LifecycleNode::SharedPtr &node, std::shared_ptr< tf2_ros::Buffer > tf, std::string fixed_frame, std::string base_frame)
 Create a controller instance. Configure ROS 2 parameters. More...
 
 ~Controller ()
 A destructor for opennav_docking::Controller.
 
bool computeVelocityCommand (const geometry_msgs::msg::Pose &pose, geometry_msgs::msg::Twist &cmd, bool is_docking, bool backward=false)
 Compute a velocity command using control law. More...
 

Protected Member Functions

bool isTrajectoryCollisionFree (const geometry_msgs::msg::Pose &target_pose, bool is_docking, bool backward=false)
 Check if a trajectory is collision free. More...
 
rcl_interfaces::msg::SetParametersResult dynamicParametersCallback (std::vector< rclcpp::Parameter > parameters)
 Callback executed when a parameter change is detected. More...
 
void configureCollisionChecker (const rclcpp_lifecycle::LifecycleNode::SharedPtr &node, std::string costmap_topic, std::string footprint_topic, double transform_tolerance)
 Configure the collision checker. More...
 

Protected Attributes

rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_
 
std::mutex dynamic_params_lock_
 
rclcpp::Logger logger_ {rclcpp::get_logger("Controller")}
 
rclcpp::Clock::SharedPtr clock_
 
std::unique_ptr< nav2_graceful_controller::SmoothControlLawcontrol_law_
 
double k_phi_
 
double k_delta_
 
double beta_
 
double lambda_
 
double slowdown_radius_
 
double v_linear_min_
 
double v_linear_max_
 
double v_angular_max_
 
rclcpp::Publisher< nav_msgs::msg::Path >::SharedPtr trajectory_pub_
 
bool use_collision_detection_
 
double projection_time_
 
double simulation_time_step_
 
double dock_collision_threshold_
 
double transform_tolerance_
 
std::shared_ptr< tf2_ros::Buffer > tf2_buffer_
 
std::unique_ptr< nav2_costmap_2d::CostmapSubscribercostmap_sub_
 
std::unique_ptr< nav2_costmap_2d::FootprintSubscriberfootprint_sub_
 
std::shared_ptr< nav2_costmap_2d::CostmapTopicCollisionCheckercollision_checker_
 
std::string fixed_frame_
 
std::string base_frame_
 

Detailed Description

Default control law for approaching a dock target.

Definition at line 38 of file controller.hpp.

Constructor & Destructor Documentation

◆ Controller()

opennav_docking::Controller::Controller ( const rclcpp_lifecycle::LifecycleNode::SharedPtr &  node,
std::shared_ptr< tf2_ros::Buffer >  tf,
std::string  fixed_frame,
std::string  base_frame 
)

Create a controller instance. Configure ROS 2 parameters.

Parameters
nodeLifecycle node
tftf2_ros TF buffer
fixed_frameFixed frame
base_frameRobot base frame

Definition at line 28 of file controller.cpp.

References configureCollisionChecker(), and dynamicParametersCallback().

Here is the call graph for this function:

Member Function Documentation

◆ computeVelocityCommand()

bool opennav_docking::Controller::computeVelocityCommand ( const geometry_msgs::msg::Pose &  pose,
geometry_msgs::msg::Twist &  cmd,
bool  is_docking,
bool  backward = false 
)

Compute a velocity command using control law.

Parameters
poseTarget pose, in robot centric coordinates.
cmdCommand velocity.
is_dockingIf true, robot is docking. If false, robot is undocking.
backwardIf true, robot will drive backwards to goal.
Returns
True if command is valid, false otherwise.

Definition at line 111 of file controller.cpp.

References isTrajectoryCollisionFree().

Here is the call graph for this function:

◆ configureCollisionChecker()

void opennav_docking::Controller::configureCollisionChecker ( const rclcpp_lifecycle::LifecycleNode::SharedPtr &  node,
std::string  costmap_topic,
std::string  footprint_topic,
double  transform_tolerance 
)
protected

Configure the collision checker.

Parameters
nodeLifecycle node
costmap_topicCostmap topic
footprint_topicFootprint topic
transform_toleranceTransform tolerance

Definition at line 193 of file controller.cpp.

Referenced by Controller().

Here is the caller graph for this function:

◆ dynamicParametersCallback()

rcl_interfaces::msg::SetParametersResult opennav_docking::Controller::dynamicParametersCallback ( std::vector< rclcpp::Parameter >  parameters)
protected

Callback executed when a parameter change is detected.

Parameters
eventParameterEvent message

Definition at line 205 of file controller.cpp.

Referenced by Controller().

Here is the caller graph for this function:

◆ isTrajectoryCollisionFree()

bool opennav_docking::Controller::isTrajectoryCollisionFree ( const geometry_msgs::msg::Pose &  target_pose,
bool  is_docking,
bool  backward = false 
)
protected

Check if a trajectory is collision free.

Parameters
target_poseTarget pose, in robot centric coordinates.
is_dockingIf true, robot is docking. If false, robot is undocking.
backwardIf true, robot will drive backwards to goal.
Returns
True if trajectory is collision free.

Definition at line 120 of file controller.cpp.

Referenced by computeVelocityCommand().

Here is the caller graph for this function:

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