科普“智能导航”--整理自大疆工程师

2023-05-16

1.飞行器想要稳定飞行,需要15个状态量:三维角度,三维角度对应的三维速度、三维加速度、三维角速度,三维位置。

传感器的测量如下:


2.传感器自身的限制:

(1)惯性测量元件:会受到温度、制造工艺的限制,产生一些测量的偏差。这类测量的偏差需要比较仔细的算法进行修正,而且往往不能单靠惯性测量元件自己的测量完全消除。

(2)地磁指南针:地磁线的强度非常弱,很容易受到干扰。

(3)气压计:会受到温度、湿度、空气流速、光照、振动等因素的影响

(4)GPS:只有在开阔的空间内才能给出比较好的测量值,因为GPS接收机需要从天上的卫星获得信号,这些信号要从太空传入大气层,这么远的距离,信号已经相对来说很微弱,所以必须要求接收机和卫星之间的连线上没有遮挡,一旦有建筑甚至是树木的遮挡,卫星发下来的信号就有噪声,GPS接收机就不能给出很好的位置和速度观测。在室内环境中,GPS甚至完全不能使用。

(5)光流:只能测量维平面,离测量物体不能超过5米左右。

(6)视觉里程计:也就是单目和双目视觉,离测量物体不能超过5米左右。

3.组合导航技术

克劳德-香农总结归纳出:信息可以用来估计状态,越多的信息可以把状态量估计得越准。

控制论的奠基人诺伯特-维纳与其他一大批工程师和科学家完善了通过信息进行状态估计的线性估计理论,进一步提出了传感器之间互补滤波,共同减小误差的理论。在此基础上鲁道夫-卡尔曼提出了卡尔曼滤波器,在通信、控制工程和飞行器状态估计领域广泛使用。

因此,结合GPS、惯性测量元件、地磁指南针和气压计各自的优缺点,使用电子信号处理领域的很多技术,融合多种传感器的测量值,获得较为准确的飞行器十五个状态量的测量。

4.控制过程

悬停这件看起来是多旋翼飞行器最基本的能力来说,实际上飞行器的控制器在背后做了一系列串级控制在知道自己三维位置的基础上,控制自己的位置始终锁定在悬停位置,这里的控制量是一个目标的悬停速度,当飞行器的位置等于悬停位置时,这个目标悬停速度为0,当飞行器的位置偏离了悬停位置时,飞行器就需要产生一个让自己趋向悬停位置的速度,也就是一个不为零的目标悬停速度;飞行器要想控制自己产生目标悬停速度,就需要根据自己当前的三维速度,产生一个目标加速度;为了实现这个目标加速度,飞机需要知道自己的三维角度,进而调整自己的姿态;为了调整自己的姿态,就需要知道自己的三维角速度,进而调整电机的转速。

5.视觉感知

GPS可以令发散的IMU等传感器通过组合导航技术收敛,但在感知系统中没有GPS的的情况下需要另一个传感器替代GPS组成新的感知系统感知十五个状态量。

(1)光流:只可以测三维速度,不能直接测量三维位置。同样可以通过把光流测速模块测出的三维速度积分获得三维位置,但是就像惯性测量元件积分会发散一样,光流测速模块积分得到的位置也会发散。好在它不会天马行空地失去控制。和组合导航技术中除了GPS之外的传感器妥善融合之后,它可以做到悬停时测量的位置不发散。

(2)视觉里程计:相比光流测速模块,增加了直接测量位置的能力,所以才叫里程计。视觉里程计比光流测速模块能力更强,性能更好。视觉里程计算法复杂很多,它不仅要通过图像反推出视野中物体的平面运动,还要反推出这些物体的三维位置,并且基于这些物体的三维位置做很多次的优化计算,算法复杂度成倍于光流测速模块。有些视觉里程计的算法甚至包含完整的光流追踪的算法,但是仅仅把计算光流作为预处理图像的步骤。

视觉里程计能够直接测量位置,测量值也比较准确,不会像光流测速模块那样发散。通常比较优秀的视觉里程计飞100米之后只会积累十几厘米到几十厘米的误差

