@@ -95,20 +95,32 @@ PacmodInterface::PacmodInterface()
95
95
rear_door_rpt_sub_ = create_subscription<pacmod3_msgs::msg::SystemRptInt>(
96
96
" /pacmod/rear_pass_door_rpt" , 1 , std::bind (&PacmodInterface::callbackRearDoor, this , _1));
97
97
98
- steer_wheel_rpt_sub_ = create_subscription<pacmod3_msgs::msg::SystemRptFloat>(
99
- " /pacmod/steering_rpt" , 1 , std::bind (&PacmodInterface::callbackSteerWheelRpt, this , _1));
100
- wheel_speed_rpt_sub_ = create_subscription<pacmod3_msgs::msg::WheelSpeedRpt>(
101
- " /pacmod/wheel_speed_rpt" , 1 , std::bind (&PacmodInterface::callbackWheelSpeedRpt, this , _1));
102
- accel_rpt_sub_ = create_subscription<pacmod3_msgs::msg::SystemRptFloat>(
103
- " /pacmod/accel_rpt" , 1 , std::bind (&PacmodInterface::callbackAccelRpt, this , _1));
104
- brake_rpt_sub_ = create_subscription<pacmod3_msgs::msg::SystemRptFloat>(
105
- " /pacmod/brake_rpt" , 1 , std::bind (&PacmodInterface::callbackBrakeRpt, this , _1));
106
- shift_rpt_sub_ = create_subscription<pacmod3_msgs::msg::SystemRptInt>(
107
- " /pacmod/shift_rpt" , 1 , std::bind (&PacmodInterface::callbackGearRpt, this , _1));
108
- turn_rpt_sub_ = create_subscription<pacmod3_msgs::msg::SystemRptInt>(
109
- " /pacmod/turn_rpt" , 1 , std::bind (&PacmodInterface::callbackTurnRpt, this , _1));
110
- global_rpt_sub_ = create_subscription<pacmod3_msgs::msg::GlobalRpt>(
111
- " /pacmod/global_rpt" , 1 , std::bind (&PacmodInterface::callbackGlobalRpt, this , _1));
98
+ steer_wheel_rpt_sub_ =
99
+ std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::SystemRptFloat>>(
100
+ this , " /pacmod/steering_rpt" );
101
+ wheel_speed_rpt_sub_ =
102
+ std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::WheelSpeedRpt>>(
103
+ this , " /pacmod/wheel_speed_rpt" );
104
+ accel_rpt_sub_ = std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::SystemRptFloat>>(
105
+ this , " /pacmod/accel_rpt" );
106
+ brake_rpt_sub_ = std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::SystemRptFloat>>(
107
+ this , " /pacmod/brake_rpt" );
108
+ shift_rpt_sub_ = std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::SystemRptInt>>(
109
+ this , " /pacmod/shift_rpt" );
110
+ turn_rpt_sub_ = std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::SystemRptInt>>(
111
+ this , " /pacmod/turn_rpt" );
112
+ global_rpt_sub_ = std::make_unique<message_filters::Subscriber<pacmod3_msgs::msg::GlobalRpt>>(
113
+ this , " /pacmod/global_rpt" );
114
+
115
+ pacmod_feedbacks_sync_ =
116
+ std::make_unique<message_filters::Synchronizer<PacmodFeedbacksSyncPolicy>>(
117
+ PacmodFeedbacksSyncPolicy (10 ), *steer_wheel_rpt_sub_, *wheel_speed_rpt_sub_, *accel_rpt_sub_,
118
+ *brake_rpt_sub_, *shift_rpt_sub_, *turn_rpt_sub_, *global_rpt_sub_);
119
+
120
+ pacmod_feedbacks_sync_->registerCallback (std::bind (
121
+ &PacmodInterface::callbackPacmodRpt, this , std::placeholders::_1, std::placeholders::_2,
122
+ std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6,
123
+ std::placeholders::_7));
112
124
113
125
/* publisher */
114
126
// To pacmod
@@ -227,57 +239,24 @@ void PacmodInterface::callbackRearDoor(
227
239
door_status_pub_->publish (toAutowareDoorStatusMsg (*rear_door_rpt));
228
240
}
229
241
230
- void PacmodInterface::callbackSteerWheelRpt (
231
- const pacmod3_msgs::msg::SystemRptFloat::ConstSharedPtr steer_wheel_rpt)
242
+ void PacmodInterface::callbackPacmodRpt (
243
+ const pacmod3_msgs::msg::SystemRptFloat::ConstSharedPtr steer_wheel_rpt,
244
+ const pacmod3_msgs::msg::WheelSpeedRpt::ConstSharedPtr wheel_speed_rpt,
245
+ const pacmod3_msgs::msg::SystemRptFloat::ConstSharedPtr accel_rpt,
246
+ const pacmod3_msgs::msg::SystemRptFloat::ConstSharedPtr brake_rpt,
247
+ const pacmod3_msgs::msg::SystemRptInt::ConstSharedPtr shift_rpt,
248
+ const pacmod3_msgs::msg::SystemRptInt::ConstSharedPtr turn_rpt,
249
+ const pacmod3_msgs::msg::GlobalRpt::ConstSharedPtr global_rpt)
232
250
{
233
- is_steer_wheel_rpt_received_ = true ;
251
+ is_pacmod_rpt_received_ = true ;
234
252
steer_wheel_rpt_ptr_ = steer_wheel_rpt;
235
- }
236
-
237
- void PacmodInterface::callbackWheelSpeedRpt (
238
- const pacmod3_msgs::msg::WheelSpeedRpt::ConstSharedPtr wheel_speed_rpt)
239
- {
240
- is_wheel_speed_rpt_received_ = true ;
241
253
wheel_speed_rpt_ptr_ = wheel_speed_rpt;
242
- }
243
-
244
- void PacmodInterface::callbackAccelRpt (
245
- const pacmod3_msgs::msg::SystemRptFloat::ConstSharedPtr accel_rpt)
246
- {
247
- is_accel_rpt_received_ = true ;
248
254
accel_rpt_ptr_ = accel_rpt;
249
- }
250
-
251
- void PacmodInterface::callbackBrakeRpt (
252
- const pacmod3_msgs::msg::SystemRptFloat::ConstSharedPtr brake_rpt)
253
- {
254
- is_brake_rpt_received_ = true ;
255
255
brake_rpt_ptr_ = brake_rpt;
256
- }
257
-
258
- void PacmodInterface::callbackGearRpt (
259
- const pacmod3_msgs::msg::SystemRptInt::ConstSharedPtr gear_rpt)
260
- {
261
- is_shift_rpt_received_ = true ;
262
- gear_cmd_rpt_ptr_ = gear_rpt;
263
- }
264
-
265
- void PacmodInterface::callbackTurnRpt (
266
- const pacmod3_msgs::msg::SystemRptInt::ConstSharedPtr turn_rpt)
267
- {
268
- is_turn_rpt_received_ = true ;
269
- turn_rpt_ptr_ = turn_rpt;
270
- }
271
-
272
- void PacmodInterface::callbackGlobalRpt (
273
- const pacmod3_msgs::msg::GlobalRpt::ConstSharedPtr global_rpt)
274
- {
275
- is_global_rpt_received_ = true ;
256
+ gear_cmd_rpt_ptr_ = shift_rpt;
276
257
global_rpt_ptr_ = global_rpt;
277
- }
258
+ turn_rpt_ptr_ = turn_rpt;
278
259
279
- void PacmodInterface::publishVehicleStatus ()
280
- {
281
260
is_pacmod_enabled_ =
282
261
steer_wheel_rpt_ptr_->enabled && accel_rpt_ptr_->enabled && brake_rpt_ptr_->enabled ;
283
262
RCLCPP_DEBUG (
@@ -312,7 +291,7 @@ void PacmodInterface::publishVehicleStatus()
312
291
autoware_vehicle_msgs::msg::ControlModeReport control_mode_msg;
313
292
control_mode_msg.stamp = header.stamp ;
314
293
315
- if (global_rpt_ptr_ ->enabled && is_pacmod_enabled_) {
294
+ if (global_rpt ->enabled && is_pacmod_enabled_) {
316
295
control_mode_msg.mode = autoware_vehicle_msgs::msg::ControlModeReport::AUTONOMOUS;
317
296
} else {
318
297
control_mode_msg.mode = autoware_vehicle_msgs::msg::ControlModeReport::MANUAL;
@@ -363,23 +342,18 @@ void PacmodInterface::publishVehicleStatus()
363
342
{
364
343
autoware_vehicle_msgs::msg::TurnIndicatorsReport turn_msg;
365
344
turn_msg.stamp = header.stamp ;
366
- turn_msg.report = toAutowareTurnIndicatorsReport (*turn_rpt_ptr_ );
345
+ turn_msg.report = toAutowareTurnIndicatorsReport (*turn_rpt );
367
346
turn_indicators_status_pub_->publish (turn_msg);
368
347
369
348
autoware_vehicle_msgs::msg::HazardLightsReport hazard_msg;
370
349
hazard_msg.stamp = header.stamp ;
371
- hazard_msg.report = toAutowareHazardLightsReport (*turn_rpt_ptr_ );
350
+ hazard_msg.report = toAutowareHazardLightsReport (*turn_rpt );
372
351
hazard_lights_status_pub_->publish (hazard_msg);
373
352
}
374
353
}
375
354
376
355
void PacmodInterface::publishCommands ()
377
356
{
378
- is_pacmod_rpt_received_ = is_steer_wheel_rpt_received_ && is_wheel_speed_rpt_received_ &&
379
- is_accel_rpt_received_ && is_brake_rpt_received_ &&
380
- is_shift_rpt_received_ && is_turn_rpt_received_ &&
381
- is_global_rpt_received_;
382
-
383
357
/* guard */
384
358
if (!actuation_cmd_ptr_ || !control_cmd_ptr_ || !is_pacmod_rpt_received_ || !gear_cmd_ptr_) {
385
359
RCLCPP_INFO_THROTTLE (
@@ -389,8 +363,6 @@ void PacmodInterface::publishCommands()
389
363
return ;
390
364
}
391
365
392
- publishVehicleStatus ();
393
-
394
366
const rclcpp::Time current_time = get_clock ()->now ();
395
367
396
368
double desired_throttle = actuation_cmd_ptr_->actuation .accel_cmd + accel_pedal_offset_;
0 commit comments