基于ROS的自主导航小车Plantbot—SLAM

步教你如何制作基于ROS的自主导航小车Plantbot,请再看SLAM部分。


 
ABB参赛作品:基于ROS的工厂作业机器人Plantbot_腾讯视频

ROS 官方提供了hector_mappinggmapping两种方法来实现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

相关标签:
  • ROS
  • 操作系统
  • SLAM

参与评论

提示

需求登记

×
需求类型
我的需求
内容需在50-300字之间
姓名 名称需在2-6字之间
手机号码
发送验证码 手机号码格式不正确
手机验证码
免费提交需求