以下所描述的都是针对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 –GPIO

LED驱动

gps –GPS接收器驱动

pwm –PWM的更新速率命令

飞行控制的程序

飞行安全和导航

commander –主要飞行安全状态机

navigator –任务,失效保护和RTL导航仪

估计姿态和位置

multirotor姿态和位置控制器

mc_att_control–multirotor姿态控制器

mc_pos_control –multirotor位置控制器

fixedwing姿态和位置控制器

垂直起降姿态控制器

最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁:

将MAIN_STATE_MANUAL替换成MAIN_STATE_ALTCTL即可。

pixhawk飞控调试_如何用开源飞控PIXHAWK进行二次开发?相关推荐

  1. PHP+MySql的网络验证源码开源纯代码可二次开发

    PHP+MySql的网络验证源码开源纯代码可二次开发 :99415656994962582靓仔担当有决心

  2. 关于开源堡垒机Jumpserver二次开发

    针对市场上商业堡垒机动辄七八十万的投入,一般屌丝公司都是伤不起,只能砸机兴叹,开源堡垒机自然是一个方案.是拿来即用吗,NO,那是作死,不说安全.性能.并发,高可用,光维护资产.用户账号密码.授权,就可 ...

  3. 开源代码的使用 二次开发

    开源开发,就我的理解,有三种. 1.当作底层基础,使用.例如大家使用mysql就算.有人会认为我说错了.但我认为,开发不代表就是要同一个语言,甚至修改代码.例如我们使用动态库,原先的动态库是什么写的并 ...

  4. 开源堡垒机Guacamole二次开发记录之一

    简介 项目中需要用到堡垒机功能,调研了一大圈,发现了Apache Guacamole这个开源项目. Apache Guacamole 是一个无客户端的远程桌面网关,它支持众多标准管理协议,例如 VNC ...

  5. 如何用开源飞控PIXHAWK进行二次开发?

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:我是肉包子 链接:http://www.zhihu.com/question/38874663/answer/842399 ...

  6. sublime python调试_如何用sublime调试程序

    sublime的功能其实很强大,当然需要安装插件,前面我们没有介绍如何用sublime调试程序.下面学习如何用sublime调试python和C++. 调试python 参考https://blog. ...

  7. idea java jni 调试_使用 IntelliJ IDEA 和 IntelliJ Clion 进行 JNI 开发

    在 Android Studio 开发 JNI 的时候,总感觉被一些细枝末节所迷惑,比如 NDK,.so 文件,动态库,library ,javah 编译等等,感觉很困惑,所以这次打算撇开细枝末节,只 ...

  8. python开发微信订阅号如何申请_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...

    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大.同时python ...

  9. 开源代码微擎二次开发的分销商模块逻辑微擎分销商提现的一些注意事项

    开源代码微擎的分销商模块逻辑微擎分销商提现的一些注意事项 一.分销商设置和提现 手机端在分销中心页面 /app/index.php?i=43&c=entry&m=ewei_shopv2 ...

最新文章

  1. Linus Torvalds 谈居家办公:不要在家中重新搞一个办公室
  2. 让你的apache支持Perl
  3. python 获取中文文件名的输出
  4. ZOJ 3776 A - Pokemon Master 签到水题
  5. GridView的操作大全
  6. Linux网络协议栈(二)——套接字缓存(socket buffer)
  7. Animator忽视TimeScale
  8. 企业打开云HBase的正确方式,来自阿里云云数据库团队的解读
  9. JS中拼接VUE的ONCLICK事件
  10. 调查:Win7是勒索病毒的重灾区 XP受影响不足0.1%
  11. openCV实践项目:图片文本检测
  12. linux df -h显示空间信息不正确
  13. msxml6 x86.msi v6.10.1129.0
  14. banner设圆角_com.youth.banner.Banner 使用glide加载圆角图片无效
  15. Java基础知识(九) 容器
  16. 如何把pdf转换成excel
  17. ERC721: Non-fungible Token Standard
  18. 腾讯云服务器备案完整流程 40天备案的血与泪
  19. 一个瑞典游戏工作室决定离开索尼,之前和之后都发生了什么?
  20. mysql切换Tidb

热门文章

  1. MySQL基础查询(单表查询)
  2. 基于51单片机的篮球比赛计时器
  3. 阿里云直播播放地址获取方式
  4. android 飞机大战详解
  5. 大数据架构师进阶之路-技术学习路线
  6. 【Solidity】零基础入门Solidity编写智能合约代码
  7. 数字IC后端设计如何快速入门?(内附学习视频)
  8. ghost博客mysql_centos 上快速搭建ghost博客方法分享
  9. 过滤器Filter中得到各种路径
  10. Truffle在ganache-cli部署合约