From 4b60d9cdfea0c1f41a9685dd5ce5488520f158d0 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Thu, 3 May 2018 21:37:44 +0200 Subject: [PATCH] Use immediately invoked lambda for tracking_to_local. (#848) Restores const-correctness that we dropped when introducing the `publish_frame_projected_to_2d` param without using a ternary operator. --- cartographer_ros/cartographer_ros/node.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/cartographer_ros/cartographer_ros/node.cc b/cartographer_ros/cartographer_ros/node.cc index 84ce7d3..7570451 100644 --- a/cartographer_ros/cartographer_ros/node.cc +++ b/cartographer_ros/cartographer_ros/node.cc @@ -217,11 +217,13 @@ void Node::PublishTrajectoryStates(const ::ros::WallTimerEvent& timer_event) { FromRos(ros::Time::now()), extrapolator.GetLastExtrapolatedTime()); stamped_transform.header.stamp = ToRos(now); - Rigid3d tracking_to_local = extrapolator.ExtrapolatePose(now); - if (trajectory_state.trajectory_options.publish_frame_projected_to_2d) { - tracking_to_local = carto::transform::Embed3D( - carto::transform::Project2D(tracking_to_local)); - } + const Rigid3d tracking_to_local = [&] { + if (trajectory_state.trajectory_options.publish_frame_projected_to_2d) { + return carto::transform::Embed3D( + carto::transform::Project2D(extrapolator.ExtrapolatePose(now))); + } + return extrapolator.ExtrapolatePose(now); + }(); const Rigid3d tracking_to_map = trajectory_state.local_to_map * tracking_to_local;