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