基础实验篇 | 飞控板载应用开发实验
导读
设计无人机的飞控是一个非常复杂的工程,想靠一个人或者小的团队设计出稳定成熟的飞控,难度是非常大的。开源飞控PX4的出现,为学术、爱好和工业团体提供一款低成本高性能的高端的自驾仪。本篇将详细介绍RflySim平台基于飞控PX4板载应用开发实验。
video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_2971554236729917441
PART.01
PX4软件系统简介
PX4由瑞士苏黎世联邦理工学院(ETH)计算机视觉与几何实验室的一个软硬件项目PIXHAWK演变而来,该飞控系统完全开源,为全球各地的飞控爱好者和研究团队提供一款低成本高性能的高端自驾仪。经过来自工业界和学术界的世界级开发人员多年的开发与完善,目前PX4飞控系统已经形成完善合理的软件架构,可支持单旋翼、多旋翼、飞艇等多种载具。官网链接为:https://docs.px4.io/main/zh/
PART.02
PX4软件框架
PX4 由两个主要部分组成:一是飞行控制栈(flight stack) ,该部分主要包括状态估计和飞行控制系统;另一个是 中间件 ,该部分是一个通用的机器人应用层,可支持任意类型的自主机器人,主要负责机器人的内部/外部通讯和硬件整合。所有的 PX4 支持的 无人机机型 (包括其他诸如无人船、无人车、无人水下航行器等平台)均共用同一个代码库。整个系统采用了 响应式(reactive) (opens new window)设计,这意味着:
所有的功能都可以被分割成若干可替换、可重复使用的部件。
通过异步消息传递进行通信。
系统可以应对不同的工作负载。
PART.03
RflySim平台的飞控固件编译环境部署
RflySim平台支持一键部署PX4软件环境,并支持卓翼和Pixhawk部分系列飞控硬件,编译界面如下图所示,可自定义选择不同的飞控编译命令和PX4固件版本,RflySim会将选定的PX4 Firmware源代码部署在设定的安装路径上,安装过程中,平台会自动识别所部署的固件类型,并进行全新部署。
RflySim平台安装成功后,可在Windows下是无法直接进行飞控固件编译,一般采取的方式是在Windows安装PX4固件编译所需的工具链,在PX4官网提供三种工具链分别是:Windows Cygwin 工具链、Virtual Machine工具链以及Bash on Windows工具链。RflySim平台所采用的方式为Bash on Windows工具链的方式,在平台安装时,默认Win10WSL子系统,无需用户进行自行配置。安装完成之后,在桌面生成的"*\桌面\RflyTools\Win10WSL.lnk"双击即可打开Win10WSL子系统,输入对应的飞控编译命令即可完成飞控固件的编译。如:
##若子系统的根目录未在平台固件安装目录下,需输入:cd/mnt/c/PX4PSP/Firmwaremake droneyee_zyfc-h7_default
PART.04
PX4 Firmware文件夹解析
PX4源码Firmware是一个内容庞大的文件夹,里面有许多的子文件夹,代表着不同的功能模块。文件夹结构如下图所示:
PX4的上层程序都是通过模块的形式来运行(类似于ROS里面的节点),每一个模块订阅和发布uORB信息。模块包括姿态解算、姿态控制、位置控制、命令处理(commander)等。例如:
attitude_estimator_ekf:采用EKF算法实现的姿态估计attitude_estimator_q: 使用mahony的互补滤波算法实现姿态解算。mc_att_control:即multi-copter attitude control,多轴飞行器的姿态控制算法实现,主要就是姿态的内外环PID控制,外环角度控制,内环角速度控制。mc_pos_control: multi-copter position control,多轴飞行器的位置控制算法实现,主要是位置的内外环PID控制,外环速度控制,内环加速度控制。commander: 整个系统的任务调度,包括命令处理、事件处理、飞行模式切换等。land_detector: 飞行过程中使用land模式降落或者落地时的落地监测部分,内部会监测Z轴速度和加速度等。local_position_estimator:常说的LPE算法实现位置解算。mavlink: 和地面站通信的通信协议,结合地面站QGC源码配合修改,或者仅仅调用mavlink内部的API接口,即可通过无线信号将所需的数据显示在地面站QGC上,此方法是一种实时监测目标数据的方法。logger: 关于log日志的读写函数。
PART.05
如何新建一个简单的PX4应用
RflySim平台安装完成之后,进入*\PX4PSP\Firmware\src\examples文件夹中新建my_app文件夹。
进入*\PX4PSP\Firmware\src\examples\my_app文件夹中新建文件my_app.c,文件代码如下:
/** * @file px4_simple_app.c * Minimal application example for PX4 autopilot * * @author Example User <mail@example.com> */
#include<px4_platform_common/log.h>__EXPORT intmy_app_main(int argc, char *argv[]);intmy_app_main(int argc, char *argv[]){for (int i = 0; i < 5; i++) { PX4_INFO("Welcome to RflySim!"); }return OK;}
同时,新建CMakeLists.txt文件,文件内容如下:
px4_add_module(MODULEexamples__my_appMAINmy_appSTACK_MAIN2000SRCSmy_app.cDEPENDS )
完成上述文件配置之后,打开*\PX4PSP\Firmware\boards\droneyee\zyfc-h7\default.cmake文件,在末尾添加:my_app,点击保存。
返回桌面双击打开Win10WSL子系统,运行如下指令:(注:此处所使用的飞控为卓翼H7飞控,使用不同飞控请注意区别编译指令)。
make droneyee_zyfc-h7_default
即可将上述所设计的应用编译完成,之后通过QGC进行上载如飞控中。等待烧录完成之后,连接QGC软件在Analyze Tools->Mavlink控制台中输入:
help //即可看到飞控内部运行的所有线程。my_app //即可看到上述所开发的应用程序输出信息。
PART.06
参考资料
. https://docs.px4.io/main/zh/. https://zhuanlan.zhihu.com/p/554225718.https://blog.csdn.net/weixin_47546390/article/details/108154547.https://blog.csdn.net/cillian_bao/article/details/116093680.https://blog.csdn.net/weixin_45031928/article/details/128805161
扫码关注我们
扫一扫
关注我
— 往期回顾 —
全新升级 性能加倍——智航无人机V330Plus新品发布
新品来袭丨Saber 210三角翼亮点十足
蜂巢航宇与北岭科技签署战略合作协议
页:
[1]