Skip to content

Commit b5203a2

Browse files
feat(simple_planning_simulator): add option to use initialpose for z position (autowarefoundation#4256)
* feat(simple_planning_simulator): add option to use initialpose for z position Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> * Revert "feat(simple_planning_simulator): add option to use initialpose for z position" This reverts commit a3e2779. * update initial z logic Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --------- Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com>
1 parent d04bb57 commit b5203a2

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

simulator/simple_planning_simulator/include/simple_planning_simulator/simple_planning_simulator_core.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,10 @@ class PLANNING_SIMULATOR_PUBLIC SimplePlanningSimulator : public rclcpp::Node
280280
* @brief get z-position from trajectory
281281
* @param [in] x current x-position
282282
* @param [in] y current y-position
283+
* @param [in] prev_odometry odometry calculated in the previous step
283284
* @return get z-position from trajectory
284285
*/
285-
double get_z_pose_from_trajectory(const double x, const double y);
286+
double get_z_pose_from_trajectory(const double x, const double y, const Odometry & prev_odometry);
286287

287288
/**
288289
* @brief get transform from two frame_ids

simulator/simple_planning_simulator/src/simple_planning_simulator/simple_planning_simulator_core.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -371,9 +371,10 @@ void SimplePlanningSimulator::on_timer()
371371
}
372372

373373
// set current state
374+
const auto prev_odometry = current_odometry_;
374375
current_odometry_ = to_odometry(vehicle_model_ptr_, ego_pitch_angle);
375376
current_odometry_.pose.pose.position.z = get_z_pose_from_trajectory(
376-
current_odometry_.pose.pose.position.x, current_odometry_.pose.pose.position.y);
377+
current_odometry_.pose.pose.position.x, current_odometry_.pose.pose.position.y, prev_odometry);
377378

378379
current_velocity_ = to_velocity_report(vehicle_model_ptr_);
379380
current_steer_ = to_steering_report(vehicle_model_ptr_);
@@ -429,6 +430,7 @@ void SimplePlanningSimulator::on_initialpose(const PoseWithCovarianceStamped::Co
429430
set_initial_state_with_transform(initial_pose, initial_twist);
430431

431432
initial_pose_ = msg;
433+
current_odometry_.pose = msg->pose;
432434
}
433435

434436
void SimplePlanningSimulator::on_initialtwist(const TwistStamped::ConstSharedPtr msg)
@@ -591,11 +593,12 @@ void SimplePlanningSimulator::set_initial_state(const Pose & pose, const Twist &
591593
is_initialized_ = true;
592594
}
593595

594-
double SimplePlanningSimulator::get_z_pose_from_trajectory(const double x, const double y)
596+
double SimplePlanningSimulator::get_z_pose_from_trajectory(
597+
const double x, const double y, const Odometry & prev_odometry)
595598
{
596599
// calculate closest point on trajectory
597600
if (!current_trajectory_ptr_) {
598-
return 0.0;
601+
return prev_odometry.pose.pose.position.z;
599602
}
600603

601604
const double max_sqrt_dist = std::numeric_limits<double>::max();
@@ -616,7 +619,7 @@ double SimplePlanningSimulator::get_z_pose_from_trajectory(const double x, const
616619
return current_trajectory_ptr_->points.at(index).pose.position.z;
617620
}
618621

619-
return 0.0;
622+
return prev_odometry.pose.pose.position.z;
620623
}
621624

622625
TransformStamped SimplePlanningSimulator::get_transform_msg(

0 commit comments

Comments
 (0)