机器人技术基础系列:规划与导航
机器人技术基础系列:规划与导航
概览
自主移动机器人的规划与导航包括利用有目的的抉择制定和执行来使系统实现最高级的目标。机器人是否胜任导航的能力必须通过两个技能来证明:路径规划和避障。
目录
1.路径规划2.避障3.在中LabVIEW使用算法
路径规划
给定地图和目的地情况下的路径规划指的是机器人通过轨迹识别行进至目的地的能力。路径规划是至关重要的问题解决能力,因为机器人必须有能力决定在到达目的地前的路程中如何行进。
路径规划可分为两部分:表达与算法。路径规划人员首先将机器人环境转化为适合路径规划的形式。一些常用的技术包括广义的Voronoi图、规则网格和四叉树。路径规划算法通常可用于几乎所有配置空间的表达,虽然某些方法会更适合特定表达。图1展示了LabVIEW中绘制的Voronoi图。
图1.LabVIEW中的Voronoi图
由于多数表达可转换为图表,初始节点和目标节点之间的路径可通过图搜索算法来计算。图搜索算法被计算机科学充分理解,然而,许多算法要求程序访问图上的每个节点,以此来决定初始节点和目标节点间的最短路径。对于松连通图来说,访问每个节点是容易计算的,如Voronoi图;但对于紧连通图来说计算开销迅速变大,如规则网格图。
避障
路径规划人员仅考虑预先知道的环境障碍。在路径执行中可能由于地图精度或动态环境等因素,造成机器人真实传感器的值与预期值之间存在差异。因此,机器人必须能根据真实传感器的值实时改变运动路径。这正是避障能力重要的原因。一些通用的避障方法包括Bug算法、VFH算法。
Bug算法
一种直接的路径规划方法是沿机器人行进路线中每个障碍的轮廓绕行。Bug1算法中,机器人完全沿障碍物轮廓环绕,并在到达离目标地点最近的点时分离。这种方法效率低,但能确保机器人到达任何可到达的目标。Bug2算法中,机器人先沿障碍物轮廓行进,当达到可直达目标地点的位置时立刻分离。Bug2算法显著缩短了机器人的行进路程,但仍不是最优的。
VFH算法
Bug算法的一个限制是机器人每一刻的行为一般为传感器最近时刻读数的函数。这就可能导致机器人的瞬时传感器读数不能为稳定的避障能力提供足够的信息。VFH技术通过创建机器人周围环境的地图克服了该限制。在避障时生成极坐标柱状图来确定转向。首先,识别能够让机器人通过的所有通道。然后,执行考虑目标方向、轮方向和前一刻方向的代价函数。
图2.LabVIEWVI的前面板运行VFH避障算法
在中LabVIEW使用算法
通过LabVIEW用户可选择最有效的语法来开发算法,或使用内置工具来导入其它基于文本语言写的算法。继承代码中已有的搜索算法及其它机器人库可轻松导入LabVIEW、LabVIEWReal-TIme和LabVIEWFPGA中。
调用函数库节点
LabVIEW用户可利用调用库函数节点在Windows机器和实时嵌入式控制器中调用DLL。该节点用于在LabVIEW中创建调用专为LabVIEW编写的已有库或新库的接口。下图的调用库函数节点输入4个字节的浮点数,并输出其平方值。
图3.调用函数库节点可在LabVIEW中用于导入继承代码
公式节点
公式节点可用于LabVIEW和LabVIEWReal-TIme中的算法开发。公式节点是一种简单的基于文本语言的节点,用于在LabVIEW框图中执行数学操作。用户无需连接任何外部代码或应用,也无需连接低级算法函数来创建等式。除了基于文本的等式表达,公式节点还能接受基于文本版的if声明、while循环、for循环和do循环,这些都是C语言用户所熟悉的。
图4.公式节点采用类似C语言的语法
公式节点对于包含许多变量或非常复杂的等式,以及使用已有的基于文本的代码来说很有用。用户可将已有的基于文本的代码复制、粘贴到公式节点中,避免了重新创建图形代码的麻烦。
HDL节点
HDL接口节点允许用户在LabVIEWFPGA中综合硬件描述语言(HDL)写的算法或应用。用户可以直接在HDL接口节点中输入HDL代码,或引用外部HDL文件,下图的例子中,HDL输入节点包括了VHDL代码,将两个32比特数字相加并返回结果。
图5.HDL节点允许用于向LabVIEWFPGA中导入HDL代码
了解更多关于机器人技术,可参阅机器人技术基础系列主页ni.com/zone。