首页 > 编程知识 正文

无人机飞控软件架构,无人机飞控三大算法

时间:2023-05-04 21:58:33 阅读:233388 作者:1112

一.无人机的分类

按飞行平台构型分类:无人机可分为固定翼无人机,旋翼无人机,无人飞艇,伞翼无人机,扑翼无人机等.


图1 无人机平台构型 多轴飞行器multirotor是一种具有三个以上旋翼轴的特殊的直升机。旋翼的总距固定而不像一般直升机那样可变。通过改变不同旋翼相对转速可以改变单轴推进力的大小,从而控制飞行器的运行轨迹.


图2 多轴飞行器


图3 各类变模态平台

二.无人机的系统架构


图4 无人机系统架构

三.飞控系统简介

导航飞控系统之导航子系统功能:向无人机提供位置,速度,飞行姿态,引导无人
机沿指定航线安全,准时,准确的飞行。
 获得必要的导航要素:高度,速度,姿态,航向
 给出定位信息:经度,纬度,相对位移
 引导飞机沿规定计划飞行
 接收控制站的命令并执行
 配合其它系统完成各种任务

1.飞控系统功能:

导航飞控之飞控子系统功能:完成起飞,空中飞行,执行任务,返航等整个飞行过
程的核习系统,对无人机实现全权控制与管理,是无人机的大脑。
 无人机姿态稳定与控制
 与导航子系统协调完成航迹控制
 起飞与返航控制
 无人机飞行管理
 无人机任务管理与控制
 应急控制

2.飞控系统--传感器:

 飞控系统常用的传感器包括:
 角速率传感器陀螺仪


图5 陀螺仪  加速度传感器


图5 加速计
 气压计和超声波


图5 声纳与气压二合一
 GPS


图6 GPS示意图  光流

从二维图像序列中检测物体运动、提取运动参数并且分析物体运动的相关规律
 光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”
 用于飞行器的动态定位和辅助惯性导航
 Lucas Kanade算法
这个算法是最常见,最流行的。它计算两帧在时间t到t + δt之间每个像素点位置的移动


图7 光流算法示意图
 地磁传感器


图8 磁力计

四.飞控系统的关键算法

1.关键算法流程框图


图9 关键算法流程框图

2.姿态解算

(1)init函数初始化,建立3x3矩阵R。
(2)磁力计修正,得到误差corr:先计算得到误差角度mag_er,再用_wrap_pi函数做约束,再计算corr值,相当于机体坐标系绕地理坐标系N轴(Z轴)转动arctan(mag_earth(1), mag_earth(0))度。
(3)加速度计修正更新误差corr:将陀螺仪计算得到的矩阵第三行(即重力加速度部分)转换到b系,再将加速度测得重力加速度(_accel - 机体加速度)的数据归一化(本身属于b系),将这两个的值进行叉乘即测得误差。具体过程:归一化的n系重力加速度通过旋转矩阵R左乘旋转到b系,即k为归一化的旋转矩阵R(b-e)的第三行,总的受到合力的方向(_accel)减去机体加速度方向(_pos_acc)得到g的方向,即总加速度(加速度获取)减去机体运动加速度(第五部分)获取重力加速度,然后姿态矩阵的不是行就是列来与纯重力加速度来做叉积,算出误差。因为运动加速度是有害的干扰,必须减掉。算法的理论基础是[0,0,1]与姿态矩阵相乘。该差值获取的重力加速度的方向是导航坐标系下的z轴,加上运动加速度之后,总加速度的方向就不是与导航坐标系的天或地平行了,所以要消除这个误差,即“_accel-_pos_acc”。然后叉乘z轴向量得到误差,进行校准 。
(4)对误差corr进行PI控制器中的I(积分),得到_gyro_bias,再对_gyro_bias做约束处理。
(5)使用修正的数据更新四元数,并把_rates和_gyro_bias置零便于下次调用时使用。


图10 姿态解算

3.姿态控制

3.1.姿态角度控制

【1】计算误差值e_R:
(1)获取目标姿态target,并构建目标姿态旋转矩阵。
(2)通过控制四元数获取当前状态的旋转矩阵DCM。
(3)取两个矩阵中的Z轴向量,即YAW-axis。
(4)计算roll,pitch误差,得到误差值e_R:通过R_z%R_sp_z叉乘当前姿态的z轴和目标姿态的z轴的误差大小(即需要旋转的角度)并旋转到b系(即先对齐Z轴)。
(5)计算yaw的权重.
(6)构造e_R_cp反对称矩阵,通过pghlg公式旋转得到roll,pitch旋转后的矩阵R_rp。
(7)计算yaw的误差,进一步更新误差值e_R:roll_pitch旋转后的矩阵的x轴和目标姿态的x轴的误差,乘上yaw的权重。
【2】计算e_R_d:
(1)目标姿态旋转矩阵获取四元数。
(2)对四元数的虚部取出赋值给e_R_d,再对其进行归一化处理。
(3)对四元数的实部取出。
(4)计算e_R_d:通过虚部与实部的一系列计算得来。
【3】计算direct_w
【4】进一步更新误差值e_R:通过e_R *  (1 - direct_w) + e_R_d * direct_w。
【5】得到_rates_sp角速度变量:对e_R进行p控制,再进行约束

3.2.姿态角速度控制

【1】获取当前角速度值rates:通过_ctrl_state数据结构(当前姿态信息)把需要的有效数据赋值给rates。
【2】获取目前角速度值_rates_sp。
【3】计算得到角速度差rates_err。
【4】对角速度差rates_err进行PD控制,还需要加一个前馈。
【5】发布控制量_att_control。


图11 姿态控制

CSS中div滚动条样式如何设置

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。