登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
如何用开源飞控Pixhawk进行二次开发
返回列表
发新帖
查看:
636
|
回复:
2
如何用开源飞控Pixhawk进行二次开发
[复制链接]
danniker
danniker
当前离线
积分
1501
窥视卡
雷达卡
33
主题
752
帖子
1501
积分
金牌飞友
金牌飞友, 积分 1501, 距离下一级还需 1499 积分
金牌飞友, 积分 1501, 距离下一级还需 1499 积分
积分
1501
飞币
758
注册时间
2017-9-1
发消息
发表于 2022-10-23 14:35:38
|
显示全部楼层
|
阅读模式
如何用开源飞控Pixhawk进行二次开发
二次开发
,
开发
,
进行
,
飞控
,
开源
相关帖子
•
当代辣鸡大学生自组ZD680无人机起飞降落踩过的坑以及学习心得(NAZA飞控)
•
ArduPilot二次开发零基础教程(十):添加自定义MAVLINK消息和QGC通信
•
PX4二次开发快速入门(八):自定义mavlink消息和QGC通信
•
司南SNF飞控-LTE铁骑Y3垂起教程 下篇 PID调参教程 内容适用于所有飞控 0基础也能看
•
【开源无人机】从零启动mavros,打通ROS与PX4通信
•
川大智胜:公司年报显示其在无人机飞控系统研发项目上已取得一定成果
•
第一讲:梦创飞控固件烧录教程
•
【报名】深圳PIXHAWK二次开发培训
•
无人机飞控技术,无人机飞行控制系统介绍,飞控系统硬件设计原理与实现方法
•
开源无人机技术前景如何?Dronecode 中国区负责人为你解读|北京源创会
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
bellyoungsmile
bellyoungsmile
当前离线
积分
1549
窥视卡
雷达卡
38
主题
784
帖子
1549
积分
金牌飞友
金牌飞友, 积分 1549, 距离下一级还需 1451 积分
金牌飞友, 积分 1549, 距离下一级还需 1451 积分
积分
1549
飞币
763
注册时间
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
当前离线
积分
1667
窥视卡
雷达卡
37
主题
835
帖子
1667
积分
金牌飞友
金牌飞友, 积分 1667, 距离下一级还需 1333 积分
金牌飞友, 积分 1667, 距离下一级还需 1333 积分
积分
1667
飞币
830
注册时间
2017-8-23
发消息
发表于 2022-10-23 14:52:58
|
显示全部楼层
Pixhawk一直再用来做项目,没有时间仔细研究代码,因为之前研究过一些无人机开源项目代码,其实大同小异。比如MWC,我之前曾经把里面的代码研一遍,并且进行多次开发,效果也不错。3DR的东西写的比MWC规范多了,应该是更好弄一些,我把之前研究其它开源项目的经验写一下把。 进入一个新的智能硬件开源项目,里面的程序架构是非常关键的,说白了也就是知道文件目录的意义。主文件,控制算法,姿态算法,导航算法,传感器接口,函数定义文件,程序配置文件,特殊变量定义文件等等,这些文件都有标准的名称,很容易区分,而且这些开源程序现在也规矩多了,文件说明也写的很清楚,外国开源项目不像中国某些项目“犹抱琵琶半遮面”,不肯写说明,或者故意写很多垃圾代码。老外放在github上的都很清晰。 弄懂这些就要找准自己二次开发的方向,想多加功能?减少功能?改变算法?然后,注意了,关键:::::::从主函数入手!就算你只是改动一个小地方,也要把主函数搞清楚,然后进入相关函数,或者文件位置进行二次开发。 我还记得自己前两年改MWC改完之后,发现新版竟然跟我改的一样,自己还有些得意,这些年没改代码都有些手痒了。
回复
支持
反对
使用道具
举报
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
图像视觉
快速回复
返回顶部
返回列表