查看: 843|回复: 2

如何用开源飞控PIXHAWK进行开发

[复制链接]

35

主题

814

帖子

1619

积分

金牌飞友

Rank: 6Rank: 6

积分
1619
飞币
794
注册时间
2017-8-19
发表于 2022-11-12 07:46:15 | 显示全部楼层 |阅读模式
如何用开源飞控PIXHAWK进行开发

327

主题

373

帖子

1035

积分

金牌飞友

Rank: 6Rank: 6

积分
1035
飞币
653
注册时间
2017-7-10
发表于 2022-11-12 07:58:28 | 显示全部楼层
想快速开发一个飞控,那首先要做的是了解apm的各种参数配置,了解每个参数的影响和起作用的代码功能块,用apm适配自己的机型还是需要修改,优化,和裁剪。正如克里斯安德森说希望APM做无人机行业的安卓,但是安卓的性能也只能是差强人意,比无人机行业的IOS大疆创新来说还差很多。
飞控行业或者研究领域应用,例如开发测绘手机app,无人机送快递等等(倾向于demo性质)...这种应用不需要做一个飞控,首先大概了解飞控的原理,然后只要掌握apm的控制数据协议即可。
发烧级的爱好者或者开发者,迫切的想要了解apm的大部分算法和逻辑,这个真的需要较长的时间,大致的思路就是:底层驱动-》传感器数据和物理意义-》姿态解算-》PID控制器-》飞行模式切换-》参数调优(包含gps悬停刹车什么的很细但是影响手感和性能的参数)初学只是去看apm而不是自己动手去做很难搞懂,建议还是自己做飞控,哪怕复制apm部分功能代码,做飞控的学习顺序和读飞控一样,但对于apm这样一个系统工程相对来说模块更分立。

357

主题

395

帖子

1113

积分

金牌飞友

Rank: 6Rank: 6

积分
1113
飞币
711
注册时间
2017-7-20
发表于 2022-11-12 08:12:07 | 显示全部楼层
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。
既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,
如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;
另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表