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

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

  • 1. 源由
  • 2. 视频
  • 3. 问题
    • 3.1 思维发散
    • 3.2 问题收敛
  • 4. 图示
    • 4.1 水平模式
    • 4.2 下坡模式
    • 4.3 上坡模式
    • 4.4 碰撞分析
  • 5. 总结
    • 5.1 一维高度避障场景
    • 5.2 业界跟随产品
    • 5.3 APM集成跟随
    • 示意图一:
    • 示意图二:
    • 示意图三:
  • 6. 参考资料
  • 7. 补充资料 - 大疆智能跟随
    • 7.1 炸机
    • 7.2 成功

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开源飞控之飞行模式


  • Object Avoidance
  • ROS and VIO tracking camera for non-GPS Navigation
  • Follow
  • FollowMe
  • Adding a New Flight Mode to Copter

Drone based follow

6. 参考资料

【1】ArduPilot开源飞控系统之简单介绍

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

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

7.1 炸机

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

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

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

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

DJI Mini 3 Pro 自动跟随炸机

7.2 成功

mini3pro智能跟随

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/43507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java算法_ 验证二叉搜索树(LeetCode_Hot100)

题目描述&#xff1a; 给你一个二叉树的根节点 &#xff0c;判断其是否是一个有效的二叉搜索树。root 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 获得…

【TypeScript】tsc -v 报错 —— 在此系统上禁止运行脚本

在 VS Code 终端中执行 tsc -v &#xff0c;报错 —— 在此系统上禁止运行脚本 然后 windows x &#xff0c;打开终端管理员&#xff0c;出现同样的问题 解决方法&#xff1a; 终端&#xff08;管理员&#xff09;执行以下命令&#xff1a; 出现 RemoteSigned 则代表更改成功…

11,模板泛化、模板特化、所占字节数、继承实现模板展开、using循环命名展开可变参数

模板泛化、模板特化、所占字节数、继承实现模板展开、using循环命名展开可变参数 模板泛化模板特化模板全特化通过模板偏特化获取类型所占字节数通过模板偏特化和宏获取类型所占字节数...ParamTypes和ParamTypes...的区别 通过继承实现模板展开using 通过using循环命名的方式来…

开发一个文生图的功能

文章目录 效果开发环境原理核心代码代码仓库问题效果 开发环境 Python 3.10PyCharm原理 借助开源项目stable-diffusion,通过该项目封装python库diffusers,可以轻易的实现文生图的功能。 关于更多diffusers的功能请访问:https://huggingface.co/docs/diffusers/index 核心代…

css样式表属性

文章目录 css样式表属性colorbackground-colorfont-sizefont-weightfont-familyfont-styletext-decorationtext-indentline-height(line-height的概念)width、heightletter-spacingtext-aligndirectionwriting-modefont-variantborder-radiusopacitycursorvertical-alignmin-wi…

【数据结构与算法】十大经典排序算法-归并排序

&#x1f31f;个人博客&#xff1a;www.hellocode.top &#x1f3f0;Java知识导航&#xff1a;Java-Navigate &#x1f525;CSDN&#xff1a;HelloCode. &#x1f31e;知乎&#xff1a;HelloCode &#x1f334;掘金&#xff1a;HelloCode ⚡如有问题&#xff0c;欢迎指正&#…

如何用输入函数为数组赋值

在编写程序时我们经常使用数组&#xff0c;而数组的大小可能是很大的但是我们并不需要为每个元素都自己赋值&#xff0c;我们可能会自定义输入数组元素个数&#xff0c;我们应该如何实现通过输入函数为数组赋值呢&#xff1f; 目录 第一种&#xff1a; 第二种&#xff1a; 第一…

大数据bug-sqoop(二:sqoop同步mysql数据到hive进行字段限制。)

一&#xff1a;sqoop脚本解析。 #&#xff01;/bin/sh mysqlHost$1 mysqlUserName$2 mysqlUserPass$3 mysqlDbName$4 sql$5 split$6 target$7 hiveDbName$8 hiveTbName$9 partFieldName${10} inputDate${11}echo ${mysqlHost} echo ${mysqlUserName} echo ${mysqlUserPass} ec…

