历史上的今天
今天是:2025年03月30日(星期日)
2020年03月30日 | SLAM+运动规划=机器人自主定位导航
2020-03-30 来源:SLAMTEC
(文章来源:SLAMC)
SLAM技术作为机器人自主移动的关键技术,让很多人都误解为:SLAM=机器人自主定位导航。其实,SLAM≠机器人自主定位导航 ,不解决行动问题。SLAM如其名一样,主要解决的是机器人的地图构建和即时定位问题,而自主导航需要解决的是智能移动机器人与环境进行自主交互,尤其是点到点自主移动的问题,这需要更多的技术支持。
要想解决机器人智能移动这个问题,除了要有SLAM技术之外,还需要加入路径规划和运动控制。在SLAM技术帮助机器人确定自身定位和构建地图之后,进行一个叫做目标点导航的能力。通俗的说,就是规划一条从A点到B点的路径出来,然后让机器人移动过去。
运动规划是一个很大的概念,从机械臂的运动、飞行器的飞行,到扫地机的清扫,机器人的移动,其实这些都是属于运动规划的范畴。运动规划主要分为:全局规划、局部规划。全局规划,顾名思义,是最上层的运动规划逻辑,它按照机器人预先记录的环境地图并结合机器人当前位姿以及任务目标点的位置,在地图上找到前往目标点最快捷的路径。
当环境出现变化或者上层规划的路径不利于机器人实际行走的时候(比如机器人在行走的过程中遇到障碍物),局部路径规划将做出微调。与全局规划有所区别的是,局部规划可能并不知道机器人最终要去哪,但是对于机器人怎么绕开眼前的障碍物特别在行。
这两个层次的规划模块协同工作,机器人就可以很好的实现从A点到B点的智能移动了。不过实际工作环境下,上述配置还不够。因为运动规划的过程中还包含静态地图和动态地图两种情况。
A*(A-Star)算法是一种静态路网中求解最径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。但是,A*算法同样也可用于动态路径规划当中,只是当环境发生变化时,需要重新规划路线。
D*算法则是一种动态启发式路径搜索算法,它事先对环境位置,让机器人在陌生环境中行动自如,在瞬息万变的环境中游刃有余。D*算法的最大优点是不需要预先探明地图,机器人可以和人一样,即使在未知环境中,也可以展开行动,随着机器人不断探索,路径也会时刻调整。
上述的几种算法都是目前绝大部分机器人所需要的路径规划算法,能够让机器人跟人一样智能,快速规划A到B点的最短路径,并在遇到障碍物的时候知道如何处理。但扫地机器人作为最早出现在消费市场的服务机器人之一,它需要的路径规划算法更为复杂。
扫地机器人所需要的功能跟市面上的机器人有所不同,比如针对折返的工字形清扫,如何有效进行清扫而不重复清扫?如何让扫地机和人一样,理解房间、门、走廊这种概念?
针对这些问题,学术界长久以来有一个专门的研究课题,叫做空间覆盖(space coverage),同时也提出了非常多的算法和理论。其中,比较有名的是Moe DecomposiTIons,扫地机通过它实现对空间进行划分,随后进行清扫。
所以,他要实现的不是尽快实现从A到B的算法,为了家里能尽量扫得干净,要尽量覆盖从A到B点的所有区域,实现扫地机器人“扫地”的这个功能。所以,机器人自主定位导航技术的发展还需要越来越多的技术加以支撑,适用于更多的场景。虽然技术和需求在变,但不变的是,在行业中取长补短,结合不同新的技术进行融合,这是不会改变的事实。
(责任编辑:fqj)
史海拾趣
|
比较落伍,周末才开始下载了大名鼎鼎的《蜗居》看。由于没时间,也只看了一集,对于买房难还没什么体会,可海藻找工作时,她姐姐海萍对她的教导让我这个过来人感觉真对啊。 具体的记不清楚了,大概是: & ...… 查看全部问答> |
|
大家新年快乐! 我的平台是pxa270+wince5.0. 现在键盘驱动遇到了一点小问题,请大家帮帮忙。 通常键盘上,shift+3应该是显示#号,但是我目前要做的shift+3要显示欧元符号,#被移到其他按键上去了。 我修改了键盘的影射结构,将原来#的位置用欧 ...… 查看全部问答> |
|
本人刚进公司,被分到做vxworks软件,原来没有接触过vxworks,所以也不是很了解,请各位帮忙讲解一下,主要是vxworks是做什么的,它的应用平台,当前形势,以及怎么去学,主要按那个方向去学习,如果将来想跳槽应该跳哪个方向的,谢谢哈^-^… 查看全部问答> |
|
最近在做个项目,要用程序修改IP,SUBMASK,GATEWAY的地址,这个程序我作出来了,但是碰到一个问题,当我把静态的改回DHCP动态的时候发生了错误, 提示说是进行了一个非法操作,这是怎么回事呢?我在程序上是这样的一个思路,我先选择是静态的地址还是动态的 ...… 查看全部问答> |
|
在CCS4下新建Piccolo TMS320F28027怎么始终有错误不能进入DEBUG下 用自带的例子是可以进入DEBUG,可是自己新建的就是有错误,请熟悉CCS4的进来讲讲那里设置要重点设置的?… 查看全部问答> |
|
zinc6.1下,定义一个 zafstring *testString = new zafString();然后把testString 加到窗口中 ,在该 控件中输入数据,比如 12345,用程序获得该值 testString ->Text()为什么只能得到“1”,而不能得到整个字符串呢?有遇 ...… 查看全部问答> |




