小鱼:移动机器人建图导航仿真做完了,如何移植到真实机器人上?

57 篇文章 45 订阅
27 篇文章 29 订阅

大家好,我是小鱼。最近来问小鱼问题的同学越来越多了,实在是回答不过来,大家尽量先在我们的鱼群里将问题完整的描述出来,和群友们互相交流问题。

今天说一个很多同学遇到的,也是一位鱼粉问了小鱼很久的问题,所以来说一说,已经完成建图和导航的仿真,接着如何在真实机器人上做建图和导航。

一、搞清楚数据流图

在开始动手在真实机器人上做导航之前,我们要搞清楚整个建图导航的数据流图,也就是建图和导航功能包的输入和输出

1.1 首先是建图

建图算法有很多种,这里小鱼拿比较常见的gmapping功能包来说。
整体数据流图如下图。

/cmd_vel底盘控制
输出
输出
输入
输入
输入
输出
输入
输出
输出
键盘控制节点
Gazebo
雷达扫描数据Scan
里程计odom
odom坐标系下机器人的位置tf
gampping
base_link->odom和base_link->scan
map栅格地图等数据
map坐标系和odomtf

我们观察一下图中gazebo的作用,输入cmd_vel用于控输gazebo中的小车,输出里程计odom、雷达数据scan和小车link之间的关系

1.2 导航功能包

导航我们一般使用amcl进行定位,move_base进行规划避障。
我们看一下整个导航导航的数据流图,如果我们将整体分为导航和gazebo两个部分。

输出
输出
输出 /cmd_vel
输入
输入
输入
输出
输入
Gazebo
雷达扫描数据Scan
里程计odom
导航定位算法
机器人link之间关系
地图

跟上面的建图时有所不同,我们不需要键盘控制机器人了,而且我们需要建好的地图(通过map_server)作为输入给到导航定位模块。

二、将gazebo替换成你的真实机器人

2.1 真实机器人的建图

假如我们是在真实机器人上进行的建图,就要把gazebo去掉,把gazebo的原本的输出让真实机器人来输出,对gazbeo的输出cmd_vel也变成对真实机器人的输入。
真实机器人建图数据流程图如下:

/cmd_vel底盘控制
输出
输出
输入
输入
输入
输出
输入
输出
输出
键盘控制节点
真实机器人上
雷达扫描数据Scan
里程计odom
odom坐标系下机器人的位置tf
gampping
urdf文件
base_link->odom和base_link->scan
map栅格地图等数据
map坐标系和odomtf

这个流程看起来就很清晰了,将gazebo换成真实的机器人就行,等下我们再说说一般真实机器人是如何接收cmd_vel控制信息的,又是如何发布odom和scan话题的。

2.2 真实机器人的导航

这个和刚刚的建图如法炮制,直接上图

输出
输出
输入
输入
输入
输入
输出
输出 /cmd_vel
真实机器人
雷达扫描数据Scan
里程计odom
导航定位算法
机器人link之间关系
地图文件
urdf

总结一下可以发现,只要把现在仿真的机器人gazebo干掉,将urdf的link关系改成真实机器人的link关系。然后将真实机器人的数据发布出来,再订阅一个话题cmd_vel话题给真实机器人即可。

三、如何连接真实机器人和建图导航定位程序

这一点做过嵌入式和上位机的同学很清楚(小鱼高中时玩过一段时间单片机,后面大学也搞了下rtos之类的),但是做软件的同学可能就不知道怎么做了,小鱼这里多说两句。

从上面的流程图可以看出来,我们需要真实机器人提供的是里程计信息和雷达信息。

3.1 里程计获取与控制指令的发布

里程计信息获取一般是如下结构。

PWM等
编码器
里程计
输出
控制指令cmd_vel
嵌入式板子stm32等
电机驱动板
电机
base_control节点
里程计odom

这个方法其实也有很多,比如走can、串口都是可以。如果你是买的底盘,厂家会提供好通信的接口和线,都是可以直接用的。

我们一般会在ROS端编写一个base_control节点,这个节点具备和嵌入式通信的能力。

3.2雷达信息

雷达信息直接使用厂家的雷达驱动即可拿到对应话题数据。

输出
雷达
雷达驱动节点
雷达扫描数据Scan

四、总结

今天小鱼算是把整个结构图都画了出来,导航部分没有展开来说,大家可以使用rqt_graph查看计算图。
如果还有不明白的地方,欢迎关注公众号《鱼香ROS》加入鱼群一起交流。

  • 8
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值