视觉里程计有几个不同层次的难度,最简单的是两个相机构成的双目立体视觉系统加惯性测量元件,最难的是一个相机构成的单目视觉系统加惯性测量元件。单目视觉系统和双目立体视觉系统两者对比起来,他们的算法难度差别很大。视觉里程计的算法关键点是前面说的通过连续的图像反推出视野中物体的三维位置对于和人眼结构类似的双目立体视觉系统,这一点比较容易,因为一个物体同时出现在左右两个相机的视野中时左右视野有视差,视差可以帮助解算物体的位置,只需要用简单的几何关系就可以实现,这已经是非常成熟的技术。但是对于单目视觉系统,只有一个相机就没有视差,没法做简单的几何关系的解算,所以算法必须能智能地在局部范围内同时估计很多个物体的位置,然后在自身移动过程中通过位置移动产生视差,然后进行多个物体的位置的最大似然估计,从而推算出这些物体比较准确的位置。这个过程包括很多个环节,大部分环节在学术界都没有公认最优的方案,因此还没有成熟的技术。

6.大疆的领先技术

(1)视觉方案:在精灵4上实现了双目立体视觉系统加惯性测量元件构成的视觉里程计,飞机上装了两套双目立体视觉系统,一套向前看,一套向下看,一共是四个相机。两套双目立体视觉系统都参与视觉里程计的计算。通常情况下以向下看的双目立体视觉系统为主,如果向下看的相机对着一些特征不明显的环境(比如纯色的地板、海面等等),感受不到什么图像变化,视觉里程计会自动切换到向前看的立体视觉系统做测量计算。虽然精灵4采用的都是较为成熟的机器视觉技术,但是由于精灵4上机载的计算量非常有限,大疆还是下了相当久的苦功去优化算法,并使用了Movidius公司制作的图像算法处理专用芯片,结合Movidius公司的图像处理算法库优化四路图像处理的性能。值得一提的是,不久就会面世的Google Project Tango也使用了Movidius公司的这款芯片。不过因为Movidius公司的芯片不包含视觉里程计的算法,所以Google的这款产品中视觉里程计的算法应该与精灵4的算法有较大差别。

两套双目立体视觉系统还带来了视觉里程计之外的两个好处:1.向下看的一套双目立体视觉系统可以探测下方地面上物体的三维位置,从而知道地面的距离;2.向前看的一套双目立体视觉系统可以用来探测前方场景中物体的深度,产生深度图进行障碍感知。深度图还可以用于重建一个飞行器周围的局部地图,以进行精细的运动规划,这就是精灵4指点飞行的基础,在这篇文章中不详细介绍了。

智能导航技术极大拓展了飞行器可以活动的空间,当有GPS的时候,系统可以通过GPS为主进行十五个状态量的测量,视觉里程计依然可以继续运作,提供额外的速度和位置的测量值进一步提高精度;GPS信号不好的时候,视觉里程计可以接替GPS为整个系统提供稳定的观测。智能导航系统中有三种确定高度的传感器:超声波、气压计、双目立体视觉,这三种传感器几乎可以覆盖所有让传统多旋翼飞行器头疼的定高场景:树丛上方、室内、靠近建筑的位置、大风环境等等。

地磁指南针的冗余设计可以很大程度上减小外部磁干扰带来的指南针故障。另外视觉里程计也能给出航向的观测,两者互补能够提高航向的观测精度。在以前的飞行器上,因为地磁指南针受到干扰造成的炸机问题比较多,在精灵4上因为有了多重保护措施,地磁指南针被干扰导致问题的概率大大降低。

有了智能导航系统之后,还需要有一套强有力的软件系统去组织导航算法和飞行控制算法。精灵4的飞控和最新推出的A3飞控类似,都是大疆第三代飞行控制器。2016年初开发完成的第三代飞控里加入了冗余传感器、双目立体视觉支持、避障功能和智能返航等功能。2014年底推出的第二代飞控里加入了光流测速模块支持、SDK、限飞区和新手模式等功能。大疆第一代飞控是汪滔自己写的,性能很不错,然后飞控组在过去的几年里做了两次比较大的飞控软件系统的重构,以支持更多的传感器和功能。

