Skip to content

Commit e26708b

Browse files
authored
feat(hcm): setup callback groups for high hz subscriptions (#460)
2 parents 26c7f19 + f3824f4 commit e26708b

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

  • bitbots_motion/bitbots_hcm/src

bitbots_motion/bitbots_hcm/src/hcm.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,21 @@ class HCM_CPP : public rclcpp::Node {
6262

6363
// Create subscriber for high frequency sensor data
6464
joint_state_sub_ = this->create_subscription<sensor_msgs::msg::JointState>(
65-
"joint_states", 1, std::bind(&HCM_CPP::joint_state_callback, this, _1));
65+
"joint_states", 1, std::bind(&HCM_CPP::joint_state_callback, this, _1), high_hz_sub_options());
6666
pressure_l_sub_ = this->create_subscription<bitbots_msgs::msg::FootPressure>(
67-
"foot_pressure_left/filtered", 1, std::bind(&HCM_CPP::pressure_l_callback, this, _1));
67+
"foot_pressure_left/filtered", 1, std::bind(&HCM_CPP::pressure_l_callback, this, _1), high_hz_sub_options());
6868
pressure_r_sub_ = this->create_subscription<bitbots_msgs::msg::FootPressure>(
69-
"foot_pressure_right/filtered", 1, std::bind(&HCM_CPP::pressure_r_callback, this, _1));
70-
imu_sub_ =
71-
this->create_subscription<sensor_msgs::msg::Imu>("imu/data", 1, std::bind(&HCM_CPP::imu_callback, this, _1));
69+
"foot_pressure_right/filtered", 1, std::bind(&HCM_CPP::pressure_r_callback, this, _1), high_hz_sub_options());
70+
imu_sub_ = this->create_subscription<sensor_msgs::msg::Imu>(
71+
"imu/data", 1, std::bind(&HCM_CPP::imu_callback, this, _1), high_hz_sub_options());
72+
}
73+
74+
rclcpp::SubscriptionOptions high_hz_sub_options() {
75+
// Setup a MutuallyExclusive callback group for each high frequency
76+
// subscription so that they don't block each other
77+
rclcpp::SubscriptionOptions options;
78+
options.callback_group = this->create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive);
79+
return options;
7280
}
7381

7482
void animation_callback(bitbots_msgs::msg::Animation msg) {

0 commit comments

Comments
 (0)