登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
如何用开源飞控Pixhawk进行二次开发
返回列表
发新帖
查看:
650
|
回复:
2
如何用开源飞控Pixhawk进行二次开发
[复制链接]
danniker
danniker
当前离线
积分
1524
窥视卡
雷达卡
35
主题
762
帖子
1524
积分
金牌飞友
金牌飞友, 积分 1524, 距离下一级还需 1476 积分
金牌飞友, 积分 1524, 距离下一级还需 1476 积分
积分
1524
飞币
770
注册时间
2017-9-1
发消息
发表于 2022-10-23 14:35:38
|
显示全部楼层
|
阅读模式
如何用开源飞控Pixhawk进行二次开发
二次开发
,
开发
,
进行
,
飞控
,
开源
相关帖子
•
【报名】深圳PIXHAWK二次开发培训
•
无人机飞控技术,无人机飞行控制系统介绍,飞控系统硬件设计原理与实现方法
•
开源无人机技术前景如何?Dronecode 中国区负责人为你解读|北京源创会
•
解决 ELRS 接收机 SBUS 接F4 飞控 通电 进 DFU Bootloader 模式劫持 Jumper RC 自制 冒烟 牌 飞控
•
无人机飞控系统解析:如何实现精准姿态控制[保华润天航空无人机]
•
无人机飞控系统:技术原理与高级应用全解析![新疆无人机培训]
•
X6开源飞控四旋翼飞行大动作测试@1m轴距 即将上市,敬请期待
•
又有一款开源飞控来啦!零一科技X6飞控&OneGNSS定位模块如何呢
•
〖T.O.P.〗出场ArduPilot固件的多旋翼飞控,跟穿越机常见的bf飞控有哪些不同?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
bellyoungsmile
bellyoungsmile
当前离线
积分
1584
窥视卡
雷达卡
42
主题
801
帖子
1584
积分
金牌飞友
金牌飞友, 积分 1584, 距离下一级还需 1416 积分
金牌飞友, 积分 1584, 距离下一级还需 1416 积分
积分
1584
飞币
782
注册时间
2017-8-17
发消息
发表于 2022-10-23 14:41:22
|
显示全部楼层
以下所描述的都是针对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的控制流程;
px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
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 –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁
回复
支持
反对
使用道具
举报
照妖镜
kallfang
kallfang
当前离线
积分
1686
窥视卡
雷达卡
39
主题
845
帖子
1686
积分
金牌飞友
金牌飞友, 积分 1686, 距离下一级还需 1314 积分
金牌飞友, 积分 1686, 距离下一级还需 1314 积分
积分
1686
飞币
839
注册时间
2017-8-23
发消息
发表于 2022-10-23 14:52:58
|
显示全部楼层
Pixhawk一直再用来做项目,没有时间仔细研究代码,因为之前研究过一些无人机开源项目代码,其实大同小异。比如MWC,我之前曾经把里面的代码研一遍,并且进行多次开发,效果也不错。3DR的东西写的比MWC规范多了,应该是更好弄一些,我把之前研究其它开源项目的经验写一下把。 进入一个新的智能硬件开源项目,里面的程序架构是非常关键的,说白了也就是知道文件目录的意义。主文件,控制算法,姿态算法,导航算法,传感器接口,函数定义文件,程序配置文件,特殊变量定义文件等等,这些文件都有标准的名称,很容易区分,而且这些开源程序现在也规矩多了,文件说明也写的很清楚,外国开源项目不像中国某些项目“犹抱琵琶半遮面”,不肯写说明,或者故意写很多垃圾代码。老外放在github上的都很清晰。 弄懂这些就要找准自己二次开发的方向,想多加功能?减少功能?改变算法?然后,注意了,关键:::::::从主函数入手!就算你只是改动一个小地方,也要把主函数搞清楚,然后进入相关函数,或者文件位置进行二次开发。 我还记得自己前两年改MWC改完之后,发现新版竟然跟我改的一样,自己还有些得意,这些年没改代码都有些手痒了。
回复
支持
反对
使用道具
举报
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表