Use oldest and newest instead of last two odometry data. (#530)
parent
5896ead32e
commit
259e22a5fc
|
@ -95,14 +95,14 @@ void PoseExtrapolator::AddOdometryData(
|
||||||
}
|
}
|
||||||
// TODO(whess): Improve by using more than just the last two odometry poses.
|
// TODO(whess): Improve by using more than just the last two odometry poses.
|
||||||
// Compute extrapolation in the tracking frame.
|
// Compute extrapolation in the tracking frame.
|
||||||
const sensor::OdometryData& odometry_data_older =
|
const sensor::OdometryData& odometry_data_oldest =
|
||||||
odometry_data_[odometry_data_.size() - 2];
|
odometry_data_.front();
|
||||||
const sensor::OdometryData& odometry_data_newer =
|
const sensor::OdometryData& odometry_data_newest =
|
||||||
odometry_data_[odometry_data_.size() - 1];
|
odometry_data_.back();
|
||||||
const double odometry_time_delta =
|
const double odometry_time_delta =
|
||||||
common::ToSeconds(odometry_data_older.time - odometry_data_newer.time);
|
common::ToSeconds(odometry_data_oldest.time - odometry_data_newest.time);
|
||||||
const transform::Rigid3d odometry_pose_delta =
|
const transform::Rigid3d odometry_pose_delta =
|
||||||
odometry_data_newer.pose.inverse() * odometry_data_older.pose;
|
odometry_data_newest.pose.inverse() * odometry_data_oldest.pose;
|
||||||
angular_velocity_from_odometry_ =
|
angular_velocity_from_odometry_ =
|
||||||
transform::RotationQuaternionToAngleAxisVector(
|
transform::RotationQuaternionToAngleAxisVector(
|
||||||
odometry_pose_delta.rotation()) /
|
odometry_pose_delta.rotation()) /
|
||||||
|
@ -111,14 +111,14 @@ void PoseExtrapolator::AddOdometryData(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const Eigen::Vector3d
|
const Eigen::Vector3d
|
||||||
linear_velocity_in_tracking_frame_at_newer_odometry_time =
|
linear_velocity_in_tracking_frame_at_newest_odometry_time =
|
||||||
odometry_pose_delta.translation() / odometry_time_delta;
|
odometry_pose_delta.translation() / odometry_time_delta;
|
||||||
const Eigen::Quaterniond orientation_at_newer_odometry_time =
|
const Eigen::Quaterniond orientation_at_newest_odometry_time =
|
||||||
timed_pose_queue_.back().pose.rotation() *
|
timed_pose_queue_.back().pose.rotation() *
|
||||||
ExtrapolateRotation(odometry_data_newer.time);
|
ExtrapolateRotation(odometry_data_newest.time);
|
||||||
linear_velocity_from_odometry_ =
|
linear_velocity_from_odometry_ =
|
||||||
orientation_at_newer_odometry_time *
|
orientation_at_newest_odometry_time *
|
||||||
linear_velocity_in_tracking_frame_at_newer_odometry_time;
|
linear_velocity_in_tracking_frame_at_newest_odometry_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
transform::Rigid3d PoseExtrapolator::ExtrapolatePose(const common::Time time) {
|
transform::Rigid3d PoseExtrapolator::ExtrapolatePose(const common::Time time) {
|
||||||
|
|
Loading…
Reference in New Issue