@@ -125,6 +125,7 @@ AEB::AEB(const rclcpp::NodeOptions & node_options)
125
125
updater_.add (" aeb_emergency_stop" , this , &AEB::onCheckCollision);
126
126
127
127
// parameter
128
+ publish_debug_pointcloud_ = declare_parameter<bool >(" publish_debug_pointcloud" );
128
129
use_predicted_trajectory_ = declare_parameter<bool >(" use_predicted_trajectory" );
129
130
use_imu_path_ = declare_parameter<bool >(" use_imu_path" );
130
131
voxel_grid_x_ = declare_parameter<double >(" voxel_grid_x" );
@@ -136,8 +137,10 @@ AEB::AEB(const rclcpp::NodeOptions & node_options)
136
137
t_response_ = declare_parameter<double >(" t_response" );
137
138
a_ego_min_ = declare_parameter<double >(" a_ego_min" );
138
139
a_obj_min_ = declare_parameter<double >(" a_obj_min" );
139
- prediction_time_horizon_ = declare_parameter<double >(" prediction_time_horizon" );
140
- prediction_time_interval_ = declare_parameter<double >(" prediction_time_interval" );
140
+ imu_prediction_time_horizon_ = declare_parameter<double >(" imu_prediction_time_horizon" );
141
+ imu_prediction_time_interval_ = declare_parameter<double >(" imu_prediction_time_interval" );
142
+ mpc_prediction_time_horizon_ = declare_parameter<double >(" mpc_prediction_time_horizon" );
143
+ mpc_prediction_time_interval_ = declare_parameter<double >(" mpc_prediction_time_interval" );
141
144
142
145
const auto collision_keeping_sec = declare_parameter<double >(" collision_keeping_sec" );
143
146
collision_data_keeper_.setTimeout (collision_keeping_sec);
@@ -227,7 +230,9 @@ void AEB::onPointCloud(const PointCloud2::ConstSharedPtr input_msg)
227
230
obstacle_ros_pointcloud_ptr_ = std::make_shared<PointCloud2>();
228
231
pcl::toROSMsg (*no_height_filtered_pointcloud_ptr, *obstacle_ros_pointcloud_ptr_);
229
232
obstacle_ros_pointcloud_ptr_->header = input_msg->header ;
230
- pub_obstacle_pointcloud_->publish (*obstacle_ros_pointcloud_ptr_);
233
+ if (publish_debug_pointcloud_) {
234
+ pub_obstacle_pointcloud_->publish (*obstacle_ros_pointcloud_ptr_);
235
+ }
231
236
}
232
237
233
238
bool AEB::isDataReady ()
@@ -392,8 +397,8 @@ void AEB::generateEgoPath(
392
397
}
393
398
394
399
constexpr double epsilon = 1e-6 ;
395
- const double & dt = prediction_time_interval_ ;
396
- const double & horizon = prediction_time_horizon_ ;
400
+ const double & dt = imu_prediction_time_interval_ ;
401
+ const double & horizon = imu_prediction_time_horizon_ ;
397
402
for (double t = 0.0 ; t < horizon + epsilon; t += dt) {
398
403
curr_x = curr_x + curr_v * std::cos (curr_yaw) * dt;
399
404
curr_y = curr_y + curr_v * std::sin (curr_yaw) * dt;
@@ -452,8 +457,11 @@ void AEB::generateEgoPath(
452
457
geometry_msgs::msg::Pose map_pose;
453
458
tf2::doTransform (predicted_traj.points .at (i).pose , map_pose, transform_stamped);
454
459
path.at (i) = map_pose;
455
- }
456
460
461
+ if (i * mpc_prediction_time_interval_ > mpc_prediction_time_horizon_) {
462
+ break ;
463
+ }
464
+ }
457
465
// create polygon
458
466
polygons.resize (path.size ());
459
467
for (size_t i = 0 ; i < path.size () - 1 ; ++i) {
0 commit comments