发 帖  

[经验] 走到哪都不会迷路,全自动机器人是怎么导航的?

2018-5-11 11:51:27  1306 机器人
收藏 0 收藏 推荐 0 推荐
分享

现在很多餐厅,都用上了送餐机器人,机器人能端着盘子蹭蹭蹭地自动上菜。


image001.jpg

送餐机器人


这个有点厉害呀,无人餐厅的第一步就靠它们了吧!

不过仔细看,这不是巡线小车吗?只要事先铺设好路线,它就会跟着指引线走。

但很多情况下,地上都没有指引线(比如室外),那要如何找路呢?目前有两种方式。

第一种:找参照物,规划好机器人的运动线路。比如下图,机器人从1向西运动x →距离西墙还有y时,右转90度→向北运动z ,到2。


image002.png

  参照物导航


这里假设运动距离和转向角度测量都是精准的,但其实是不可能的。

那么,问题又来了,如果机器人遇到障碍物,或者被人为挪动了,起点就会错乱。我们把“遇障碍”叫动态路径规划,“被挪动”叫机器人绑架问题。

我们就要用另一种方法——感知式系统。它会先得到地图(事先得到或者自己建立),然后对地图解析推理,得到最佳的路。就像手机导航,从地图中找路。

它能做更复杂的操作,比如自主定位、自主导航。像智能扫地机器人、无人车等就是用了感应式系统。


image003.jpg

感应式系统导航


今天就来教大家用感知式系统导航。

宾夕法尼亚大学的Vijay Kumar教授在Coursera公开课上讲过,任何系统的导航,都由四部分组成:


image004.jpg

状态估计(State Estimation):实现机器人的定位和感知;

建图(Mapping):建立所在环境的地图(如果事先没有给地图的话);

规划(Planning):制定能走的路;

控制(Control):控制机器人按照导航走。

定位(状态估计)和建图

这两部分经常被一起提起,他们就是大名鼎鼎的SLAM(Simultaneous Localization And Mapping,同步建图与定位)。

我们用一个最简单的一维定位问题,来看机器人如何定位。


image005.jpg

红色曲线是传感器得出的位置分布概率

黑色曲线是传感器和已知的地图信息,一起得出的位置分布概率


在这个问题里,三个门的相对位置是已知的。机器人一开始不知道自己在哪,所以黑线(表示概率)没有起伏。(a图)


image006.png


前进时,机器人发现了一扇门,它立马确定自己在一扇门旁边,但不知道哪一扇。所以机器人在三扇门位置的概率都升高了。(b图)


image007.png


考虑到误差等因素,其在其他位置的概率并没有等于0。

我们继续走,发现了另一扇门。根据两扇门的相对位置(地图提供),机器人确定自己在第二扇门的旁边。(d图)


image008.png


现在,机器人基本确定了自己的位置,完成了定位。无人车在3D地图中,也是靠这种方法定位。


image009.jpg

无人车激光雷达生成定位地图

那万一机器人走进沟里、爬树上了怎么办?我们也有对策。平面中,常用二维栅格地图,地图会被切成一个个小格。


image010.jpg


我们可以用“0”和“1”来表示这个格子是否可以通过,最终得到了相应的地图。

格子越小,地图就越精确,不过占用的存储空间也就越大。

接下来就要建图(建立地图),过程涉及到概率的知识,这里不展开讲。


image011.jpg

白色为可通行范围

黑色为障碍物边缘


有兴趣的同学可以参考Sebastian Thrun(谷歌无人车之父)的《ProbabilisticRobotics》第九章,有很详细的讲解(本书的中文版《概率机器人》已在17年5月出版)。

最后放一个移植的Gmapping开源方案的SLAM,大家随意感受一下什么是SLAM。


image012.gif

右下为机器人在建立的地图中走


规划

现在有了定位和地图,可以开始导航了。就像手机导航一样,我们需要知道起点和终点,然后找到一条路。关键就在“路”的选择上,需要考虑很多因素。

举个栗子,我在西安上学,打算自驾去拉萨看布达拉宫。小学学过,两点之间直线最短,我就沿着直线跑。


image013.jpg


跑着跑着发现不对头,这路都是土路、山路、峡谷,耗油量反而更高了!于是规划出另一条路,尽量绕开山坡,同时保证路径最短。


