技术分享 | Prometheus(P450)-室内外避障

Posted 阿木实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | Prometheus(P450)-室内外避障相关的知识,希望对你有一定的参考价值。

原理说明

Astar进行全局路径规划

全局路径规划

1) 全局算法和局部算法

全局路径规划是在已知的环境中,给机器人规划一条路径,路径规划的精度取决于环境获取的准确度,全局路径规划可以找到最优解,但是需要预先知道环境的准确信息,当环境发生变化,如出现未知障碍物时,该方法就无能为力了。它是一种事前规划,因此对机器人系统的实时计算能力要求不高,虽然规划结果是全局的、较优的,但是对环境模型的错误及噪声鲁棒性差。

局部路径规划则环境信息完全未知或有部分可知,侧重于考虑机器人当前的局部环境信息,让机器人具有良好的避障能力,通过传感器对机器人的工作环境进行探测,以获取障碍物的位置和几何性质等信息,这种规划需要搜集环境数据,并且对该环境模型的动态更新能够随时进行校正,局部规划方法将对环境的建模与搜索融为一体,要求机器人系统具有高速的信息处理能力和计算能力,对环境误差和噪声有较高的鲁棒性,能对规划结果进行实时反馈和校正,但是由于缺乏全局环境信息,所以规划结果有可能不是最优的,甚至可能找不到正确路径或完整路径。

两者协同工作,机器人可更好的规划从起始点到终点的行走路径。

2) A*算法

A*算法是全局启发式搜索算法,是一种尽可能基于现有信息的搜索策略,也就是说搜索过程中尽量利用目前已知的诸如迭代步数,以及从初始状态和当前状态到目标状态估计所需的费用等信息。

A*算法在选择下一个被检查的节点时考虑来之前花费代价,同时使用到目标距离作为引导,两者之和作为评价该节点处于最优路线上的可能性的量度,这样可以首先搜索到位于最优路径上可能性大的节点。

A算法的基本思想如下:引入当前节点j的估计函数$f^$,当前节点j的估计函数定义为:

$f^(j)= g(j)+h^(j)$

其中$g(j)$是从起点到当前节点j的实际代价的量度,$h^(j)$是从节点j到终点的最小消耗的估计,可以依据实际情况,选择$h^(j)$的具体形式,$h^(j)$要满足一个要求:不能高于节点j到终点的实际最小费用。从起始节点点向目的节点搜索时,每次都搜索$f^(j)$最小的节点,直到发现目的节点。

节点图

室内

节点图如下:

gkP98P.png

 

tf树如下:

gkCz4I.png

室外

节点图如下: gkPY5R.png

tf树如下:

gkPJa9.png

 

室内避障实机操作

每次飞行前需重新上电以重启飞控和板载计算机

启动指令

先启动第一个指令

roslaunch p450_experiment astar_onboard.launch

 

再启动第二个指令

roslaunch p450_experiment astar_ground.launch

起飞

先输入起飞指令

在此终端先输入0选择命令输入控制

再输入1选择take off起飞指令,由于没有切入offboard模式,此时无人机还不会响应。

我们遥控器切定点,解锁,切offboard,这时无人机才会自动起飞。

 

等到无人机起飞到一个稳定高度,也即是我们设定的起飞高度后,回到rviz界面,点击选择3D Nav Goal

在rviz上点击一个点作为目标点

会自动生成一个绕开障碍物的路径

 

此时无人机会沿着这个生成的路径飞,绕开障碍物,且高度会保持不变。

 

如果中途无人机飞行不符合预期,及时通过遥控器切出offboard模式,转为position模式手动控制。

降落

无人机飞到目标点后,可以遥控器拨动offboard飞行模式开关切出offboard模式,并缓慢手动降落。

室外避障实机操作

启动指令

先启动第一个指令

roslaunch p450_experiment astar_onboard_gps.launch

再启动第二个指令

roslaunch p450_experiment astar_ground_gps.launch

之后的操作基本上和室内类似。详细的可以了解P系列无人机P450使用手册

以上是关于技术分享 | Prometheus(P450)-室内外避障的主要内容,如果未能解决你的问题,请参考以下文章

技术分享 | P450 ego-planner的干货分享

新品发布 | P450迎来新配置升级!+NANO/NX版本,视觉自主精准降落.....

Prometheus技术分享——prometheus的函数与计算公式详解

技术分享| 如何使用Prometheus实现系统监控报警邮件通知

技术分享| 如何使用Prometheus实现系统进程监控

技术分享| 如何使用Prometheus实现系统进程监控