@@ -116,6 +116,7 @@ AEB::AEB(const rclcpp::NodeOptions & node_options)
116
116
updater_.add (" aeb_emergency_stop" , this , &AEB::onCheckCollision);
117
117
118
118
// parameter
119
+ publish_debug_pointcloud_ = declare_parameter<bool >(" publish_debug_pointcloud" );
119
120
use_predicted_trajectory_ = declare_parameter<bool >(" use_predicted_trajectory" );
120
121
use_imu_path_ = declare_parameter<bool >(" use_imu_path" );
121
122
voxel_grid_x_ = declare_parameter<double >(" voxel_grid_x" );
@@ -127,8 +128,10 @@ AEB::AEB(const rclcpp::NodeOptions & node_options)
127
128
t_response_ = declare_parameter<double >(" t_response" );
128
129
a_ego_min_ = declare_parameter<double >(" a_ego_min" );
129
130
a_obj_min_ = declare_parameter<double >(" a_obj_min" );
130
- prediction_time_horizon_ = declare_parameter<double >(" prediction_time_horizon" );
131
- prediction_time_interval_ = declare_parameter<double >(" prediction_time_interval" );
131
+ imu_prediction_time_horizon_ = declare_parameter<double >(" imu_prediction_time_horizon" );
132
+ imu_prediction_time_interval_ = declare_parameter<double >(" imu_prediction_time_interval" );
133
+ mpc_prediction_time_horizon_ = declare_parameter<double >(" mpc_prediction_time_horizon" );
134
+ mpc_prediction_time_interval_ = declare_parameter<double >(" mpc_prediction_time_interval" );
132
135
133
136
const auto collision_keeping_sec = declare_parameter<double >(" collision_keeping_sec" );
134
137
collision_data_keeper_.setTimeout (collision_keeping_sec);
@@ -220,7 +223,9 @@ void AEB::onPointCloud(const PointCloud2::ConstSharedPtr input_msg)
220
223
obstacle_ros_pointcloud_ptr_ = std::make_shared<PointCloud2>();
221
224
pcl::toROSMsg (*no_height_filtered_pointcloud_ptr, *obstacle_ros_pointcloud_ptr_);
222
225
obstacle_ros_pointcloud_ptr_->header = input_msg->header ;
223
- pub_obstacle_pointcloud_->publish (*obstacle_ros_pointcloud_ptr_);
226
+ if (publish_debug_pointcloud_) {
227
+ pub_obstacle_pointcloud_->publish (*obstacle_ros_pointcloud_ptr_);
228
+ }
224
229
}
225
230
226
231
bool AEB::isDataReady ()
@@ -389,8 +394,8 @@ void AEB::generateEgoPath(
389
394
}
390
395
391
396
constexpr double epsilon = 1e-6 ;
392
- const double & dt = prediction_time_interval_ ;
393
- const double & horizon = prediction_time_horizon_ ;
397
+ const double & dt = imu_prediction_time_interval_ ;
398
+ const double & horizon = imu_prediction_time_horizon_ ;
394
399
for (double t = 0.0 ; t < horizon + epsilon; t += dt) {
395
400
curr_x = curr_x + curr_v * std::cos (curr_yaw) * dt;
396
401
curr_y = curr_y + curr_v * std::sin (curr_yaw) * dt;
@@ -449,8 +454,11 @@ void AEB::generateEgoPath(
449
454
geometry_msgs::msg::Pose map_pose;
450
455
tf2::doTransform (predicted_traj.points .at (i).pose , map_pose, transform_stamped);
451
456
path.at (i) = map_pose;
452
- }
453
457
458
+ if (i * mpc_prediction_time_interval_ > mpc_prediction_time_horizon_) {
459
+ break ;
460
+ }
461
+ }
454
462
// create polygon
455
463
polygons.resize (path.size ());
456
464
for (size_t i = 0 ; i < path.size () - 1 ; ++i) {
0 commit comments