目录

序:项目整体嵌入式架构:

无人机方面做嵌入式编写的飞控总结

1软件:

2硬件:

1 PX4/Pixhawk的软件体系结构

2、下图所示为PX4的算法顶层架构。

左边是整个飞控系统的控制功能实现

右边是位姿估计算法的实现

整个飞控内部的通讯通过uORB实现

3.涉及内容


序:嵌入式项目整体架构:

无人机方面做嵌入式编写的飞控总结

首先这部分分为软件(驱动层+操作系统与中间件+功能模块(算法栈&其它))和硬件(主控,模组,电源)

1软件:

  1. 最基础的驱动开发(iic,spi和uart)解出传感器的原始数据(要记住传感器测量的数值不是真实值);
  2. 对传感器的数据进行处理的几种方法(即算法--在飞控里面主要是经过处理之后得到位置/速度估计和姿态估计,可能需要障碍估计等等,这需要知道 姿态算法,ekf,ukf,Ins+gps+ekf组合导航算法 等待);
  3. 得到估计值就可以做PID控制了(包括姿态控制pid和导航运算pid);
  4. 飞行平稳就能让飞机去做自己的执行任务(这部分可能是巡线航测航拍,农业植保,电力巡检等等---这其中就设计拍照控制,电子围栏设定,电池管理等等......)  ---- 而这就需要手机app或者电脑的软件的支持。。。。等等。。。

所有,这是第一张图最基本的逻辑;

2硬件:

