Pixhawk原生固件PX4之顶层软件结构
来源:互联网 发布:网络时间在线 编辑:程序博客网 时间:2024/05/29 11:14
欢迎交流~ 个人 Gitter 交流平台,点击直达:
下图所示为PX4的软件顶层架构,很重要。
左边是整个飞控系统的控制功能实现
用户通过地面站或者遥控器发出模式切换以及摇杆操作对飞行器进行控制,
commander
根据飞行器的当前状态对用户想要切换到的状态main_state
进行判断:是否能够切换到目标状态,确定最终状态。stickmapper
见名知意,摇杆映射,参见px4io.c
、sensors.cpp
navigator
决定飞行器最终会怎么做nav_state
位置控制提取
local postion
(光流+IMU)或global postion
(GPS)数据根据导航状态进行串级PID控制。外环输入位置差输出速度,内环输出推力。位置控制靠状态控制实现,采用倾转分离的解耦合控制方式,先对齐Z轴再对齐偏航角。同样采用串级PID的控制方式,外环输入姿态角误差,输出姿态角速率,内环最后输出所需的力矩。
mixer
混控器根据机型进行力矩分配。根据叶素理论,螺旋桨旋转产生的s升力/扭矩与转速的平方以及拉力系数/扭矩系数相关。构造力矩分配矩阵。驱动电机,控制飞行器飞行。
右边是位姿估计算法的实现
GPS
确定global postion
,optical flow
确定local postion
,二者有其一才能进入到POSCTL
模式。姿态估计是一切的基础,通过融合惯性传感器(和光流)各自优点解算出飞行器的当前姿态信息。
整个飞控内部的通讯通过uORB实现
PX4软件系统飞控内部通讯由uORB中断请求处理器实现,飞控与地面站的通讯全部走MAVLink,uORB中话题的结构体与MAVLink消息的结构体一一对应,数据的传递参看mavlink实现模块。下图所示为PX4软件系统中各部分时间的联系,通过uorb.
对应uORB的话题发布者,两件事:公告(advertise)、发布(publish);对于话题接收者,三件事:订阅(subscribe)、查询(poll阻塞式等待或check更新)、复制(copy)。
牢牢记住此图
By Fantasy
- Pixhawk原生固件PX4之顶层软件结构
- Pixhawk原生固件PX4之offboard
- Pixhawk原生固件PX4之SITL软件在环仿真
- Pixhawk原生固件PX4之SITL软件在环仿真
- Pixhawk原生固件PX4之常用函数解读
- Pixhawk原生固件PX4之添加uORB主题
- Pixhawk原生固件PX4之commander函数
- Pixhawk原生固件PX4之自定义MAVLink消息
- Pixhawk原生固件PX4之串口读取信息
- Pixhawk原生固件PX4之MAVLink协议解析
- Pixhawk原生固件PX4之正确显示log时间
- Pixhawk原生固件PX4之调节怠速
- Pixhawk原生固件PX4之TAKEOFF的启动流程
- Pixhawk原生固件PX4之驱动ID
- Pixhawk原生固件PX4之SPI驱动注册过程
- Pixhawk原生固件PX4之MPU6000驱动分析
- Pixhawk原生固件PX4之日期时间的确定
- Pixhawk原生固件PX4之添外置传感器MPU6500
- java--08--多线程(三)
- 2016 EC-Final Problem D. Ice Cream Tower(二分+贪心)
- codeforces 672D D. Robin Hood (二分+思维)
- EJBCA简介
- 蓝桥杯算法提高 矩阵乘法
- Pixhawk原生固件PX4之顶层软件结构
- C++反射机制的实现
- Redis主从复制机制
- CSS经验和技巧
- 数据成员初始化,函数重载
- 104. Maximum Depth of Binary Tree
- viewPager来实现fragment滑动效果
- 快讯:中央巡视组进驻北京大学公告
- 004.双链循环线性表C实例