机器人控制算法

机器人的算法大方向可以分为感知算法与控制算法,感知算法一般是环境感知、路径规划,而控制算法一般分为决策算法、运动控制算法。环境感知算法获取环境各种数据,通常指以机器人的视觉所见的图像识别等,当然还有定位机器人的方位——slam,对于不同的机器人而言所处的环境各有千秋。其实我们常见的扫地机器人就是一种定位机器人(slam算法控制的),扫地机器人的行为决策和控制算法都是极其简单的,当遇到阻挡物时调整运动方位即可,扫地部件一致处于工作状态,当然这也是最原始最简单的。

机器人的控制算法对机器人自身时非常重要的,目前很多机器人算法的研究主要就是为了提高机器人行动的精度,稳定性和速度,这个一半靠pid伺服电机,一半靠控制算法,同样性能的pid伺服电机,好的控制算法能提高精度10倍以上。而且机器人的硬件部分大多数(具有类似功能的)都是一样的,因为机器人硬件厂家也就那么几家。所以机器人的内置算法决定了机器人是否具有智能与灵活的特征。

当前,机器人的环境感知算法和运动控制算法算是比较成熟了,毕竟这两个领域时目前投入人力最多了两个领域,大多数科研人员是不断的优化现有的环境感知算法和运动控制算法(自动驾驶就是一个很好的例子),而且对与一般的机器人而言也只需要用到这两种算法中的一种或者两种,至于行为决这种算法其实在目前的大多数机器人中都是很简单的重复几个动作,比如跳舞、攀登等。

行为决策算法或者行为控制策略是目前机器人应用领域还未突破的算法。这里的行为决策或者控制不是简单的重复动作或者跳舞行走之类的动作,这些简单的动作可以减硬件上边编程实现,基本上设计不到人工智能。那么对于机器人的复杂行为算法主要有fsm,决策树,遗传算法,神经网络等。

目前无人驾驶,自动驾驶都在苦苦研发避障算法,并得到了广泛的应用。避障算法以及避障方式都是当前机器人算法的研究方向,在不同的应用场景需要结合实际情况赋予机器人不同的避障机制,当前的避障算法主要是dwa避障算法和vfh避障算法,这两种算法只能算是非常原始的起步,很多先进的避障算法都是在其之上进行优化的。

下面我介绍几个简单的机器人算法:

1、SLAM

SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。问题可以描述为:将一个机器人入未知环境中的未知位置,是否有办法让机器人一边移动一边逐步描绘出此环境完全的地图,所谓完全的地图(a consistent map)是指不受障碍行进到房间可进入的每个角落。

2、DWA

DWA算法全称为dynamic window approach,其原理主要是在速度空间(v,w)中采样多组速度,并模拟这些速度在一定时间内的运动轨迹,再通过一个评价函数对这些轨迹打分,最优的速度被选择出来发送给下位机。 

机器人在获得目的地信息后,首先经过全局路径规划规划出一条大致可行的路线,然后调用局部路径规划器根据这条路线及costmap的信息规划出机器人在局部时做出具体行动策略,ROS中主要是使用了DWA算法。在ROS中每当move_base处于规划状态就调用DWA算法计算出一条最佳的速度指令,发送给机器人运动底盘执行。

3、VFH

Vector Field Histogram算法,简称VFH算法,直译为“向量场直方图算法”。是一种由人工势场法改进而来的机器人导航算法。算法会计算各个方向的行进代价,该方向的障碍越多,代价越高,并且会累加该方向不同距离的障碍物(根据距离,权重不同)。根据不同方向的行进代价,可以直观的用一个柱状图表示。横坐标为0-360度的方向,纵坐标是该角度下的行进代价。柱状图越高,表示向该方向行进的代价越高,也表明越不可能通过。

理论上,这个柱状图低的区域是便于行进的,但可能会偏离目标方向,因此,需要一个平衡函数来平衡行进代价和目标方向。最终,会选择一个相对最适宜的方向行进。于是这个函数便是整个算法的核心。

你可能感兴趣的:(机器人)