应该是要用的模块化的思想(硬件必备最基本的四大件:GPS模块,飞控模块,imu模块,电源/led模块

除了四大模块之外,按自己所需的,可以开发osd,光流等等。。。毕竟一旦量产,节省都是钱

        除了飞控和其电路,还要知道云台的调试和使用,结构如何设计。。。。。

1 PX4/Pixhawk的软件体系结构

PX4/Pixhawk的软件体系结构主要被分为四个层次,这可以让我们更好的理解PX4/Pixhawk的软件架构和运作:

  1. bsp:提供硬件驱动程序
  2. RTOS: 提供内核+组件(IO设备管理框架,网络,UAVCAN和故障安全系统)。
  3. 中间件与基本库: 这一层包含了所有的系统库和基本交通控制的函数。
  4. 应用程序框架: 这是为操作基础飞行控制的默认程序集(节点)。
  5. 应用程序的API:这个接口提供给应用程序开发人员,此API旨在尽可能的精简、扁平及隐藏其复杂性。

2、下图所示为PX4的算法顶层架构。

我们可以将上图从中间分成两个看

        其中右边为传感器采集(GPS、optical_flow、inertial_sensors)回来的数据并经过一些处理(position_estimator、attitude_estimator)发布到msg消息中供左侧控制程序订阅使用。

position_estimator是当前位置,attitude_estimator是当前姿态;LPE和EKF2融合了两个估算;三选一即可

​ px4的控制部分程序,采用的是分层设计。

  1. 用户设定commander和stickmapper(摇杆映射,RC)生成控制命令
  2. 控制命令使navigator去生成期望的位置信息
  3. pos_ctrl通过期望位置与实际位置的偏差使用PID的算法输出期望姿态信息
  4. att_ctrl通过期望姿态信息与实际姿态信息使用PID输出控制信息
  5. 最后经过混控器mixer根据机型进行力矩分配然后经过motor_driver输出实际舵面控制的pwm占空比。(eg四旋翼:最后通过mixer和motor_driver控制4个电机)

左边是整个飞控系统的控制功能实现

  1. 用户通过地面站或者遥控器发出模式切换以及摇杆操作对飞行器进行控制,commander根据飞行器的当前状态对用户想要切换到的状态main_state进行判断:是否能够切换到目标状态,确定最终状态。stickmapper见名知意,摇杆映射,参见px4io.csensors.cpp
  2. navigator决定飞行器最终会怎么做nav_state
  3. 位置控制提取local postion(光流+IMU)或global postion(GPS)数据根据导航状态进行串级PID控制。外环输入位置差输出速度,内环输出推力。
  4. 位置控制靠姿态控制实现,采用倾转分离的解耦合控制方式,先对齐Z轴再对齐偏航角。同样采用串级PID的控制方式,外环输入姿态角误差,输出姿态角速率,内环最后输出所需的力矩。
  5. mixer混控器根据机型进行力矩分配。根据叶素理论,螺旋桨旋转产生的s升力/扭矩与转速的平方以及拉力系数/扭矩系数相关。构造力矩分配矩阵。
  6. 驱动电机,控制飞行器飞行。

右边是位姿估计算法的实现

  1. GPS确定global postionoptical flow确定local postion,二者有其一才能进入到POSCTL模式。
  2. 姿态估计是一切的基础,通过融合惯性传感器(和光流)各自优点解算出飞行器的当前姿态信息。

整个飞控内部的通讯通过uORB实现

PX4软件系统飞控内部通讯由uORB中断请求处理器实现,飞控与地面站的通讯全部走MAVLink,uORB中话题的结构体与MAVLink消息的结构体一一对应,数据的传递参看mavlink实现模块。下图所示为PX4软件系统中各个模块之间的数据流,通过uorb.

对应uORB的话题发布者,两件事:公告(advertise)、发布(publish);

对于话题接收者,三件事:订阅(subscribe)、查询(poll阻塞式等待或check更新)、复制(copy)。

3.涉及内容

• 1.传感器驱动编写&地面站上位机的使用
  最基本的协议:UART、I2C,SPI、CAN…

•2.滤波算法和估计算法 : ekf,ukf,Ins+gps+ekf组合导航,
  KF-Kalmanfilter卡尔曼滤波

  EKF-ExternKalmanFilter扩展卡尔曼滤波

•3.姿态算法:
  坐标系统+EKF+一阶隆格库塔+欧拉角

•4.Pid控制算法
    位置-速度双环串级控制
        位置-速度-加速度三环串级控制

•5.导航级pid-任务规划和控制

6地面站开发:

app:eg.tower去谷歌框架、视频融合…

pc上位机:eg.mp界面修改和简化,协议的修改…

7、开源飞控功能开发:

  航线规划、自拍、航测、电子围栏、建模

(27条消息) PX4:【系统架构】_MangoGZH 的博客-CSDN博客_px4架构

(27条消息) 作为无人机方面做嵌入式编写的飞控总结0_xiaoxilang的博客-CSDN博客_无人机飞控开发心得

(25条消息) PX4二次开发——PX4程序架构_多谱hhhh的博客-CSDN博客_px4飞控二次开发

(25条消息) PX4飞控之导航及任务架构_Felix_ZL的博客-CSDN博客

PX4项目学习::(一)项目架构相关推荐

  1. TheBeerHouse 网站项目学习笔记(5)---架构设计

    前述讨论:    TheBeerHouse 网站项目学习笔记(1)----换肤技术                     TheBeerHouse 网站项目学习笔记(2)----个性化管理      ...

  2. 前端进阶:跟着开源项目学习插件化架构

    一.微内核架构简介 1. 1 微内核的概念 微内核架构(Microkernel Architecture),有时也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的 ...

  3. scratch项目学习计划

    scratch项目学习计划 项目名称:弹球游戏 项目周期:7月6日-7月24日 开发工具:scratch 开发环境:win10.scratch3.0 项目燃尽图: 学习项目于7月6日开始,每日按照项目 ...

  4. JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门

    JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门 可以用于课程设计.毕业设计的知识点入门学习 提示:此资源仅用于javaweb网 ...

  5. 物流快递系统前、后端+Java语言+SpringBoot项目+MVC三层架构+maven+Mysql+Tomcat+可以用于学习SpringBoot项目入门

    物流快递系统前.后端+Java语言+SpringBoot项目+MVC三层架构+Mysql+Tomcat+可以用于学习SpringBoot项目入门 可以用于课程设计.毕业设计的知识点入门学习 提示:此资 ...

  6. 猛增 110K Star!年增长数最多的 10 大顶级前端学习资源项目!

    https://risingstars.js.org/2019/en 大家好,我是你们的 猫哥,那个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 关于猫哥,大家可以看看我的年终总结 前端工程师的 2020 年 ...

  7. 《开源思索集》一如何更有效地学习开源项目的代码?

    本节书摘来异步社区<开源思索集>一书中的第2章,第2.1节,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. 如何更有效地学习开源 ...

  8. 如何学习开源项目及Ceph的浅析

    摘要:开源技术的学习和采用确实存在着一定门槛,然而学习各种开源项目已经成为许多开发者不可回避的工作内容.那么,对于类似OpenStack的大型开源项目,开发者该如何着手,这里我们看章宇的分享. [编者 ...

  9. 项目学习 - 收藏集 - 掘金

    一款开源的视频直播项目 --EvilsLive - Android - 掘金 项目介绍 EvilsLive 是一个视频直播件开发工具包(SDK), 目前只支持 Android, 主要负责视频直播的采集 ...

  10. 2020 年,开启现代库的基建学习 —— 从项目演进看前端工程化发展

    这篇文章想重点来和大家聊一下「现代库编写」的话题,相信技术和思维上,对你会有启发. 库,不仅是能用 国庆长假已过,2019 年进入最后一个季度,前端技术和解决方案每时每刻在确立着新的格局.「如何写好一 ...

最新文章

  1. 为啥led灯用一年后暗了很多_有些人日间车灯可以关为啥偏偏不关?是要告诉别人他的车好吗?...
  2. Android 数据库之Cursor
  3. linux按函数数字大小排序,linux awk 数组排序多种实现方法
  4. 全球农业发展中国方案-国际农民丰收节贸易会:榜样力量
  5. 协议层次及其服务模型
  6. 两台机器做互相信任 scp不使用密码
  7. 2. with check option能起什么作用?_家装要选择第三方装修监理吗?为什么?
  8. WordPress 4.8.2 升级维护版本发布
  9. mysql的乘号_SQL语句中的乘号
  10. “你在哪里上班?”“呵呵呵!”
  11. Python多线程编程的一个掉进去不太容易爬出来的坑
  12. windows运行linux系统,coLinux:在Windows运行Linux系统(教程)
  13. 雪碧图PHP,Css Sprite(雪碧图、精灵图) - SegmentFault 思否
  14. 【转】VS2013 产品密钥 – 所有版本
  15. 孪生网络 Siamese Network
  16. 端口扫描php,PHP实现在线端口扫描
  17. [python]-asyncio异步通信之websockets
  18. spwm matlab仿真,H桥逆变器SPWMMATLAB仿真
  19. Linux(九、十)文件权限及网络配置管理
  20. linux pthread_cleanup_push 线程实现,线程清理(pthread_cleanup_push函数和pthread_cleanup_pop函数)...

热门文章

  1. R计算 地理集中指数
  2. #附文件#《2022年期刊分区表》最新完整版已更新!
  3. SVN客户端使用教程
  4. HTML实现好看的登录注册页面
  5. 张正友相机标定(全流程,含畸变,matlab源代码解析)
  6. (1)课程简介-CS231A:Computer Vision, From 3D Reconstruction to Recognition
  7. 软件测试(十五)—— Web专项测试
  8. java中几种读取配置文件的方法
  9. oracle异常抛出,ORACLE 存储过程异常捕获并抛出
  10. CadenceAllegro16.6绘图软件使用四