智能移动机器人的现状及展望丨未来5年的移动机器人现状
【智能移动机器人的现状及展望丨未来5年的移动机器人现状】lot物联网小编为你整理了的相关内容,希望能为你解答。
“生活不止有眼前的苟且,还有诗和远方。”
这句话在当前的环境下听来,让我们大家都颇为感触。“疫情”阻碍了我们“远行”甚至“出行”的步伐,让我们的脚步被迫“按下了暂停键”,但我今天却要与大家聊一聊属于“机器人的诗和远方”。
众所周知,自主导航功能赋予了移动机器人智能感知与运动的能力。主要包含了定位、建图与路径规划,是整台机器人中研发门槛最高的技术之一,是移动机器人自动运行的一种核心技术,通俗来讲,就是解决机器人“在哪”、“去哪”以及“怎么去”的问题。
看到这里也许你会问:我们熟悉的高德地图、百度地图这些APP似乎都能做这样的位置导航呀,开个脑洞,给机器人安装上APP,它是不是也能“被导航”呢?
NO,NO,NO!
原因一:导航APP主要使用(全球导航卫星系统GNSS,比如GPS,北斗等)进行定位,有些APP可能也会加上运营商基站等其他辅助手段来提高定位的精度, 但这种方式在室内会因为信号遮挡的问题而不可靠。想必用过地图APP的人都有体会,如果你在商场内打开地图APP,就会发现自己的位置飘忽不定,这是无法满足机器人在室内定位的需求的;
原因二:对于定位误差的容忍度不同,或者说容错率不同。对于地图APP用户来说,定位偏1m甚至是偏5m不会导致用户掉沟里,但机器人定位偏10cm就可能发生危险;
原因三:地图APP会告诉你前方100m右转,但是他不会告诉你方向盘往右打死还是打半圈,专业一点的说法就是,APP不会控制执行器,比如步行导航,地图APP不会告诉用户以什么样的步幅,什么样的步频去步行,车载导航也不会告诉用户什么时候踩刹车,什么踩油门,什么时候打方向盘。但是控制执行器对于机器人自主导航来说是必需的。
这就是为什么地图APP不能解决机器人自主导航的问题!那么站在机器人的视角,它要如何“准确到达目的地”呢?
这就是我们今天要分享的核心问题:机器人运动规划。
首先,我们明确一个概念:机器人运动规划,主要包括两个阶段:
第一个阶段是机器人在被告知目的地之后,真正开始运动之前,根据所处环境的静态地图规划出一条从当前位置到目的地之间的无碰路径。因为机器人在这阶段还没有动起来,也就意味着全局路径规划不会考虑动态障碍,也不会控制机器人运动,这个阶段称为全局路径规划。
第二个阶段是控制机器人在全局路径的指引下向目的地运动,实时感知周围环境,如果发现障碍物,就采取相应的规避措施,这一阶段称为局部路径规划。
基于图搜索的全局路径规划
图(Graph)是一种抽象的数据结构,它的组成元素包括节点(Vertex)和边(Edge)。图搜索就是找到图中某个节点到另一个节点的所经过的边和节点组合,如下图所示。
通过将机器人所处的环境地图网格化处理,就可以将全局路径规划问题使用图搜索来表示,进一步就可以使用图搜索算法来实现机器人全局路径规划。
图搜索算法解决全局路径规划问题
常见的图搜索算法有两种:深度优先(Depth First Search, DFS)和广度优先搜索(Breadth First Search, BFS)。
深度优先搜索就是沿着一个分支走到底,如果这个分支没有我们想找的目标节点,就从另一个分支重新开始,这种搜索的特点就是:“不撞南墙不回头”。
广度优先搜索则是先搜索离自己最近的邻居,然后一圈一圈往外扩散,也用一句话来形容:“近水楼台先得月“。
因深度优先和广度优先搜索都不能保证路径的最优性,所以通常不直接用于解决路径规划问题。
既然这两者都不是最优解,我们一起来看看更加实用的图搜索算法:启发式搜索。
你是否已经发现,前面介绍的DFS和BSF在搜索过程中是盲目的,或者说是短视的,只关注自己相邻节点,不会抬头看看终点的方向,简而言之:它们只在乎“到达”,不在乎“到达成本是否最优”。
而启发式搜索与前面介绍的DFS或者BFS的不同之处就是在搜索的方向不是由待搜索节点的深度或者广度决定,而是由一个启发函数决定,简单是来说就是根据某种规则给待搜索节点计算一个优先级,优先级越高的节点,就越先被访问。
根据启发函数的形式,启发式搜索又可以分为三种:
第一种属于贪心算法(Greedy Best First Search),这种启发函数“只考虑诗和远方”,是”理想主义者“,为什么这样说呢?
因为它的启发函数只关注待搜索节点与目标节点的估计距离,之所以叫估计距离,是因为在规划过程中,是没有办法知道节点与目标节点的真实距离的。与目标的估计距离越近的节点,优先级越高,所以目的性很强。
第二种称为迪杰斯特拉(Dijkstra)算法,这种启发函数只关注“眼前的苟且”,是”现实主义者“,怎么讲呢?就是它只关注待搜索节点到起点的代价,优先选择到起点代价最低的节点进行访问,因为它每搜索一步,都是选择到起点代价最低的节点,所以它能保证搜索的结果一定是最优的,但是因为目的性不太强,还是具有一定的盲目性,所以效率不高。
第三种称为A*算法,它的启发函数为待搜索节点与目标节点的估计距离加上待搜索节点到起点的代价,这种启发函数“不止关注眼前的苟且,也考虑诗和远方”。
通过动图我们可以看出:贪心算法缺乏大局观,一旦环境中存在凹形障碍物,就很容易多走冤枉路;迪杰斯特拉搜索的节点数明显比A*多很多,所以效率也不可避免地比A*低。
综合来看,A*算法是最好的选择。
考虑运动学模型和动态障碍物的局部路径规划
看完了全局,我们来看局部。其实局部局部路径规划有很多实现方式,我们所要重点介绍的是:滑动窗口法(Dynamic Window Approach, DWA)。
图 | dwa示意图
从上述示意图,我们可以总结出算法的流程。
简而言之:首先细化目标,具体做法就是在全局路径上按照一定的规则选择若干图中标识的局部目标;接着在车体的速度区间内进行离散化采样(举例),得到一系列轮子速度组合;接下来在一个时间窗口内进行前向模拟,得到一系列模拟的机器人轨迹;然后综合考虑轨迹到障碍物距离,轨迹到局部目标的距离;最终,重新选择局部目标点,进行新一轮的局部规划,直到机器人到达最终的全局目标。
以下这张动图就是联想晨星机器人自主导航模块的工作流程:
根据静态地图规划出一条无碰路径,这里就是基于前面介绍的A*算法实现的。然后局部路径规划实时规划出可行的速度控制量发送给机器人执行,这里是基于前面介绍的DWA算法实现的。
可以看到机器人对于突然出现的动态障碍物也能做出规避动作。
以上内容为【智能移动机器人的现状及展望丨未来5年的移动机器人现状】的相关内容,更多相关内容关注lot物联网。