image014.jpg


机器人的运动同理,需要考虑全局规划(路径短)和局部规划(绕障碍),最后得到最佳的路径。


image015.gif

无人机规划路径


经典的规划算法有A*、D*、RRT、RPM等,其中D*和RRT算法比较有代表性。

下面的是D*算法的仿真,红点是临时加入的“障碍物”,可以看出它有抗动态干扰的能力。NASA的火星车就使用了D*算法。


image016.gif

D*算法


RRT算法是一种基于采样的路径规划算法,它也能抗干扰,而且消耗资源更少。


image017.gif

黑线规划出的所有的路径

红色是连接终点和起点的路径


控制

控制就是让机器人动起来,并且动得很精准,主要包括对底盘的运动控制和电机的PID控制。


实战一下

对导航有基本认识后,我们来现学现卖一把。

以我们为RoboMaster ICRA参赛队开源的RoboRTS为例。RoboRTS可以让机器人在已知地图中,实现自主定位和导航,还能对特定目标(装甲板)识别、跟踪和打击。

从github网站上下载源代码,按照网站上的说明进行编译即可运行。

链接:https://github.com/RoboMaster/RoboRTS


代码分析

我们简单分析源代码,主要分为perception(感知)、decision(决策)和planning(规划),包含了我们上面讲的定位、规划等。

perception部分主要实现了定位和感知功能。(地图已知,不需要进行mapping;感知用于探测步兵机器人的装甲板,提供打击目标)

decision部分进行决策,将任务交给planning部分进行规划路径,实现整车的运动。


编译程序

运行tools目录下的run_simulator.sh,可以得到Rviz输出:


image019.jpg


这里将地图换成了RoboMaster赛场。物理模型是通过stage进行模拟,感兴趣的同学可以自行学习相关知识。

我们查看其具体情况:


image020.jpg


程序运行后,系统里共有六个节点:

LocalizationNode节点结合tf信息(这里tf可以理解为传感器信息)以及map_serve节点提供的map信息(事先保存的地图),确定自身的位置;

decision_node节点进行决策后,由local_planner_node节点和global_planner_node节点共同作用进行运动路径规划。


image021.gif

路径规划


上图中,红点代表机器人(如果放得足够大,会发现是许多小箭头),黄线的代表模拟的激光雷达采集到的数据;

绿线代表全局路径(global_planner_node节点得出),红线代表局部路径(local_planner_node节点得出),机器人导航就实现了。

◆◆◆

以上只介绍了系统的基本知识。想要研发自己的机器人,还需要补充ROS系统、C++编程等方面的知识,希望大家再接再厉,早日做出最牛的机器人!


卡西莫多的南方 2018-5-25 16:39:05
zhenbang真棒,赞赞赞,有更多其他算法方面的介绍吗
回复

举报

ElecFans王岑 2018-5-31 10:35:05
以后服务机器人应该会普及吧
回复

举报

只有小组成员才能发言,加入小组>>

100个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

电路设计论坛

电子元器件论坛

传感技术

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

-

EDA设计论坛

multisim论坛

PCB设计论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

Orcad论坛

-

综合技术与应用

电机控制

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

物联网技术

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

高校联盟

深圳大学电子协会

西藏民族学院电子设计协会

西安电子科技大学西电实验室

桂林电子科技大学机电工程协会

鉴鹰电子科技协会

广东海洋大学科技创新协会

福建农林大学电子科技创新协会

湖北理工学院电子技术协会

深圳职业技术学院电子精英训练营

浙江科技学院Zuster

湘潭大学电子科技协会

青岛理工大学琴岛学院天宏开发团队

河南理工大学大学生电器开发部

广西科技大学电气信息创新协会

浙江机电职业技术学院电子制作协会

郑州大学西亚斯国际学院爱电工作室

新乡学院电子创新工作室

洛阳理工学院SmartTeam

苏州工业职业技术学院创新工作室

浙江工业大学GC315团队

杭电-微芯大学生科技创新孵化器

西安工业大学电信科协

商洛学院科技创新协会

大连民族学院创新工作室

南京信息工程大学帆木工作室

-

供求信息发布

方案交易

供需广告

芯片求购|供应发布区