智能导航系统让精灵4在任何状态下都可以准确测量自身的三维位置和三维速度,这对实现多种功能都有非常重要的意义。

(2)避障:近年来,业界有很多关于避障应该使用双目立体视觉还是激光雷达传感器等传感器的争论。大疆选择了双目立体视觉的方案。相信随着科技的发展,在未来会不断有更多更好的新传感器诞生,很可能会有其他传感器代替双目立体视觉,但是实现稳定避障的关键不在于避障所使用的传感器。避障这个事件发生前后,飞行器机体一定会发生急刹车,整体会经历很大的姿态变化和加速度,在这种状态下,飞行器是否还能稳定地测量出自己的十五个状态量,才是最影响安全性的问题。

如果系统急刹车之后,整体的位置观测甚至速度观测都发散了,这时候飞行器有可能左右飘出去,还是会发生炸机。就算不炸机,避障之后飞机前后左右摇晃,也会给用户心理上造成不安全的感受,带来很差的用户体验。精灵4在很多严苛的情况下发生避障动作时,飞行器会自动锁定位置、速度迅速减0的状态,很快就可以从高速机动恢复到完全不动,非常稳定地悬停,避免了在障碍附近不稳定活动引起炸机。

(3)多种场景的适应:

场景一:在十几层楼的窗口把飞行器从室内飞到室外悬停

这种场景下,从窗口穿出时,向下看的传感器几乎马上全部失效,由于有建筑的遮挡,GPS也不会立刻生效,因此传感器系统不够稳健的飞行器有可能因为失去速度和位置的测量而飘到建筑上造成高空炸机。而精灵4则能够通过前视双目视觉系统的观测,在向下看的传感器都暂时失效时继续运行视觉里程计,及时提供辅助的速度和位置观测,避免造成无法控制速度和位置导致炸机的情况出现。

场景二:在航拍时,GPS被遮挡

比如在树木茂密的峡谷里航拍,经常出现的情况是飞行器放在地面上时接收不到GPS信号,如果稳定飞到几十米的高度就可以接收到了。在这些临界情况下起飞和降落非常危险,如果要保证飞行器在升降过程中都能保持稳定的状态,飞行器必须能够在GPS和视觉里程计之间无缝转换,这样才能让用户放心地起降。如果用户从高处下降到低处GPS突然没有了,而视觉里程计没有及时补上,飞机失去位置和速度观测之后就变得非常难操控,就有可能撞在树丛上。在这些情况下光流测速模块效果是不是也一样呢。我们前面说过光流测速模块的算法有很多简化的假设,尤其是被观测的物体必须处于同一个平面这样的假设,使得光流测速模块在树丛上方、地势变化较大的空间上方,都表现非常糟糕,并不能满足户外航拍的需求。虽然视觉里程计计算量庞大,但它是比光流测速模块更加实用有效的方案。

(4)遥控器杆量转化成飞行器的速度指令

第二代的大疆飞控使用的是遥控器杆量转化成飞行器的加速度指令,而第三代的大疆飞控在精灵4上变成了遥控器杆量转化成飞行器的速度指令。在精灵3、大疆的前代飞行器以及很多无人机产品上,如果你推遥控器满杆前进,飞行器会以一个固定的角度加速飞出去,直到加速度被空气阻力抵消,这样控制并不直观,所以新手很难操作飞行器;而在精灵4上,如果你推遥控器满杆前进,飞行器会自己调整到一个固定的速度上,直接操控速度显得非常直接,以往,让飞行器保持匀速飞行是只有专业飞手才能做到的事情,现在则真真正正地让普通人也能触手可得。遥控器杆量改动也显示了大疆对自己智能导航系统提供的稳定的三维速度测量的信心。(这点px4也已经实现)

7.一套完整、可靠的传感器系统是一点一滴积累起来的,新传感器必须和已有的组合导航系统在硬件和软件上仔细融合,才能真正发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

