无人机跟随一维高度避障场景--逻辑分析

1. 源由

最近拿到一台测试样机,功能很多,就不多赘述。

这里针对跟随功能进行下吐槽和分析,当然由于成本或者技术问题,该机不配备3D/2D避障功能。

2. 视频

首先,上视频,不废话。

HoverX1 同样的路不一定好走,但低头走路一定不行

3. 问题

问题就是我走的好好的,结果这个跟随的飞机碰到树的枝叶了。

头脑风暴开始需要发散,然而实际问题需要收敛。

3.1 思维发散

通常认为【在指定时刻】,【3维空间】无人机对主体目标的【可视无遮挡】【相对位置】。

这里将几个比较关键的描述用“【】”给加强出来。

所以该问题实际上存在几个分析点:

  • 两个相对物体(无人机,主体目标)同一时刻下
  • 在三维空间坐标系统下的坐标和速度
  • 在可视区域,中间无遮挡的情况下
  • 相对位置在可控范围(视频能看清/跟踪信号良好等)

3.2 问题收敛

接下来,比较务实的来收敛这个问题,假设如下:

  • 地面物体低速运动(< 10m/s)场景 // 100米奥运世界纪录是9.58秒,由博尔特创造的记录。
  • 路径规划xy跟随目标行进路线
  • 不提升硬件规格或者设计前提

基于以上假设,可以认为:

  • 无人机速度能够跟得上低速运动跟随目标。
  • 在目标运动xy轨迹与横截面构成的空间区域可以定义为无障碍空间。

此时,需要考虑如下几个场景

  • 常规异常情况【电池耗尽、目标丢失等等】
  • 当飞行高度超过目标高度时,在飞行高度上出现障碍物
  • 跟随飞行过程中,在目标与无人机之间突然出现障碍物
  • 跟随飞行过程中,目标高度出现变化(比如:人弯腰行进等)

综合上面场景,将问题收敛到在原有策略基础上增加一维高度维度的障碍物感知分析。

4. 图示

测试视频是设置平拍模式。

按照本人的理解平拍是在某个高度(智能的角度,VIO自动测定的一个跟踪目标的高度)。

注:鉴于测试样机是可以选择跟随高度:高、中(平拍)、低。

4.1 水平模式

在这里插入图片描述

4.2 下坡模式

在这里插入图片描述

4.3 上坡模式

在这里插入图片描述

4.4 碰撞分析

视频在上坡时发生与树枝的碰撞,如图所示。

如此时能在Z方向的高度维度进行视频障碍物检查,降低高度,同时跟随摄像头抬高视角,走到S位置,将可以规避该风险。

在这里插入图片描述
从实际视频效果看,小飞机跟随策略是始终保持头部高度以上一点的位置,因此,下坡就没有类似问题。

在这里插入图片描述

5. 总结

5.1 一维高度避障场景

这里仅仅针对上桥跟随视频出现树枝遮挡这种障碍物场景进行了简单的分析。

从逻辑的角度,如果没有3D避障传感器支持的情况下,需要通过单目摄像头测距,平面解析几何,来做出高度方向的规划。

作为有保护圈的小型无人机,可以考虑降低以安全避开此类障碍物,因为低空通过性会更好,更安全(需要考虑最低高度,越低出现突然障碍物的可性能就会大幅度提高,比如:小孩)。

在公园或者小树林,其实这种场景是很多的。如果没有很好的3D避障传感器,那么做一个跟随一维高度避障就显得很有意义。

以下是设置平拍(勉强在这个公园能通过,不过一些角落是没有去的),如果设置高,那么100%会碰到树枝。

HoverX1 城北公园散步

5.2 业界跟随产品

目前,市场上比较成熟的产品可以参考下以下视频:

Top 5 best follow me drone 2023

5.3 APM集成跟随

当然目前业界排名前列的产品也并非做到了非常好的跟随效果,尤其是在避障方面。

通过对Ardupilot的了解,如果能将ROS在避障方面的智能集成进来,也未尝不是一种很好的解决方案。

示意图一:

在这里插入图片描述

示意图二:

在这里插入图片描述

示意图三:

在这里插入图片描述
上述方案可能或多或少都会涉及到新增飞行模式(当然也看飞控和传感器的物理连接方式,这里主要是针对ArduPilot),关于飞行模式可以参考:ArduPilot开源飞控之飞行模式


Drone based follow

6. 参考资料

【1】ArduPilot开源飞控系统之简单介绍
【2】ArduPilot开源飞控之飞行模式

7. 补充资料 - 大疆智能跟随

总的来看,避障方面做的都不太好。所以有所突破就是产品亮点。

7.1 炸机

【损失桨叶一套】MNI 3 PRO智能跟随炸机了

大疆mini3pro自动跟随模式炸机啦!视频结尾处~

大疆御3,萌新自动跟随炸机

大疆御3自动跟随炸机,撞树。维修费用自理。大家看看是否正常。宣传片里可以穿林,在树梢穿越。是否属于虚假宣传?

DJI Mini 3 Pro 自动跟随炸机

7.2 成功

mini3pro智能跟随

大疆无人机智能跟随,避障功能无敌了,结果真没想到……

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个使用 MATLAB 实现无人机三维环境避障的示例代码。这个代码实现了一个简单的避障算法,包括了对障碍物的检测和规避。代码中也有详细的注释,希望能对您有所帮助。 ``` % 初始化无人机的位置和速度 pos = [0, 0, 0]; % 初始位置 vel = [1, 1, 1]; % 初始速度 % 初始化障碍物位置 obstacles = [2, 2, 2; -1, -1, -1]; % 设置运行时间和时间步长 T = 10; % 运行时间 dt = 0.1; % 时间步长 % 主循环,模拟无人机的运动 for t = 0:dt:T % 计算无人机与障碍物之间的距离 dist_to_obstacle1 = norm(pos - obstacles(1,:)); % 障碍物1 dist_to_obstacle2 = norm(pos - obstacles(2,:)); % 障碍物2 % 判断是否需要避障 if dist_to_obstacle1 < 1 || dist_to_obstacle2 < 1 % 如果需要避障,计算避障力 if dist_to_obstacle1 < dist_to_obstacle2 % 靠近障碍物1,避开障碍物1 F = (pos - obstacles(1,:)) / dist_to_obstacle1^2; else % 靠近障碍物2,避开障碍物2 F = (pos - obstacles(2,:)) / dist_to_obstacle2^2; end else % 否则,保持直线运动 F = [0, 0, 0]; end % 计算速度和位置 vel = vel + F * dt; % 更新速度 pos = pos + vel * dt; % 更新位置 % 显示当前位置和速度 disp(['t = ', num2str(t), 's, pos = [', num2str(pos), '], vel = [', num2str(vel), ']']); end ``` 这个代码中,首先定义了无人机的初始位置和速度,以及障碍物的位置。然后,设置了运行时间和时间步长,进入主循环。在主循环中,首先计算无人机与两个障碍物之间的距离,判断是否需要避障。如果需要避障,根据距离计算避障力;否则,保持直线运动。最后,更新速度和位置,并显示当前位置和速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值