cartographer实现纯定位

举报
kobesdu 发表于 2022/01/29 15:27:41 2022/01/29
【摘要】 实现纯定位 (1)因为正常的cartographer的建图的map是由cartographer发布的;如下 rostopic info /mapType: nav_msgs/OccupancyGridPublishers: * /cartographer_occupancy_grid_node因此需要把map的发布替换成 <node name="map_server" pkg="map_se...

实现纯定位

 

(1)因为正常的cartographer的建图的map是由cartographer发布的;如下

 

rostopic info /map

Type: nav_msgs/OccupancyGrid

Publishers:

 * /cartographer_occupancy_grid_node

因此需要把map的发布替换成

 

<node name="map_server" pkg="map_server" type="map_server"

args="/home/lx/carto_ws/map/2d-1.yaml" />

 

把原来的去掉

<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"

      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />

这是在运行cartographer建图的launch文件中修改

 

(2)开启纯定位

在lua文件的配置参数中修改

 

 

TRAJECTORY_BUILDER.pure_localization_trimmer = {

max_submaps_to_keep = 3, //最大保存子图数,存定位模式通过子图进行定位,但只需要当前和上一个子图即可,我这里设置的是2

}

POSE_GRAPH.optimize_every_n_nodes = 20 //每20个有效帧一个子图,子图构建完成要闭环检测一次,这个数越小,

 

纯定位的原理

image.png

纯定位的TF树

image.png

图里map到footpint的tf就是机器人实际的位姿

 

关于纯定位的优化

 

纯定位至少有两个轨迹

纯本地化不同于映射。首先,我们期望本地和全局 SLAM 的延迟更低。其次,全局 SLAM 通常会在作为地图的冻结轨迹和当前轨迹之间找到非常大量的相互约束。

 

如果您在 中运行pure_localization,submaps.resolution 则应与.pbstream您正在运行的子图的分辨率相匹配。使用不同的分辨率目前未经测试,可能无法按预期工作。

 

POSE_GRAPH.optimize_every_n_nodes需要减小,则提高了优化的频率

减小global_sampling_ratio减小了全局的采样频率,减小constraint_builder.sampling_ratio减小了普通约束的采样频率。因此降低了计算量

 

运行纯定位,submaps.resolution(子图分辨率) 则应与.pbstream的子图的分辨率相匹配。

 

相关资料

Cartographer的纯定位模式在低性能处理器上的应用适配

blog.csdn.net/zhzwang/art…


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。