科普“智能导航”--整理自大疆工程师 的相关文章

  • 当面试官问 promise 的时候,他们希望听到什么(一)

    基础知识 1 同步回调和异步回调的区别 同步回调 理解 立即执行 完全执行完了才结束 不会放入回调队列中 例子 数组遍历相关的回调函数 Promise 的 executor 执行器函数 异步回调 理解 不会立即执行 会放入回调队列中将来执行
  • 当面试官问 promise 的时候,他们希望听到什么(二)

    目录 前言 一 前提知识 1 JS 单线程机制 2 JS 任务队列与事件循环 3 Promise 回顾 二 题目实战 1 开头提到的题目 2 稍有难度 3 挑战升级 前言 上一篇文章 xff0c 当面试官问 promise 的时候 xff0
  • JS 防抖与节流的原理分析和代码手写

    目录 前言 作用 防抖 使用场景 分析原理 手写代码 节流 使用场景 原理分析 手写代码 小补充 前言 前一段时间 xff0c 我学习了 JS 的防抖与节流 xff0c 自认为掌握住了它们 xff0c 当我在做面试题的时候 xff0c 遇到
  • ELK-日志收集系统在Centos上环境安装

    ELK 日志收集系统在Centos上环境安装 文章目录 ELK 日志收集系统在Centos上环境安装 前言安装elastcsearch6 5 4安装准备学习资料启动创建新用户取掉只能本机访问的配置配置跨域访问启动命令测试 安装分词ik安装e
  • Linux环境下下载pydicom

    Linux中只要使用命令即可 sudo pip install pydicom 如果出现sudo xff1a pip xff1a command not found 把sudo去掉 xff0c 再操作一次 因为在执行Linux命令时 xff
  • C语言编程实现汉诺塔问题

    C语言编程实现汉诺塔问题 1 首先解释一下 xff0c 汉诺塔问题 xff1a 古代梵塔内有A B C3个座 xff0c 开始时A座上面有64个盘子 xff0c 盘子大小不等 xff0c 大的在下 xff0c 小的在上 一个老和尚想把64个
  • ORA-28000: the account is locked

    原因 xff1a Oracle账户多次以错误密码登录 xff0c 导致数据库服务器宕机 xff0c 账户被锁定 以系统账户sys 登录Oracle xff0c 查看sql SELECT FROM DBA PROFILES WHERE RES
  • Docker镜像编译方式

    1 普通Dockerfile的缺点 我们通常情况下要编译Spring Boot的Docker镜像 xff0c 一般会写一个下面这样的Dockerfile FROM openjdk span class token operator span
  • Python入门第一章笔记 从安装到编写hello world

    1 下载Python安装包 xff1b 可以到官网下载 xff1a https www python org 但是如果没有翻墙的话 xff0c 下载会很慢 25M安装包 xff0c 需要1个小时以上 如果没有耐心等可以在csdn进行下载 x
  • 养老产业政策链接

    江西省养老政策文件 xff1a 江西省养老服务条例 http mzw ganzhou gov cn gzsmzjy c103172 202201 d238525b35bb47b49b3de312c9b63a60 shtml 南昌市养老服务体
  • 我多变的2013

    我多变的2013 第一篇 xff1a 回顾 回顾工作 首先简单的做个自我介绍吧 xff0c 我是87年的 xff0c 北漂已经是第5个年头了 xff0c 一直都从事java开发工作 前后只换过一家公司 xff0c 第一家待了近两年 xff0
  • 我花1200大洋所学的“元学习课”究竟学了些什么?

    我花1200大洋所学的 元学习课 究竟学了些什么 xff1f 讲课的是台湾的一位大牛名叫Xdite xff0c 以及亿万富豪李笑来 能够跟牛人学习怎么学习我想应该不会有错吧 xff0c 对我来说这次做的应该是一次正确的决定 xff0c 所谓
  • 成长记录-开启我的新生 (2016-12-06)

    真的是很惊险 xff0c 我差一点就错过了 获得新生 的机会 xff0c 我在蜻蜓音频中听到了逻辑思维 xff0c 从逻辑思维中了解到了 得到 xff0c 从 得到 中订阅了吴军博士的 硅谷来信 xff0c 却在过去的好几个月里 xff0c
  • 最新Java电子书

    最新Java电子书 JAVA参考大全 J2SE 5EDITION 世界级程序设计大师作品 Thinking in Java第三版 43 第四版 xff08 中文版 43 习题答案 xff09 Java数据库高级编程宝典 Java核心技术第八
  • ELK-ElasticSearch权威指南笔记

    ELK ElasticSearch笔记 文章目录 ELK ElasticSearch笔记 前言测试工具 语法索引 xff0c 文档和类型文档元数据检索索引里文档数据查看当前节点的所有 Index查看所有index的mapping 映射 查看
  • 关于JAVA中内存溢出的解决办法

    关于JAVA中内存溢出的解决办法 J2ee应用系统是运行在J2EE应用服务器上的 xff0c 而j2ee应用服务器又是运行在JVM上的 xff0c 生成环境中JVM参数的优化和设置对于J2EE应用系统性能有着决定性的作用 要优化系统 xff
  • ireport的使用总结

    ireport的使用总结 截图居然都没显示出来 xff0c 如有需要可以到 xff08 http download csdn net detail czp0608 4140640 xff09 下载 相信很多java程序员们 xff0c 在开
  • 卡尔曼滤波C代码分析

    文章下载地址 xff1a http wenku baidu com view 3c42b7733186bceb18e8bb29
  • 作为一个新人,怎样学习嵌入式Linux?

    作为一个新人 xff0c 怎样学习嵌入式Linux xff1f 被问过太多次 xff0c 特写这篇文章来回答一下 在学习嵌入式Linux之前 xff0c 肯定要有C语言基础 汇编基础有没有无所谓 就那么几条汇编指令 xff0c 用到了一看就

