Ubuntu下编译PX4原生飞控固件

1、下载PX4源码


进入Linux系统中后,使用以下命令
git clone https://github.com/PX4/PX4-Autopilot.git 下载完成后,在出现一个PX4-Autopilot目录


2、更新子模块


进入PX4-Autopilot目录中更新子模块

cd PX4-Autopilot

git submodule update --init --recursive

中途可能因为网络原因卡住,直接ctrl+C退出,删除卡住的子目录,重新执行更新命令,反复几次直到成功。


3、修改权限


PX4官方警告:“永远不要使用sudo来修复权限问题,否则会带来更多的权限问题,需要重装系统来解决”
所以给普通用户一点权限来解决编译时使用sudo可能带来的危机

sudo usermod -a -G dialout $USER 

4、下载依赖库


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

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh 


运行完往上翻一翻,有没有失败的红色段,失败就重复操作几次,直到全部成功,一般是网络问题导致的
没问题则按照提示重启


5、卸载模式管理器

sudo apt-get remove modemmanager

Ubuntu配备了一系列代理管理,这会严重干扰相关的串口(或USB串口),最明显的表现就是硬件连接到PC机后,无法读出硬件,无法烧录上传固件。


6.编译仿真工具


编译jmavsim
make px4_sitl jmavsim 编译 gazebo,同理
make px4_sitl gazebo 编译成功,自动启动gazebo软件,画面里有一个小飞机
在命令行输入help可查看支持的命令
 


7、编译源码


在PX4-Autopilot下编译PX4源码
输入make list_config_targets,会出现一系列可编译的px4固件,根据自己需求编译


 

这里选择v5
make px4_fmu-v5_default 中途会遇到很多缺少的文件,一般是git不完整,删除文件夹重新更新子模块即可,实在不行去git官网复制一下找不到的文件


编译成功


下载固件


make px4_fmu-v5_default upload

【BUG1】
但是发现有时候ninja会报错:
ninja not work to do 这个时候我们只需在/Firmware 文件夹下执行:make clean
然后重新编译即可…


【BUG2】
waiting for the bootloader…… 


解决办法是去QGC地面站下载我们的.px4文件到pixhawk中,QGC会帮我们加载bootloader


8.修改源码重新编译验证


现在我们重新编译一下官方给的例子
在/src/example中已经编写好了
我们只需要打开/PX4-Autopilot/boards/px4/fmu-v5/default.cmake
去掉px4_simple_app前的#,将此模块编译到固件中
 


打开地面站的MAVLink控制台,键入help,发现px4_simple_app已经被编译好了
 


运行一下
 


验证成功!

<think>好的,用户想用PX4但没有编译环境,需要推荐一套编译软件。首先,我得考虑PX4编译通常需要什么工具。PX4主要是在Linux下开发的,所以可能需要推荐Linux环境。但用户可能用的是Windows或者Mac,得先确认他们的操作系统。 如果用户是Windows用户,最方便的方法可能是推荐他们使用官方的PX4 Dev环境,比如基于Bash on Windows或者Windows Subsystem for Linux(WSL)。不过WSL安装和配置可能对新手来说有点复杂。另外,Docker也是一个好选择,因为可以避免安装复杂的依赖,直接使用容器来编译。比如官方的px4dev容器,用户只需安装Docker,然后运行容器,挂载代码进去就能编译了。 对于Mac用户,可能推荐直接安装原生编译工具链,比如安装Homebrew来获取必要的软件包,比如gcc-arm-none-eabi,然后按照PX4的文档配置环境。不过有时候Mac上的兼容性问题可能较多,所以Docker可能也是一个更稳妥的选择,保证环境一致。 如果用户不想装Linux或者Docker,有没有其他选择呢?比如在线编译环境,但PX4可能需要比较大的计算资源和特定工具链,可能不太现实。或者虚拟机,但资源消耗大,可能不是最优解。 需要确保推荐的步骤详细,用户能一步步跟着操作。比如安装Docker,拉取镜像,运行容器,挂载目录,执行编译命令。这样用户即使没有经验也能操作。 另外,用户可能不太清楚各个选项的优缺点,需要简单说明。比如Docker的好处是环境隔离,一键配置,但需要学习Docker的基本使用。而WSL可能需要更多的系统配置,但更接近原生Linux体验。 最后,要确认用户的需求是否还有其他限制,比如硬件资源,网络情况等,但用户没有提到,所以可能默认推荐最通用和简便的方法,也就是Docker方案,适用于不同操作系统,并且避免环境配置的麻烦。</think>针对 PX4编译环境搭建,以下是推荐方案(无需预先安装复杂依赖): --- ### **推荐方案:Docker 容器化编译(跨平台通用)** #### **优点** - **一键配置**:无需手动安装编译器、工具链、依赖库 - **跨平台支持**:Windows/macOS/Linux 均可直接使用 - **环境隔离**:避免污染本地系统,编译环境独立 #### **步骤** 1. **安装 Docker** - Windows/macOS:[下载 Docker Desktop](https://www.docker.com/products/docker-desktop) - Linux:通过包管理器安装(如 `sudo apt install docker.io`) 2. **拉取 PX4 官方镜像** ```bash docker pull px4io/px4-dev-ros2:latest ``` 3. **运行容器并编译固件** ```bash # 假设你的 PX4 代码在本地目录 ~/px4_ws docker run -it --rm \ -v ~/px4_ws:/src:rw \ # 将本地目录挂载到容器内 px4io/px4-dev-ros2:latest \ /bin/bash -c "cd /src && make px4_fmu-v6_default" ``` - 替换 `px4_fmu-v6_default` 为目标飞控型号(如 `px4_fmu-v5_default`) --- ### **备选方案:快速本地环境(适合 Linux/macOS)** #### **步骤** 1. **安装基础工具** - **Linux (Ubuntu)**: ```bash sudo apt install git python3-pip ``` - **macOS**: ```bash brew install python3 git ``` 2. **下载 PX4 代码与工具链** ```bash git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot bash ./Tools/setup/ubuntu.sh # macOS 用 macos.sh ``` 3. **编译固件** ```bash make px4_fmu-v6_default ``` --- ### **对比建议** - **新手首选 Docker**:无需配置环境,避免依赖冲突。 - **高频开发选本地环境**:长期使用可提升编译速度(需手动维护依赖)。 如有具体飞控型号或操作系统细节,可进一步提供优化方案!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金戈鐡馬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值