基于ROS的自主导航小车Plantbot—SLAM
- 作者 · 卓求
- 1429次浏览
- 2018-01-15
- 来源 · 知乎
- 分享
- 字体-+
步教你如何制作基于ROS的自主导航小车Plantbot,请再看SLAM部分。
ROS 官方提供了hector_mapping和gmapping两种方法来实现SLAM,其中gmapping采用的是比较古老的经典算法,而hector_gmapping采用较新的算法。两者在应用上的主要区别在于前者可以不借助里程计实现SLAM,而gmapping必须提供里程计信息。
hector_mapping订阅主题是scan(提供激光雷达消息)和syscommand(提供重启等系统命令,可缺省),坐标变换关系为:
可以看到,运行该结点需要提供激光雷达坐标系(laser)到机器人基础坐标系(base_link) 的转换,这是因为激光雷达感知周围物体的距离信息是以自身为坐标中心的,而机器人的移动、定位是以机器人基础坐标系为参考坐标系的,因此有必要添加机器人基础坐标系到激光雷达坐标系的转换。如图是我选用激光雷达的坐标系规定:
如果使用官方驱动,就必须按照规定的坐标系布置激光雷达、配置坐标系。激光雷达坐标系到基础坐标系之间的转换由运动平台确定,通常是静态的。在Plantbot中,激光雷达架设在在第三层中心, 而基础坐标系中心为第一层中心 ,两坐标系的转换只需沿z轴平移两板的间距。静态坐标系转换可以使用static_transform_publisher命令来定周期发布,也可以采用更通用的方法,即利用建立的URDF(Unified Robot Description)模型,调用joint_state_publisher和robot_state_publisher来完成,后一种方法在机械臂中尤为常见。
激光雷达采用了自带的驱动包,运行结点rplidarNode,发布/scan主题。需要注意的是默认情况下串口没有写的权限,因此运行结点之前先要修改串口权限,也可以写相应的规则文件。
一切配置好后运行hector_mapping,可以看到RVIZ中绘制的周围地图,此时ROS的工作状态如下所示:
继续运行底层框架中的相关结点或对应的启动文件,然后通过键盘或app控制机器人移动,直到绘完整个环境地图。下图是绘制的室内环境地图:
补充资料:RPLidar For ROS based SLAM
本文首发于知乎,作者:卓求,原文链接:https://zhuanlan.zhihu.com/p/27187196,本网站经授权发布,如若转载请联系原作者。
相关标签:
- ROS
- 操作系统
- SLAM
参与评论