Class JointTrajectoryCommandBroadcaster

Inheritance Relationships

Base Type

  • public controller_interface::ControllerInterface

Class Documentation

class JointTrajectoryCommandBroadcaster : public controller_interface::ControllerInterface

Joint Trajectory Command Broadcaster for leader-follower control in a ros2_control system.

JointStateBroadcaster publishes state interfaces from ros2_control as ROS messages. There is a possibility to publish all available states (typical use), or only specific ones. The latter is, for example, used when hardware provides multiple measurement sources for some of its states, e.g., position. It is possible to define a mapping of measurements from different sources stored in custom interfaces to standard dynamic names in JointState message. If “joints” or “interfaces” parameter is empty, all available states are published.

Publishes to:

  • joint_states (sensor_msgs::msg::JointState): Joint states related to movement (position, velocity, effort).

  • dynamic_joint_states (control_msgs::msg::DynamicJointState): Joint states regardless of its interface type.

Param use_local_topics:

Flag to publish topics in local namespace.

Param joints:

Names of the joints to publish.

Param interfaces:

Names of interfaces to publish.

Param map_interface_to_joint_state.{HW_IF_POSITION|HW_IF_VELOCITY|HW_IF_EFFORT}:

mapping between custom interface names and standard names in sensor_msgs::msg::JointState message.

Public Functions

JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC JointTrajectoryCommandBroadcaster()
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::InterfaceConfiguration command_interface_configuration () const override
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::InterfaceConfiguration state_interface_configuration () const override
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::return_type update (const rclcpp::Time &time, const rclcpp::Duration &period) override
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::CallbackReturn on_init () override
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::CallbackReturn on_configure (const rclcpp_lifecycle::State &previous_state) override
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::CallbackReturn on_activate (const rclcpp_lifecycle::State &previous_state) override
JOINT_TRAJECTORY_COMMAND_BROADCASTER_PUBLIC controller_interface::CallbackReturn on_deactivate (const rclcpp_lifecycle::State &previous_state) override

Protected Types

enum class AutoMode

Values:

enumerator STOPPED
enumerator ACTIVE

Protected Functions

bool init_joint_data()
void joint_states_callback(const sensor_msgs::msg::JointState::SharedPtr msg)
bool check_joints_synced() const
double calculate_mean_error() const
void update_trigger_state(const rclcpp::Time &current_time)
bool check_trigger_active() const

Protected Attributes

std::shared_ptr<ParamListener> param_listener_
Params params_
std::unordered_map<std::string, std::string> map_interface_to_joint_state_
std::vector<std::string> joint_names_
std::vector<double> joint_offsets_
std::unordered_map<std::string, std::shared_ptr<rclcpp::Publisher<trajectory_msgs::msg::JointTrajectory>>> joint_trajectory_publishers_
std::unordered_map<std::string, std::shared_ptr<realtime_tools::RealtimePublisher<trajectory_msgs::msg::JointTrajectory>>> realtime_joint_trajectory_publishers_
std::unordered_map<std::string, trajectory_msgs::msg::JointTrajectory> group_traj_msgs_
std::unordered_map<std::string, std::vector<std::string>> group_joint_names_
std::unordered_map<std::string, std::vector<double>> group_joint_offsets_
std::unordered_map<std::string, std::string> group_topic_names_
std::unordered_map<std::string, std::vector<std::string>> group_reverse_joints_
std::vector<std::string> trajectory_groups_
std::unordered_map<std::string, std::unordered_map<std::string, double>> name_if_value_mapping_
urdf::Model model_
bool is_model_loaded_ = false
std::shared_ptr<rclcpp::Subscription<sensor_msgs::msg::JointState>> joint_states_subscriber_
std::unordered_map<std::string, double> follower_joint_positions_
bool joints_synced_ = false
bool first_publish_ = true
AutoMode auto_mode_ = AutoMode::STOPPED
rclcpp::Time trigger_start_time_ = {0, 0, RCL_ROS_TIME}
bool trigger_counting_ = false
bool mode_changed_in_this_trigger_ = false