@@ -208,68 +208,83 @@ void AEB::onTimer()
208
208
updater_.force_update ();
209
209
}
210
210
211
- void AEB::onVelocity ( const VelocityReport::ConstSharedPtr input_msg )
211
+ void AEB::fetchVelocity ( )
212
212
{
213
- current_velocity_ptr_ = input_msg;
213
+ if (sub_velocity_.updateLatestData ()) {
214
+ current_velocity_ptr_ = std::make_shared<VelocityReport>(sub_velocity_.getData ());
215
+ }
214
216
}
215
217
216
- void AEB::onImu ( const Imu::ConstSharedPtr input_msg )
218
+ void AEB::fetchImu ( )
217
219
{
220
+ if (!sub_imu_.updateLatestData ()) {
221
+ return ;
222
+ }
223
+
224
+ const auto & input_msg = sub_imu_.getData ();
218
225
// transform imu
219
226
geometry_msgs::msg::TransformStamped transform_stamped{};
220
227
try {
221
228
transform_stamped = tf_buffer_.lookupTransform (
222
- " base_link" , input_msg-> header .frame_id , input_msg-> header .stamp ,
229
+ " base_link" , input_msg. header .frame_id , input_msg. header .stamp ,
223
230
rclcpp::Duration::from_seconds (0.5 ));
224
231
} catch (tf2::TransformException & ex) {
225
232
RCLCPP_ERROR_STREAM (
226
233
get_logger (),
227
- " [AEB] Failed to look up transform from base_link to" << input_msg-> header .frame_id );
234
+ " [AEB] Failed to look up transform from base_link to" << input_msg. header .frame_id );
228
235
return ;
229
236
}
230
237
231
238
angular_velocity_ptr_ = std::make_shared<Vector3>();
232
- tf2::doTransform (input_msg-> angular_velocity , *angular_velocity_ptr_, transform_stamped);
239
+ tf2::doTransform (input_msg. angular_velocity , *angular_velocity_ptr_, transform_stamped);
233
240
}
234
241
235
- void AEB::onPredictedTrajectory (
236
- const autoware_auto_planning_msgs::msg::Trajectory::ConstSharedPtr input_msg)
242
+ void AEB::fetchPredictedTrajectory ()
237
243
{
238
- predicted_traj_ptr_ = input_msg;
244
+ if (sub_predicted_traj_.updateLatestData ()) {
245
+ predicted_traj_ptr_ = std::make_shared<Trajectory>(sub_predicted_traj_.getData ());
246
+ }
239
247
}
240
248
241
- void AEB::onAutowareState ( const AutowareState::ConstSharedPtr input_msg )
249
+ void AEB::fetchAutowareState ( )
242
250
{
243
- autoware_state_ = input_msg;
251
+ if (sub_autoware_state_.updateLatestData ()) {
252
+ autoware_state_ = std::make_shared<AutowareState>(sub_autoware_state_.getData ());
253
+ }
244
254
}
245
255
246
- void AEB::onPointCloud ( const PointCloud2::ConstSharedPtr input_msg )
256
+ void AEB::fetchPointCloud ( )
247
257
{
258
+ if (!sub_point_cloud_.updateLatestData ()) {
259
+ return ;
260
+ }
261
+
262
+ const auto & input_msg = sub_point_cloud_.getData ();
248
263
PointCloud::Ptr pointcloud_ptr (new PointCloud);
249
- pcl::fromROSMsg (* input_msg, *pointcloud_ptr);
264
+ pcl::fromROSMsg (input_msg, *pointcloud_ptr);
250
265
251
- if (input_msg-> header .frame_id != " base_link" ) {
266
+ if (input_msg. header .frame_id != " base_link" ) {
252
267
RCLCPP_ERROR_STREAM (
253
268
get_logger (),
254
- " [AEB]: Input point cloud frame is not base_link and it is " << input_msg-> header .frame_id );
269
+ " [AEB]: Input point cloud frame is not base_link and it is " << input_msg. header .frame_id );
255
270
// transform pointcloud
256
271
geometry_msgs::msg::TransformStamped transform_stamped{};
257
272
try {
258
273
transform_stamped = tf_buffer_.lookupTransform (
259
- " base_link" , input_msg-> header .frame_id , input_msg-> header .stamp ,
274
+ " base_link" , input_msg. header .frame_id , input_msg. header .stamp ,
260
275
rclcpp::Duration::from_seconds (0.5 ));
261
276
} catch (tf2::TransformException & ex) {
262
277
RCLCPP_ERROR_STREAM (
263
278
get_logger (),
264
- " [AEB] Failed to look up transform from base_link to" << input_msg-> header .frame_id );
279
+ " [AEB] Failed to look up transform from base_link to" << input_msg. header .frame_id );
265
280
return ;
266
281
}
267
282
268
283
// transform by using eigen matrix
269
284
PointCloud2 transformed_points{};
270
285
const Eigen::Matrix4f affine_matrix =
271
286
tf2::transformToEigen (transform_stamped.transform ).matrix ().cast <float >();
272
- pcl_ros::transformPointCloud (affine_matrix, * input_msg, transformed_points);
287
+ pcl_ros::transformPointCloud (affine_matrix, input_msg, transformed_points);
273
288
pcl::fromROSMsg (transformed_points, *pointcloud_ptr);
274
289
}
275
290
@@ -292,7 +307,7 @@ void AEB::onPointCloud(const PointCloud2::ConstSharedPtr input_msg)
292
307
obstacle_ros_pointcloud_ptr_ = std::make_shared<PointCloud2>();
293
308
294
309
pcl::toROSMsg (*no_height_filtered_pointcloud_ptr, *obstacle_ros_pointcloud_ptr_);
295
- obstacle_ros_pointcloud_ptr_->header = input_msg-> header ;
310
+ obstacle_ros_pointcloud_ptr_->header = input_msg. header ;
296
311
}
297
312
298
313
bool AEB::isDataReady ()
@@ -302,22 +317,27 @@ bool AEB::isDataReady()
302
317
return false ;
303
318
};
304
319
320
+ fetchVelocity ();
305
321
if (!current_velocity_ptr_) {
306
322
return missing (" ego velocity" );
307
323
}
308
324
325
+ fetchPointCloud ();
309
326
if (!obstacle_ros_pointcloud_ptr_) {
310
- return missing (" object pointcloud" );
327
+ return missing (" filtered object pointcloud" );
311
328
}
312
329
330
+ fetchImu ();
313
331
if (use_imu_path_ && !angular_velocity_ptr_) {
314
- return missing (" imu" );
332
+ return missing (" filtered imu" );
315
333
}
316
334
335
+ fetchPredictedTrajectory ();
317
336
if (use_predicted_trajectory_ && !predicted_traj_ptr_) {
318
337
return missing (" control predicted trajectory" );
319
338
}
320
339
340
+ fetchAutowareState ();
321
341
if (!autoware_state_) {
322
342
return missing (" autoware_state" );
323
343
}
0 commit comments