Ubuntu18.04配置PX4编译烧录过程以及报错解决

最近搞固件二次开发时的学习过程以及踩坑记录,希望能帮助大家。

 PX4安装

最近在进行PX4固件二次开发,遂学习修改固件编译烧录

在github上下载源码包

git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2 #对应固件版本
git submodule update --init --recursive
make px4_sitl_default gazebo

gihub上下载比较慢,这里放一下压缩包,直接编译即可

链接: https://pan.baidu.com/s/1oBFaly2pbQtMROh0akk23w

提取码: HHHH

cd PX4_Firmware
make px4_sitl_default gazebo

编译成功会打开gazebo,并有一支小四轴。

PX4固件编译

运行源码中的脚本安装依赖

bash ./Firmware/Tools/setup/ubuntu.sh

其中下载依赖有点多,可能会出现网络超时,多试几次即可,最后安提示重启。

其中下载gcc-,g++等类似依赖时下载会很慢,直接取消 即可,不要用它安装的,很浪费时间。

安装依赖完成后开始编译固件。

在Firmware下编译

cd Firmware
make px4_... #按TAB检索一下会出现很多版本

 这里固件只要你编译完成,就和github上下载的一样,注意,这里固件版本都是1.13.2,即为你一开始下载的安装包的固件版本。

make px4_fmu-v5_default 

 根据飞控不同请下载对应的版本,链接

报错及解决方法

1.作者首先出现的报错如下

...

        arm-none-eabi-g++

...

No CMAKE_CXX_COMPILER could be found.
 
Tell CMake where to find the compiler by setting either the environment
variable “CXX” or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.

就是上面安装依赖时没有装gcc的结果。注:就算上面安装完了这里我还是出现了这个报错。

sudo apt-get install gcc-arm-none-eabi

直接安装,速度很快。

2.AttributeError: module 'em' has no attribute 'RAW_OPT'

 说是在“empy”这个库中没有“RAW_OPT”这个属性,是由于empy库的版本太高,这里要降版本。

pip3 uninatall empy
pip3 install empy==3.3.2

3.error: ‘__ULong‘ does not name a type __ULong i[2];

这是由于文件中没有定义ULong这个数据类型,手动添加即可。

sudo gedit /usr/include/newlib/math.h

 在代码开头添加一行:

#define  __ULong long

4.ninja: build stopped: subcommand failed.

这个报错一般是我在编译完成后再次编译会出现。

make clean

 清除后再次编译即可。注:这个会把你已经编译的所有版本固件都删除(在build中),谨慎使用。

编译完成出现下图

5.region `flash‘ overflowed by 4253 bytes

作者在编译v2版本固件时会有这个错误,原因是flash容量超额了,添加flash限额即可。

在/PX4_Firmware/boards/px4/fmu-v2/nuttx-config/scripts中,打开script.ld

将flash length改成2032

固件烧录

usb插上飞控后输入这一行:

make px4_fmu-v5_default upload

可能会出现一直等待的情况

可以去QGC地面站去下载固件到飞控。

 选择自定义固件

 选择我们编译好的.px4文件

在 Firmware/build/px4_fmu-v*_default/内即可。

补充

目前最新版QGC以及不支持18.04了,所以可以从官网下载低版本安装。

安装4.2.6及以下就行

下载对应的.AppImage文件

sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor0 -y
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage  (or double click)

作者学习中的所有问题都在这里了,如果有问题,欢迎在评论区指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值