hector slam matlab,ROS小白学习历程(slam)--使用hector_slam建图

笔者在实践过程中在Slam建图这一块卡了许久,网上教程基本都是复制代码,对初学者很不友好,有的也不正确,笔者肝出来后想提供一篇详细的博客,帮助后来人。

此博客注重原理,使用衫川雷达delta 3i,其他雷达一样的操作原理。

首先了解hector_slam功能包,ros_wiki一波。

dacb2633f873af9cf0b4f213c542feee.png

22bbc9619a0a3eb6df46f92b23c7f399.png

首先了解话题的发布订阅,需要订阅/scan话题,即激光雷达发出的数据。

中间参数可自行了解。

3.1.5提出需要laser 到 base_link的tf变换。

3.1.6提出需要提供map到odom的tf变换。

综上,我们得知,我们需要提供三样东西。

1、配置hector

首先,下载hector_slam功能包,

sudo apt-get install ros-kinetic-hector-slam

在你的激光雷达功能包(这个一般厂家会提供,其他常见雷达可在网上搜索教程)中添加hector.launch,配置hector的具体参数。

我们可以看到以上launch文件已经包含:

这一条代码完成了map到odom的tf变换,ok,完成一项。

下面设置map_frame、base_frame、odom_frame。

map_frame默认=“map”。

因为hector不需要里程计信息,所以将base_frame、odom_frame都设为base_link。

那么问题来了,我在launch文件里面设置了参数 baseframe=base_link,请问base_link到底是什么?说到底,还是需要我们自己提供urdf文件。

2、提供urdf文件

如果仅是学习slam用,可随便选一个urdf模型。博主采用的是古月的mbot_description里的mbot_with_laser。

将urdf文件粘贴到你的激光雷达功能包下,并修改:

Cmake.list中

find_package(catkin REQUIRED COMPONENTS

roscpp

rosconsole

sensor_msgs

urdf

xacro

)

package.xml中:

urdf

xacro

urdf

xacro

注意版本不同。

编写(复制)launch文件:

view_mbot.launch:

运行launch文件,那么现在urdf的参数就到参数服务器了,也就是有了base_link。

下面进行laser到base_link的坐标变换。

3、laser_link到base_link的tf变换

这个可在launch文件中用一行就完成:

args="0 0 0.105 0 0 0 /base_link /laser_link 100" />

args="0 0 0.105 0 0 0“是laser_link到base_link的变换关系,后面两个参数分别是源坐标系、目标坐标系。

注意:这里的参数应与你的urdf文件里的名称对应!

比如,你的urdf文件里的laser的名称叫”laser“,在launch文件中你写的是”lase_link“,这是不行的。

有的激光雷达的launch文件里面可以设置默认的frame_id:

12bf342167a015fadd8e290be1966de7.png

这里面也要修改成对应的参数。

现在完成了laser_link到base_link的tf变换。

4、scan话题

还差/scan话题,当激光雷达节点运行起来后,默认会发布scan话题,如果有不一样,可以先运行起来,再用rostopic list查看具体名称,再到launch文件中修改参数:

到此,hector所需所有要求都已满足,跑起来吧!

5、运行

1、打开urdf的rviz

roslaunch delta_lidar view_mbot.launch

2、启动激光雷达

roslaunch delta_lidar delta_lidar.launch

3、启动hector节点

roslaunch delta_lidar hector.launch

54dc75de0125abbf7d5953283cf3191b.png

5a14147023cf7aea0db655f269bcc5fd.png

22941178b9e90fbc92b915cf68058373.png

b63bf73e0893b279c9c3cb6829a8b433.png

最后建图效果:

756072ff9c209ea34e27fd7883e50d4b.png

希望可以帮到大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值