赞
踩
此篇blog的目的是对px4工程有一个整体认识,对各个信号的流向有个了解,以及控制算法采用的控制框架。
PX4自动驾驶仪软件可分为三大部分:实时操作系统、中间件和飞行控制栈。
1.NuttX实时操作系统
提供POSIX-style的用户操作环境(如printf(), pthreads,/dev/ttyS1,open(),write(),poll(),ioctl()),进行底层的任务调度。
2.PX4中间件
PX4中间件运行于操作系统之上,提供设备驱动和一个微对象请求代理(micro object request broker,uORB)用于驾驶仪上运行的单个任务之间的异步通信。Px4被3DR开源后,整个代码结构被⼤改,原先的系统被摒弃,进而采用Nuttx,但是核心思想没变-为了简化开发而采用牺牲部分效率的消息传递机制,这是Px4 与ArduPilot 最本质的差别。
3.PX4飞行控制栈
飞行控制栈可以使用PX4的控制软件栈,也可以使用其他的控制软件,如APM:Plane、APM:Copter,但必须运行于PX4中间件之上。
此部分又可分为
决策导航部分:根据飞行器自身安全状态和接收到的命令,决定工作于什么模式,下一步应该怎么做。
位置姿态估计部分:根据传感器得到自身的位置和姿态信息,此部分算法含金量最高,算法也相当多。
位置姿态控制部分:根据期望位置和姿态设计控制结构,尽可能快、稳的达到期望位置和姿态。
控制器输出部分:mixer和执行器,pwm限幅。
算法在Firmware/src/modules,驱动在Firmware/src/drivers
px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIO LED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
3.1决策
3.1.1 任务决策。以任务为导向,任务决策主要决定多旋翼下一步“去哪儿”,进一步,需要规划路径,使得整个过程能满足诸如:飞向航路点并沿航线飞,以及飞向航路点并避障等要求。
3.1.2 健康管理和失效保护。以安全为导向, 失效保护主要决定多旋翼下一步“去哪儿”。多旋翼飞行器在飞行前或飞行中,可能会发生通信故障、传感器失效和动力系统异常等,这些意外会直接导致控制任务无法完成。这一部分包括安全问题的介绍、机载设备的健康评估、机载设备的健康监测、失效后的保护建议。
传感器校正在commander里面
对应的程序在Firmware/src/modules/commander和Firmware/src/modules/navigator
完成任务模式切换,同时考虑电池电量、GPS等传感器是否正常工作等信息。
3.2位置估计和姿态估计
此部分需要大量理论知识,暂时还比较欠缺。
sensors是对陀螺仪、加速度计地磁计的一个处理
3.3位置控制和姿态控制
3.4pwm输出
3.4.1mixer
混合器输出定义控制器的输出是如何映射到电机和伺服输出。所有内置mixer文件位于ROM文件系统的/etc/mixers目录,并编译成固件。Mixer是一组独立的映射器,从控制读入写入,写入执行器输出。一个模块,结合一组根据预先定义的规则和参数的输入,产生一组输出。
如果为零,则输出就为零,Mixer输出的固定值是受限制的。
第二行定义了输出输出定标器和标量参数。虽然计算作为浮点运算进行的,存储在所述定义文件中的值是由10000倍缩放,-0.5偏移被编码为-5000.
该定义继续描述控制输入和缩放项:
S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>
这些值定义了控制组从那些定标器中读取数据,和该组内的值的偏移。是特定于设备读取Mixer的定义。
当用于混合车辆的控制,混合器组0是车辆姿态控制组,索引值从0到3通常分别是:roll,pitch,yaw,thrust。
具体详解见:https://pixhawk.org/dev/mixing?s[]=mixer
(3)多旋翼Mixer
在多旋翼混合器结合四个控制输入(roll,pitch,yaw,thrust)为一组用于驱动电机速度控制器制动输出。
Mixer定义的形式:
R: <geometry> <roll scale> <pitch scale> <yaw scale> <deadband>
参数解释:
机械:包括quad(4x,4+),hex(6x,6+),octo(8x,8+)
单独的roll,pitch和yaw控制因子
电机输出死区
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。