cartographer ros使用指南-常见问题
cartographer ros使用指南-常见问题
说明:
- 介绍一些常见问题以及解决方法
1问题:
- 为什么3D bags里的激光数据比VLP-16最高的20HZ的转速还要高?
1回答:
- 示例包中的VLP-16配置的旋转频率为20Hz。然而,VLP-16发送UDP数据包的频率要比这高得多,并且独立于旋转频率。示例包中的每个个UDP包包含一个sensor_msgs/PointCloud2,而不是每次旋转发布一个。
在相应的Cartographer 配置文件中,您可以看到TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 160,这意味着我们在每个UDP包中累积160个点云成为一个更大的点云,结合恒速和IMU测量,共同组成运动估计来进行匹配。因为有两个VLP-16s,对于每个VLP-16s大约2转的情况,160个UDP包是足够用的。
2问题:
- 为什么IMU数据对于3D SLAM是必须的,对于2D SLAM却不是?
2回答:
- 在2D中,Cartographer 支持运行相关的扫描匹配器,用于局部SLAM中寻找循环关闭的约束条件。它的计算代价很大,但通常会使odometry或IMU数据的加入变得不必要。2D也有假设平坦世界的好处,也就是说,上升是隐式定义的。
在三维中,IMU主要用于测量重力。重力在测量中是一个很有用的量,因为它不漂移,而且是一个非常强的信号,而且通常包含了大部分所要测量的加速度。需要重力是有两个原因的:
1。在三维世界里,没有任何关于这个世界的假设。为了正确地排列轨迹和地图的结果,重力被用来定义z方向。
2。一旦确定了重力方向,就可以很好地从IMU读数中推导出滚动(Roll )和俯仰(pitch )。通过减少这些维度中的搜索窗口,可以节省扫描匹配器的工作。
3问题:
- 若没有RVIZ的话,如何使用cartographer_ros?
3回答:
- 最简单的解决方案是在cartographer_rviz包目录中创建一个为CATKIN_IGNORE的空文件。
4问题:
- 如何解决“You called InitGoogleLogging() twice!”错误?
4回答:
- 使用glog的后端构建 rosconsole可能会导致这个错误。使用log4cxx或print后端,可以通过 选择CMake参数ROSCONSOLE_BACKEND ,避免这个问题。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号