开源飞控初探:无人机技术栈
Posted hursing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源飞控初探:无人机技术栈相关的知识,希望对你有一定的参考价值。
自动驾驶
无人机的自动驾驶AutoPilot可从三个场景来理解:
指定目的地后让它自己飞过去,且可以指定途经点,整个流程即执行航线规划。这些点是三维的,即经纬度+海拔高度。
在水平面方向飞行时保持高度
让它悬停
第一个场景相对好理解,三维点只是比起日常用的高德地图多了高度这个维度。由于地球是个球体,当两个地球表面的点足够远时,例如广州和纽约,我们难以应用“两点之间直线最短”的方案来直接过去,因为不可能穿过地底。所以飞过去时无人机需要不低于一定高度,不能坠毁,然后才是像看平面地图一样按二维的经纬度计算不断靠近目标。
此时就需要结合第二个场景“保持高度”一同考虑了。无人机怎么知道自己的高度呢?靠这些部件。
气压(高度)计,得到海拔高度,即距离海平面的高度。不同海拔,气压强度是不同的。在三千米范围内,每升高12米,大气压减小大约133帕。
超声波传感器,在离地表5米内时,它的精度最高,得到的是离地距离。原理就跟雷达一样,发射超声波并接受反射,通过收发时间差和声波速度得到距离。
光流传感器。它配有摄像头,通过对比运动过程中的图像变化,得到不同方向的位移速度,再通过一定算法得到粗略的位移量。它应用了机器视觉(computer vision),原理可理解为类似于光学鼠标。
无人机会通过算法综合各种部件的数据来评估高度,并非靠单一部件。
自动驾驶的第三个场景“悬停”,就是俗话说的“不动”,但空中的“不动”需要考虑重力和风力。自动驾驶能让人不操控的情况下,保持经纬度和高度不变,也就是通过控制自身姿态和电机转速,抵消重力和风力的影响。如果单对抗重力,想人工控制螺旋桨转速来保持高度不变,还是有可能的,但面对不断变换速度和方向的风而言,人的反应速度不足以让经纬度变化幅度保持很小。
总结而言,无人机自动驾驶就是按预期目标自动调整姿态,而这是通过控制各个螺旋桨电机的转速实现的。更具体的场景请参考“飞行模式”一节。
其它部件
全球卫星定位系统GPS:在导航和定点时获取相关位置信息
加速度计:获取相对于机体坐标系的加速度
陀螺仪:飞行姿态感知
磁传感器:测量获取磁偏角。指南针,获取机头指向。
惯性导航单元:包含加速度计、角速度计(陀螺仪)和气压高度计。不依赖外界信息来定位的导航系统,就是惯性导航。GPS依赖卫星,没信号就导航不了,所以不属于惯导。
无线传输,可以是WiFi、4G、无线电、电台
主控芯片:接受传感器数据,处理计算后,通过电路控制电机转速。
主板:集成所有部件的电路板
螺旋桨和电机
电池
上文提到的所有部件的集合,即除支撑作用的机架外,整体被称为(广义上的)【飞控】!
地面站
地面站狭义是指PC上的Mission Planner或QGroundControl这两个软件。广义上则是个形象的称呼,所有在地面能遥控飞机的东西都算地面站。因为具有控制功能的代码做成了SDK可以集成到任意App上,所以实际上的地面站可以有很多种。主要功能有:无线电通信、航点规划(mission)、日志读取展示分析、地图、手柄控制等。
遥控器
无线电遥控器也是一种地面站,只是只有单纯的控制功能。遥控器的4个必备操作是控制无人机的偏航yaw、俯仰pitch、横滚roll和油门throttle。油门即电机转速,体现为飞行速度。yaw+pitch+roll三个角度值一起构成描述了无人机的姿态attitude。
【点击】=>pitch yaw roll是什么
飞行模式
这节对理解无人机操控较重要,请看参考资料。【点击】=>ArduPilot飞行模式介绍
列表式汇总: 飞行模式介绍。
切换到自动模式并解锁,如果飞控内保存有mission就会执行航线。
接口与协议
MAVLink,请参见第五章MAVLink协议和Java库 。
其它非无人机特有的总线、协议、接口,有CAN、串口转USB、数模转换等。
综合加深认知
请快速浏览一下这篇文章,可对前述内容加深认识。【点击】=>APM飞控完全教学指南
控制算法
这些算法都用于处理各种传感器的输入数据,从而得出对电机的调整数值,进而控制无人机姿态。
请看现成资料了,数学学得好的话这不算难:
卡尔曼滤波算法EKF,https://baike.baidu.com/item/EKF/9375021
曲线航线的算法——两点三次埃尔米特(hermite)插值算法,https://blog.csdn.net/BreederBai/article/details/98208325
编程语言
MAVLink的基础库生成是用python。飞控固件都是C++,有shell和lua脚本。Mission Planner是C#,QGroundControl是Qt C++。
参考资料
四旋翼飞行器6——光流传感器简介。这篇文章里有实物图
以上是关于开源飞控初探:无人机技术栈的主要内容,如果未能解决你的问题,请参考以下文章