OpenCV之remap的使用

OpenCV中使用remap实现图像的重映射。 重映射是指将图像中的某一像素值赋值到指定位置的操作&#xff1a;g(x,y) f ( h(x,y) )&#xff0c; 在这里&#xff0c; g( ) 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数。为了完成映射过程, 需要获得一些插值为…

TypeError: a bytes-like object is required, not ‘str‘

raceback (most recent call last): File "D:\pycharmcode\client.py", line 12, in <module> tcp_socket.send(send_data) TypeError: a bytes-like object is required, not str 使用socket进行ubuntu与windows通信时&#xff0c;发送数据时报了以上错…

LeetCode 面试题 01.04. 回文排列

文章目录 一、题目二、C# 题解 一、题目 给定一个字符串&#xff0c;编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。 回文串不一定是字典当中的单词。 点击此处跳转题目。 示例1&#xff1a; 输入&…

CSS3:图片边框

简介 图片也可以作为边框&#xff0c;以下是实例演示 注意 实现该效果必须添加border样式&#xff0c;且必须位于border-image-socure之前否则不会生效 实例 <html lang"en"><head><style>p {width: 600px;margin: 200px auto;border: 30px soli…

maven工具-maven的使用-镜像仓库、本地仓、IDEA使用maven

Maven 一、为什么使用maven 添加第三方jar包jar包之间的依赖关系处理jar包之间的冲突获取第三方jar包将项目拆分成多个工程模块实现项目的分布式部署 二、maven简介 ​ Maven项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的…

2023.8 - java - 对象和类

public class Dog {String breed;int size;String colour;int age;void eat() {}void run() {}void sleep(){}void name(){} } 一个类可以包含以下类型变量&#xff1a; 局部变量&#xff1a;在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方…

基于STM32标准库智能风扇设计

目录 一&#xff0c;前言 二&#xff0c;系统方案选择 三&#xff0c;实体展示 工程分类 四&#xff0c;相关代码 PWM.c PWM.h AD.c AD.h 电机驱动程序 舵机驱动 一&#xff0c;前言 当今生活中&#xff0c;风扇已成为人们解暑的重要工具&#xff0c;然而使用风扇缓解…

CentOS系统环境搭建(九)——centos系统下使用docker部署项目

centos系统环境搭建专栏&#x1f517;点击跳转 关于Docker-compose安装请看CentOS系统环境搭建&#xff08;三&#xff09;——Centos7安装Docker&Docker Compose&#xff0c;该文章同样收录于centos系统环境搭建专栏。 Centos7部署项目 采用前后端分离的形式部署。使用Do…

【Sklearn】基于随机梯度下降算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于随机梯度下降算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果1.模型原理 随机梯度下降(Stochastic Gradient Descent,SGD)是一种优化算法,用于训练模型的参数以最小化损失函数。在分…

QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)

QT学习笔记-QT5.15编译及安装谷歌拼音输入法&#xff08;QtInputMethod_GooglePinyin&#xff09; 0、背景1、环境2、下载QtInputMethod_GooglePinyin源码3、使用MinGW64构建套件编译3.1 编译QtInputMethod_GooglePinyin源码3.2、部署tgtsmlInputContextPlugin输入法插件3.3、运…

Lombok注解在JSON化中,JSON生成额外生成字段问题

问题描述&#xff1a; 定义如下对象 Dataclass A{private String A;public String getC() {return "abab";}} 执行如下逻辑 Autowiredprivate ObjectMapper objectMapper;Testpublic void test4() throws Exception {A a new A();a.setA("a");System.ou…

分布式 - 服务器Nginx:一小时入门系列之负载均衡

文章目录 1. 负载均衡2. 负载均衡策略1. 轮询策略2. 最小连接策略3. IP 哈希策略4. 哈希策略5. 加权轮询策略 1. 负载均衡 跨多个应用程序实例的负载平衡是一种常用技术&#xff0c;用于优化资源利用率、最大化吞吐量、减少延迟和确保容错配置。‎使用 nginx 作为非常有效的HT…