随机推荐

  • pixhawk启动脚本分析

    Nuttx系统启动是由ardupilot mk PX4 ROMFS init d里的rcS和rc APM完成的 笔者阅读了rcS和rc APM xff0c 该脚本类似C语言 xff0c 并做了相关注释 主要是一些设备自检 xff0c 启动各
  • pixhawk ArduPilot_main启动与运行分析

    上节分析 2 个系统启动脚本 xff0c 一个是 ardupilot mk PX4 ROMFS init d 里的 rcS xff0c 另一个是 rc APM xff0c 这个脚本在 rcS 里得到了调用 xff0c 也就是说 xff0c
  • pixhawk make文件分析

    由于笔者没学过Linux等系统 xff0c 对make文件所知甚少 xff0c 本节分析可能有大量错误 xff0c 只提供参考 xff0c 随着技术积累 xff0c 以后会回过头改正错误的地方 xff0c 也非常欢迎提出指导意见 其中分析大
  • pixhawk 从main开始分析传感器数据如何流动起来,以GPS为例

    void Copter loop scheduler run time available gt MAIN LOOP MICROS 0u time available 本文以GPS数据为代表 xff0c 分析数据如何从硬件驱动层慢慢的流到主
  • pixhawk uORB初步分析

    再次编辑 xff0c 因为发现大神的解析 xff0c 添加在最后 xff0c 若一般人我不告诉他 根据自己理解画的流程图 xff1a xff08 2016 05 29加 xff09 由于上节分析GPS涉及到AP GPS PX4 read函数
  • pixhawk硬件构架

    1 Phxhawk连接线路 2 Phxhawk硬件芯片列表 处理器 STM32F427 VIT6 168 Mhz 256 KB RAM 2 MB 闪存 100Pin 32位 STM32F100C8T6 xff08 48Pin xff09 故
  • ELK-日志收集工具nxlog

    ELK 日志收集工具nxlog 文章目录 ELK 日志收集工具nxlog 前言安装语法宏变量 通用模块指令格式Module 模块名FlowControlInputType 指定输入类型OutputType xff1a 指定输出类型Exec
  • pixhawk原生码rcS分析

    代码执行流程 1 编译时将 cmake configs nuttx px4fmu v2 default cmake 文件中配置的模块全部编译并烧写到固件中去 2 地面站的配置会在 flash 中生成 fs mtd params 文件 xff
  • pixhawk win编译环境搭建

    经过笔者亲自试验搭建win编译环境 xff0c 试验成功 xff0c 以下为具体步骤 问题和解决方案 其实Linux下编译会快很多 xff0c 对于后期开发会缩短等待编译的时间 xff0c 正在尝试搭建Linux编译环境 1 pixhawk
  • pixhawk PX4FMU和PX4IO最底层启动过程分析

    首先 xff0c 大体了解PX4IO 与PX4FMU各自的任务 PX4IO STM32F100 为PIXHAWK 中专用于处理输入输出的部分 输入为支持的各类遥控器 PPM SPKT DSM SBUS 输出为电调的PWM 驱动信号 它与PX
  • pixhawk 姿态与控制部分的记录

    此篇是把之前看到的资料总结整理一遍 xff0c 大部分是搬砖 xff0c 也加入了自己的一点思考 xff0c 写的过程中晕了好多次 xff0c 先大体记录下来 xff0c 肯定有错误 xff0c 日后再改正吧 关于pixhawk程序执行流程
  • pixhawk 光流--位置估计--姿态估计--位置控制--姿态控制

    本文是边分析边写的 xff0c 顺便就记录下了分析的思路 xff0c 并不是按照教材那种思路介绍性的 xff0c 而是按照程序员分析程序的思路来的 所以读者跟着看有些地方看了意义不大 xff0c 但是这种程序分析的思路还是可以借鉴的 xff
  • pixhawk 整体架构的认识

    此篇blog的目的是对px4工程有一个整体认识 xff0c 对各个信号的流向有个了解 xff0c 以及控制算法采用的控制框架 PX4自动驾驶仪软件 可分为三大部分 xff1a 实时操作系统 中间件和飞行控制栈 1 NuttX实时操作系统 提
  • pixhawk mc_pos_control.cpp源码解读

    好久没跟新blog了 xff0c 这段时期边调试边看程序 xff0c 所以有点慢 要开始着手调试了 这篇blog是顺着上一篇pixhawk 整体架构的认识写的 xff0c 接下来看程序的话 xff0c 打算把各个功能模块理解一遍 xff0c
  • pixhawk position_estimator_inav.cpp思路整理及数据流

    写在前面 xff1a 这篇blog主要参考pixhawk的高度解算算法解读 xff0c 并且加以扩展 xff0c 扩展到其他传感器 xff0c 其实里面处理好多只是记录了流程 xff0c 至于里面实际物理意义并不是很清楚 xff0c 也希望
  • 调试记录(一)pixhawk参数设置的问题

    一 光流模式进入不了 1 xff0e 网上下载的固件 xff0c 进入定点模式 xff0c qgc显示 拒绝 烧写自己编译的固件定高和定点都 拒绝 并且按照 xff08 源码解读 xff09 position estimator inav
  • 卡尔曼算法笔记---思想和实际应用物理含义的理解

    此片blog的目的是理解卡尔曼算法的思想和实际应用的物理含义 xff0c 想法很好 xff0c 却只能理解冰山一角 xff0c 先记下这一角 另本blog参考卡尔曼滤波 从推导到应用和徐亦达卡尔曼推导视频 首先认识卡尔曼算法在数学领域是什么
  • ELK-LogStash6.5.4

    ELK LogStash6 5 4 前言 与Elasticsearch Kibana不同 xff0c Logstash默认并不作为系统服务安装 xff0c 我们也不建议作为服务启动 主要原因为 xff1a 大多数情况下 xff0c Elas
  • pixhawk博客导读

    写的东西有点多 xff0c 写的也有点乱 xff0c 看题目也不知道内容是什么 xff0c 为了方便网友观看自己感兴趣的地方 xff0c 笔者把pixhawk博客归类一下 由于笔者也是边学习边写的 xff0c 难免有错误 xff0c 还请多
  • 科普“智能导航”--整理自大疆工程师

    1 飞行器想要稳定飞行 xff0c 需要 15 个状态量 xff1a 三维角度 xff0c 三维角度对应的三维速度 三维加速度 三维角速度 xff0c 三维位置 传感器的测量如下 xff1a 2 传感器自身的限制 xff1a 1 惯性测量元