作为一名飞控开发的小学生:),最近入坑Pixhawk+PX4了。
基于Pixhawk硬件平台进行二次开发,有两套固件可以选择:Ardupilot系列也就是常说的APM固件,包含了ArduCopter以及ArduPlane等;另一个就是Pixhawk原生固件PX4了。前者最开始是为APM硬件(Ardupilot Mega)开发的,升级到3.0版本后已经兼容Pixhawk硬件,从个人学习的角度来看,APM固件的代码架构比较容易理解,基本上花个一天时间就能大概摸清整体结构了,而且由于出现的时间早,玩的人以及相关资料都比较丰富,所以属于首选。后者则采用了Nuttx实时操作系统,一开始接触的时候简直头大,整体结构、信息传递机制都不了解,资料相对少点,所以属于备选。
但是在做HIL仿真时,不论是我自己编译APM固件还是下载的官方固件,前后折腾了快一周还是不能正常工作;而用PX4固件则比较顺利地实现了需求。所以从时间成本以及沉没成本考虑,还是决定入坑Pixhawk+PX4了。
一、编译
Windows下编译坑多而且速度还慢,选择在Ubuntu里面编译。按照dev.px4.io/中Linux/Advanced Linux以及Building the Code里面的说明,还是能比较方便的搭建好PX4的开发环境。但还是有几点要注意:
1. 在clone完项目后,不要着急添加子模块,先把分支切换到stable上。
2. 添加子模块时不能忘了 --recursive 参数,要不然会缺少几个模块,导致编译不过。
1 git submodule update --init --recursive