publish_tracked_pose 和 use_pose_extrapolator
新版本增加的参数publish_tracked_pose
,默认false
1 | struct NodeOptions { |
在Node
构造函数中的部分
1 | if (node_options_.publish_tracked_pose) { |
发布消息的部分在
Node::PublishLocalTrajectoryData
的最后。
这里用到了新版本的另一个新内容: 参数use_pose_extrapolator
Node里的位姿估计器,作用是融合里程计和IMU,推测出一个位姿。 如果use_pose_extrapolator
参数为true,发布出的这个位姿不准,因为是先验的位姿,没有经过雷达校准,除非IMU和里程计特别准。因此这个参数一般都是false
如果参数publish_tracked_pose
为false,use_pose_extrapolator
其实就无效了
Node::MaybeWarnAboutTopicMismatch
新版本中的Node::AddTrajectory
添加
1 | wall_timers_.push_back(node_handle_.createWallTimer( |
创建一个3s执行一次的定时器,由于
oneshot=true
,所以只执行一次。检查设置的topic名字在ROS中是否存在,不存在则报错
pose_graph_odometry_motion_filter
CreateGlobalTrajectoryBuilder2D
的参数增加 pose_graph_odometry_motion_filter
里程计的滤波器,但没有初始化
1 | absl::optional<MotionFilter> pose_graph_odometry_motion_filter; |
GetTrajectoryStates
改名为 GetLocalTrajectoryData
原因在于后端里也有GetTrajectoryStates
,容易混淆
Node
构造函数 —— Node::PublishLocalTrajectoryData
—— map_builder_bridge_.GetLocalTrajectoryData()
最后用到的local_slam_data_
在MapBuilderBridge::OnLocalSlamResult
中赋值