【Pixhawk】Ubuntu下编译原生固件PX4

2023-05-16

环境:

编译主机:Ubuntu 20.0.4 ( 官方推荐18.0.4)
源码版本:PX4_1.12.0 (目前最新,截至2021-7-22)

建议

尽量以官网文档为主:https://dev.px4.io/master/zh/

步骤

1、下载PX4源码

新建一个pixhawk/source目录,cd进去git源码

cd pixhawk/source
git clone https://github.com/PX4/Firmware.git

下载完成后,该目录下会出现一个Firmware目录
在这里插入图片描述

2、更新子模块

到Firmware目录中更新子模块

cd Firmware
git submodule update --init --recursive

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

3、修改权限

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

sudo usermod -a -G dialout $USER

4、下载依赖库

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

bash ./Firmware/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、编译源码

在Firmware下编译PX4源码
输入make p,按下table键,会出现一系列可编译的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中已经编写好了
我们只需要打开/Firmware/boards/px4/fmu-v5/default.cmake
去掉px4_simple_app前的#,将此模块编译到固件中
在这里插入图片描述
打开地面站的MAVLink控制台,键入help,发现px4_simple_app已经被编译好了
在这里插入图片描述
运行一下
在这里插入图片描述
验证成功!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Pixhawk】Ubuntu下编译原生固件PX4 的相关文章

随机推荐

  • 关于锁的理解

    本文打算写一些和锁有关的东西 xff0c 谈一谈我对锁的原理和实现的理解 xff0c 主要包含以下方面 信号量互斥量条件变量 同步与互斥 其实同步与互斥都是计算机科学里面概念性的东西 xff0c 它们和什么编程语言 操作系统其实都没什么关系
  • Android 适配ipv6

    Android8 0开始支持ipv6 okhttp支持ipv6 glide支持ipv6方法 ijkplayer
  • java自我学习第一阶段的收获和感受

    1 首先对于编程的学习第一步都是基本语法的学习 xff0c 语法学习的特点有 xff1a 所有编程语言的语法定义都大体相似 xff0c 大概的是编程发展的延续 xff0c 没有人语言设计人员会标新立异 xff0c 只有站在别人的肩上不断完善
  • docker常用命令及配置

    最近使用了docker xff0c 像是发现了新大陆 真是简洁好用的东西 xff0c 为啥原来没发现 docker的安装不再赘述 xff0c 在此记录一下常用的命令 xff0c 以便于将来查询 查看docker容器版本 docker ver
  • 数字图像处理读后感

    数字图像处理读后感 前言 初步写完比赛代码后 看了机器学习看了数字图像处理还有其他的一些乱七八糟的东西 然后又觉得如果只是看完没有总结回顾那就是很失败的一件事情 所以就想写一写自己的读后感 我自己看得是B站的视频 这是西安电子科技大学的任老
  • 第七天 树莓派+计算棒配置过程

    一 xff1a 安装过程参考 xff1a https blog csdn net qqqzmy article details 85213414 1 材料硬件 树莓派3B 43 intel movidius 神经元计算棒2代显示器 鼠标键盘
  • Docker镜像推送(push)到Docker Hub

    镜像构建成功后 xff0c 只要有docker环境就可以使用 xff0c 但必须将镜像推送到Docker Hub上去 我们之前创建的镜像不符合Docker Hub的tag要求 xff0c 因为 在Docker Hub注册的用户名是boony
  • Altera FPGA 远程更新

    文章目录 1 概述2 如何生成factory jic xff1f 3 如何使用ASMI IP4 如何使用Remote updata IP xff1f 5 UART命令 以下内容均参考自官方手册 手册下载地址 xff1a ug altremo
  • 将ros的深度图像 转换成 opencv的图像 并求距离

    将ros的图像 转换成 opencv的图像并求距离 参考的博客概念将ROS图像消息转换为OpenCV图像示例计算距离 参考的博客 ROS学习笔记47 xff08 ROS图像和OpenCV图像之间的转换 xff08 C 43 43 xff09
  • ROS入门总结(二):Python定义发布器Publisher与订阅器Subscriber

    节点ROS通信系统中就是一个可执行的程序 xff0c 这边博客主要记录如何在Python代码节点中定义发布器和订阅器 发布器 xff1a import rospy from std msgs msg import String 载入Stri
  • 计算机视觉中的传统特征提取方法总结(转载)

    前言 本文对计算机视觉传统方法中的一些特征提取方法进行了总结 xff0c 主要包括有 xff1a SIFT 尺度不变特征变换 HOG 方向梯度直方图 SURF ORB LBP HAAR 目录 1 SIFT xff08 尺度不变特征变换 xf
  • docker源码分析(1)(持续更新)

    docker源码分析 xff08 1 xff09 xff08 持续更新 xff09 daemondocker DaemonClient的启动内部函数分析newAPIServerConfigloadListenersinitContainer
  • JS实现图片切割

    lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title gt Title lt title g
  • GPS、RTK、PPK三种定位技术的原理及应用

    一 GPS技术 1 原理 之前做过集成GPS功能的产品 xff0c 对这种不以定位为主要功能的产品 xff0c 精度是没有要求的 xff0c 例如我只是用它来得到当前社区的位置 xff0c 一般的GPS模块都能满足要求 理论上 xff0c
  • 【STM32】RS485 Modbus协议 采集传感器数据

    源码链接 xff1a Modbus传感器采集协议 一 硬件 1 传感器 xff1a 为液压传感器 xff0c 12vDC xff0c RS485数据输出 xff0c 采用Modbus协议通信 2 电路 xff1a 根据传感器属性 xff0c
  • 【FPGA】QuartusII13.0全编译Error (119013): Current license file does not support the EP4CE10F17C8 device

    Quartuls II全编译时 xff0c 出现如下错误 网上很多人说找到32位的exe可以编译成功 xff0c 但是凭啥64位的就不行了 xff1f 而且我32位的也不行 这种情况就是没破解好 xff0c 但Licence Setup 显
  • 【FPGA】QuartusII13.0实现组合逻辑 3/8 译码器

    3 8译码器一般用于资源扩展 xff0c 如驱动led阵列时 xff0c 即使是FPGA xff0c IO资源也明显不足 xff0c 借此可以扩展出更多的IO口 xff0c 通过实现 3 8译码器 xff0c 记录一下FPGA开发的基本步骤
  • SIFT3D(3D尺度不变特征变换)算法

    转载自医学图像处理案例 xff08 十 xff09 SIFT3D xff08 3D尺度不变特征变换 xff09 算法 腾讯云开发者社区 腾讯云 一 SIFT3D算子 上述SIFT算子用于二维图像关键点检测 xff0c 医学影像一般都是三维图
  • 【Qt】opencv源码&官方编译好的opencv在windows下使用的区别

    之前用过很多次OpenCV xff0c 但是感觉每次情况都不一样 xff0c 看了之前的文章 QT 搭载OpenCV实现简单的图像处理 xff0c 用的是官方编译好的OpenCV 43 msvc2017 43 Qt Creator xff0
  • 【Pixhawk】Ubuntu下编译原生固件PX4

    环境 xff1a 编译主机 xff1a Ubuntu 20 0 4 xff08 官方推荐18 0 4 xff09 源码版本 xff1a PX4 1 12 0 xff08 目前最新 xff0c 截至2021 7 22 xff09 建议 尽量以