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

news2024/11/25 4:43:49

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

  • 1. 源由
  • 2. 视频
  • 3. 问题
    • 3.1 思维发散
    • 3.2 问题收敛
  • 4. 图示
    • 4.1 水平模式
    • 4.2 下坡模式
    • 4.3 上坡模式
    • 4.4 碰撞分析
  • 5. 总结
  • 6. 参考资料

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. 总结

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

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

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

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

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

HoverX1 城北公园散步

注:Arudupilot有成熟的避障策略和算法,可以考虑。

6. 参考资料

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

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

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

相关文章

java面试基础 -- 方法重载 方法重写

目录 重载 重写 重载 方法的重载是指在同一个类中定义多个方法, 他们具有相同的名称, 但是具有不同的参数列表, 例如: public void myMethod(int arg1) {// 方法体 }public void myMethod(int arg1, int arg2) {// 方法体 }public void myMethod(String arg1) {// 方法体 }…

企业权限管理(九)-用户操作

用户操作 1用户查询 UserController findAll Controller RequestMapping("/user") public class UserController {Autowiredprivate IUserService userService;RequestMapping("/findAll.do")public ModelAndView findAll() throws Exception {ModelAndVie…

PMP考试通过标准是什么?

PMP 新考纲一共是 180道题&#xff0c;答对 108道就通过了&#xff0c;具体怎么看通过没有&#xff1f; 一、查看是否通过 1、登录PMI 官网&#xff0c;点击“Log In” 如果忘记 PMI 的账号、密码了也别着急&#xff0c;去找你报名的培训机构&#xff0c;一般报名处有记录&…

C语言 — qsort 函数

介绍&#xff1a;qsort是一个库函数&#xff0c;用来对数据进行排序&#xff0c;可以排序任意类型的数据。 void qsort &#xff08;void*base&#xff0c; size_t num, size_t size, int(*compart)(const void*,constvoid*) &#xff09; qsort 具有四个参数&#xff1a; …

分割等和子集——力扣416

思路:动态规划 bool canPartition(vector<int>& nums){int n=nums.size(

建筑师设计师太难了,既要学BIM、无人机,还要学GIS!

我&#xff0c;一个平平无奇的城市规划专业&#xff08;建筑专业、路桥专业&#xff09;大学生&#xff0c;还有一年要毕业&#xff0c;很担心工作以后受到社会的毒打&#xff0c;遂问导师和学长&#xff0c;我要自学点什么技能和软件&#xff1f; 学长A&#xff1a;CAD&#x…

mobile wireless network

老人家教学&#xff1a;手机设置无线网络 以我家里无线网络为例&#xff1a;FJGDWL-zeng 以苹果手机为例&#xff1a;其他手机类似操作 1&#xff09;【设置】 2&#xff09;【无线局域网】 3&#xff09;【无线局域网】列表&#xff0c;有的话&#xff0c;直接选中&#xff0…

攸信技术:厦门火炬高新区产业联合会的新伙伴!

8月12日&#xff0c;2023年度厦门火炬高新区产业联合会会员大会在厦门国际会议中心酒店举行。来自火炬高新区产业联合会各领域的200余家优秀企业代表齐聚一堂&#xff0c;共商合作&#xff0c;共谋发展。 本次大会攸信技术作为新会员单位参加厦门火炬高新区产业联合会会员授牌仪…

循环内的try-catch 跟循环外的try-catch有什么不一样

起因&#xff1a;一位面试管突然问了这么一道基础的面试题&#xff0c;反而秀了面试者一脸&#xff0c;经常用的却被问到时不知道怎么回答&#xff0c;所以我们平时在写代码的时候&#xff0c;要多注意细节跟原理。也许你不服&#xff1a;不就是先这样&#xff0c;再那样&#…

spark导入doris的几种方式

本文主要介绍通过spark导入doris的3种方式。 1.最简单的方式&#xff1a;jdbc jdbc 方式需要引入mysql-connector-java的依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.48</…

案例18 基于Spring Boot+MyBatis的图书信息维护案例

一、案例需求 基于Spring BootMyBatis实现图书信息的新增、修改、删除、查询功能&#xff0c;并实现MySQL数据库的操作。 MySQL数据库创建图书表&#xff08;t_book&#xff09;&#xff0c;图书表有主键、图书名称、图书类别、作者、出版社、简介信息。 二、数据初始化 创建…

“继承与组合:代码复用的两种策略“

White graces&#xff1a;个人主页 &#x1f439;今日诗词:"故人陆续凋零&#xff0c;好似风中落叶啊"&#x1f439; &#x1f649; 内容推荐:“掌握类与对象&#xff0c;点亮编程之路“(下)&#x1f649; &#x1f649;专栏推荐:“Java入门指南&#xff1a;从零开…

案例17 基于Spring Boot+MyBatis的学生信息维护案例

一、案例需求 基于Spring BootMyBatis实现学生信息的新增、修改、删除、查询功能&#xff0c;并实现MySQL数据库的操作。 MySQL数据库创建学生表&#xff08;t_student&#xff09;&#xff0c;有主键、姓名、年龄、性别、出生日期、身份证号、电话号码信息。 二、数据初始化…

07 - 查看、创建、切换和删除分支

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 查看分支2. 创建和切换分支3. 删除分支 1. 查看分支 git branch -va2. 创建和切换分支 第一种&#xff1a; 创建分支&#xff1a; git branch new_branch切换分支&#xff1a; …

PHP实现在线年龄计算器

1. 输入日期查询年龄 2. php laravel框架实现 代码 /*** 在线年龄计算器*/public function ageDateCal(){// 输入的生日时间$birthday $this->request(birthday);// 当前时间$currentDate date(Y-m-d);// 计算周岁$age date_diff(date_create($birthday), date_create($…

Linux 多进程

目录 0x01 linux中特殊的进程 0x02 进程的标识 0x03 创建子进程 0x01 linux中特殊的进程 0号进程&#xff1a;idle进程&#xff0c;系统启动加载的进程1号进程&#xff1a;systemd进程&#xff0c;系统初始化&#xff0c;是所有进程的祖先进程 init2号进程&#xff1a;kthre…

Zabbix监控Kubernets获取节点模板报错

Preprocessing failed for: {“error”:"Request failed with status code 401: {“kind”:“Status”,“apiVersion”:“v1”,"met ad …1. Failed: Discovery error: TypeError: cannot read property 1 of null. Zabbix 监控 Kubernetes 出现采集错误&#xff0c;…

麒麟系统相关

创建虚拟机 镜像下载地址 选择合适的镜像&#xff0c;进入引导后注意不要选择默认的第一条&#xff0c;选择第二条进入安装程序。 root密码修改 使用命令 sudo passwd root 开启ssh 配置好网络后发现能ping通&#xff0c;但无法ssh连接&#xff0c;ps -ef | grep ssh 得…

基于docker实现主从复制

1&#xff1a;实现主从复制这个过程我是趟过坑的&#xff0c;后面是自己动手搞了几遍都成功了以后才开始决定记录的&#xff0c;&#xff08;所以有的截图和上下文对不上的&#xff0c;比如说docker容器的名字对应不上&#xff0c;大家就用自己的就好&#xff09;&#xff0c;打…

“数据”对于仓库管理有多重要?!

仓库数据的重要性 做好仓库数据管理对企业的重要性不言而喻。通过有效地管理数据&#xff0c;企业可以更好地了解市场需求和库存情况&#xff0c;快速响应市场变化&#xff0c;提高库存周转率和客户满意度&#xff1b;此外&#xff0c;数据管理还可以帮助企业降低库存成本、减…