@@ -39,7 +39,7 @@ namespace autoware::diffusion_planner
3939DiffusionPlannerCore::DiffusionPlannerCore (
4040 const DiffusionPlannerParams & params, const VehicleInfo & vehicle_info)
4141: params_(params),
42- vehicle_info_ (vehicle_info),
42+ vehicle_spec_ (vehicle_info),
4343 turn_indicator_manager_(
4444 rclcpp::Duration::from_seconds (params.turn_indicator_hold_duration),
4545 params.turn_indicator_keep_offset)
@@ -98,7 +98,7 @@ std::optional<FrameContext> DiffusionPlannerCore::create_frame_context(
9898 Odometry kinematic_state = *ego_kinematic_state;
9999 if (params_.shift_x ) {
100100 kinematic_state.pose .pose =
101- utils::shift_x (kinematic_state.pose .pose , vehicle_info_. wheel_base_m / 2.0 );
101+ utils::shift_x (kinematic_state.pose .pose , vehicle_spec_. base_link_to_center );
102102 }
103103
104104 // Get transforms
@@ -155,7 +155,7 @@ InputDataMap DiffusionPlannerCore::create_input_data(const FrameContext & frame_
155155 const geometry_msgs::msg::Pose & pose_center =
156156 params_.shift_x
157157 ? utils::shift_x (
158- frame_context.ego_kinematic_state .pose .pose , vehicle_info_. wheel_base_m / 2.0 )
158+ frame_context.ego_kinematic_state .pose .pose , vehicle_spec_. base_link_to_center )
159159 : frame_context.ego_kinematic_state .pose .pose ;
160160 const Eigen::Matrix4d ego_to_map_transform = utils::pose_to_matrix4d (pose_center);
161161 const Eigen::Matrix4d map_to_ego_transform = utils::inverse (ego_to_map_transform);
@@ -174,7 +174,7 @@ InputDataMap DiffusionPlannerCore::create_input_data(const FrameContext & frame_
174174 {
175175 const auto ego_current_state = preprocess::create_ego_current_state (
176176 frame_context.ego_kinematic_state , frame_context.ego_acceleration ,
177- static_cast <float >(vehicle_info_. wheel_base_m ));
177+ static_cast <float >(vehicle_spec_. wheel_base ));
178178 input_data_map[" ego_current_state" ] =
179179 utils::replicate_for_batch (ego_current_state, params_.batch_size );
180180 }
@@ -257,12 +257,10 @@ InputDataMap DiffusionPlannerCore::create_input_data(const FrameContext & frame_
257257
258258 // ego shape
259259 {
260- const float wheel_base = static_cast <float >(vehicle_info_.wheel_base_m );
261- const float vehicle_length = static_cast <float >(
262- vehicle_info_.front_overhang_m + vehicle_info_.wheel_base_m + vehicle_info_.rear_overhang_m );
263- const float vehicle_width = static_cast <float >(
264- vehicle_info_.left_overhang_m + vehicle_info_.wheel_tread_m + vehicle_info_.right_overhang_m );
265- std::vector<float > single_ego_shape = {wheel_base, vehicle_length, vehicle_width};
260+ const std::vector<float > single_ego_shape = {
261+ static_cast <float >(vehicle_spec_.wheel_base ),
262+ static_cast <float >(vehicle_spec_.vehicle_length ),
263+ static_cast <float >(vehicle_spec_.vehicle_width )};
266264 input_data_map[" ego_shape" ] = utils::replicate_for_batch (single_ego_shape, params_.batch_size );
267265 }
268266
@@ -313,8 +311,7 @@ PlannerOutput DiffusionPlannerCore::create_planner_output(
313311
314312 if (params_.shift_x ) {
315313 for (auto & point : trajectory.points ) {
316- // TODO(sakoda): front and rear overhang should be considered for more accurate shifting.
317- point.pose = utils::shift_x (point.pose , -vehicle_info_.wheel_base_m / 2.0 );
314+ point.pose = utils::shift_x (point.pose , -vehicle_spec_.base_link_to_center );
318315 }
319316 }
320317
@@ -369,7 +366,7 @@ DiffusionPlannerCore::get_first_traffic_light_on_route(const FrameContext & fram
369366 const geometry_msgs::msg::Pose & pose_center =
370367 params_.shift_x
371368 ? utils::shift_x (
372- frame_context.ego_kinematic_state .pose .pose , vehicle_info_. wheel_base_m / 2.0 )
369+ frame_context.ego_kinematic_state .pose .pose , vehicle_spec_. base_link_to_center )
373370 : frame_context.ego_kinematic_state .pose .pose ;
374371
375372 const double center_x = pose_center.position .x ;
0 commit comments