采用16线激光雷达调用cartographer室内定位

采用16线激光雷达调用cartographer室内定位

之前进行了16线激光雷达调用cartographer包进行室内建图,这方面很多朋友都知道,cartographer是google的一个开源SLAM算法,那么它能够用来定位吗?

我在网上查到的解释是可以,首先,什么是SLAM?

SLAM全称是simultaneous localization and mapping,中文名称是即时定位与地图构建。那么可以看到,地图构建就是我们之前说的建图,那么即时定位不就是定位吗。

事实就是如此,cartographer也提供了定位功能,先介绍一下cartographer的纯定位模式。

cartographer的纯定位模式与建图类似,它也需要通过建立子图,然后将子图与事先建立好的先验地图匹配上进行定位。这里会有一个问题,就是它需要建立子图,这个子图会覆盖先验地图,可能会对定位有影响,所以我们需要将cartographer里面发布子图的节点给注释了,那么另外一个问题就来了,发布子图的节点注释了,那么我们没有子图怎么定位呢。

这里就涉及到另外一个知识点了,我们采用map_server包发布子图,这样就可以防止先验地图被覆盖,具体的步骤如果小伙伴们不懂的话可以评论留言或者私信我。

接下来介绍一下怎么配置cartographer的定位。

首先就是cartographer有一个demo_backpack_2d_localization.launch这个launch文件,我们要做的就是去修改它(记得修改前备份一个)。

在这里插入图片描述

这里要修改的几点都写好了,其中第二点是加载我们自己的机器人模型,第3点的lua文件也是根据自己的机器人模型写的,后面的pbstream地图文件也要加载,这个地图文件是先通过cartographer建图保存得到的,后面的remap这里我也写了,我写的是然后第5点那个-pure localization 1,这里是采用纯定位模式。
而且后面的修改文件是修改cartographer_ros里面的文件occupancy_node_main.cc,这里参考

https://github.com/lllray/file/blob/master/occupancy_grid_node_main.cc

或者直接复制这个,大致就是这样,然后其中的几个文件都是需要根据自己的机器人来写的,比如my_backpack_2d.urdf、my_backpack_2d_localization.lua,map.pbstream也是自己保存好的地图。

最后写好了launch文件后(姑且称之为localization.launch),要启动的文件就有雷达驱动文件(启动雷达的,比如rs_lidar_16.launch)、机器人驱动文件(用来启动launch文件里加载urdf文件的)、以及我们写的launch文件。

这里不建议将启动urdf的文件写在我们这个localization.launch里。

最后启动的rviz里面应该有建好的地图以及激光雷达实时扫描到的点云数据,起初的时候这些点云数据与地图是不匹配的,需要动一下机器人,一会儿后如果点云数据与地图匹配了,说明定位成功。

在这里插入图片描述

点云数据与地图不匹配

在这里插入图片描述

点云数据与地图匹配

在这里插入图片描述

室外纯激光定位

这里要注意两个问题:
1 cartographer如果纯激光定位最好场景稍微复杂些,不能像马路那样重复度比较高的场景,因为这样的话建图会建不好(纯激光建图),实际机器人运动时rviz里面的模型是不动的,这个也称为长廊效应;
2 另外一点是在定位的时候机器人速度不能过快。

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
激光雷达实现基于cartographer室内小车导航需要以下步骤: 1. 硬件准备:首先需要一个激光雷达传感器,用于获取环境中的障碍物信息。常见的激光雷达有Hokuyo、SICK等。此外,还需要一台小车平台,可以选择具备驱动和定位功能的小车底盘。 2. 配置cartographerCartographer是一个开源的SLAM(Simultaneous Localization and Mapping)算法,可以用于实现室内环境的建图和定位。你可以从GitHub上获取Cartographer的源代码,并按照其文档进行配置和编译。 3. 雷达数据采集:通过激光雷达传感器获取环境中的障碍物信息。将激光雷达安装在小车上,并使用适当的固定装置使其保持稳定。通过激光雷达发送激光束并测量其返回时间,从而得到距离和角度信息。 4. 地图构建:使用Cartographer算法对激光雷达数据进行处理,生成室内环境的地图。Cartographer会根据激光束的反射点信息进行建图,并同时进行定位,得到小车在地图中的位置。 5. 导航规划:基于生成的地图,使用导航算法规划小车的路径。常见的导航算法有A*算法、Dijkstra算法等。根据小车当前位置和目标位置,算法会生成一条最优路径,并将路径上的点作为目标点进行导航。 6. 小车控制:根据导航算法生成的目标点,通过驱动系统控制小车的运动。可以使用电机驱动器、舵机等设备来实现小车的移动和转向。 总结起来,激光雷达实现基于cartographer室内小车导航需要配置Cartographer算法,采集激光雷达数据进行建图和定位,使用导航算法进行路径规划,并通过控制系统控制小车运动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值