一般餐厅里边做面的话可以选择特有面机器人面大师吗

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

定位(状态估计)和建图

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

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

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

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

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

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

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

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

无人车激光生成定位地图

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

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

格子越小地图就越精確,不过占用的空间也就越大

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

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

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

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

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

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

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

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

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

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

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

黑线规划出的所有的路径

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

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

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

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

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

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

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

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

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

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

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

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

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

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


zhenbang真棒,赞赞赞有更多其他算法方面的介绍吗

特别声明:以上文章内容仅代表莋者本人观点不代表新浪网观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪网联系

违法和不良信息举報电话:

我要回帖

 

随机推荐