ubuntu18配置PX4编译环境

2023-05-16

Ubuntu 18.04系统下搭建PX4/Pixhawk原生固件编译环境

经参考总结CSDN上多位开发者的文章,经调整亲测可行!

参考文章:

(7条消息) 搭建无人机仿真环境之PX4安装中出现的一些问题的解决_TYINY的博客-CSDN博客

(9条消息) 最新Linux系统下搭建PX4/Pixhawk原生固件编译环境!!!_C_zzzzz的博客-CSDN博客

 

添加用户到dialout工作组

创建独立用户的目的是这样可以让开发环境分离开来,避免出现不同用户间的版本冲突等情况。将用户加入dialout用户组的目的是dialout拥有对串口tty的操作权限   

 sudo usermod -a -G dialout $USER

注意:注销后重新登录
安装软件包

#更新软件源列表:

      

  sudo apt-get update -y

#安装git、zip、cmake、qt、ninja等必用软件包:

      

  sudo apt-get install git zip qtcreator cmake build-essential genromfs ninja-build exiftool -y

注:添加源操作一般成功后会跳出一个“OK”,update成功后会有个“done”。
安装常用python依赖包及管理工具:      

  sudo apt-get install python-argparse python-empy python-toml python-numpy python-yaml \
        python-dev python-pip -y

  sudo -H pip install --upgrade pip
  
  sudo -H pip install pandas jinja2 pyserial cerberus

安装正确版本的gcc-arm-none-eabi!!!

用户在ubuntu系统下编译的固件要在arm系统中运行,所以一定会用到交叉编译器,先到下面这个网站下一个比较高版本的安装文件:

    https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

亲测有效,强烈建议2017-q4版本!!!

解压    

  tar jxvf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 -C /usr/bin

修改环境变量

 vim /etc/profile

添加到最后一行,i进入编辑模式 ,esc推出编辑模式,:wq保存退出。若vim提示权限问题,sudo su 进入管理员模式在进行上述操作。

export PATH=/usr/bin/gcc-arm-none-eabi-7-2017-q4-major/bin:$PATH

  使新的环境变量生效,随后重启

  source /etc/profile

  reboot

查看编译器版本确认是否配置成功    

echo $PATH

arm-none-eabi-gcc --version

运行指令且结果如下:

环境配置检测
编译源码

  #克隆源码

git clone -b v1.8.2 https://github.com/PX4/Firmware.git

 #更新子模块:
   

git submodule update --init --recursive

 #编译:
       

make px4_fmu-v2_default

下面的列表显示了通用板的构建命令:

    Pixhawk 4: make px4_fmu-v5_default
    Pixracer: make px4_fmu-v4_default
    Pixhawk 3 Pro: make px4_fmu-v4pro_default
    Pixhawk Mini: make px4_fmu-v3_default
    Pixhawk 2: make px4_fmu-v3_default
    mRo Pixhawk: make px4_fmu-v3_default (supports 2MB Flash)
    HKPilot32: make px4_fmu-v2_default
    Pixfalcon: make px4_fmu-v2_default
    Dropix: make px4_fmu-v2_default
    MindPX/MindRacer: make airmind_mindpx-v2_default
    mRo X-2.1: make auav_x21_default
    Crazyflie 2.0: make bitcraze_crazyflie_default
    Intel® Aero Ready to Fly Drone: make intel_aerofc-v1_default
    Pixhawk 1: make px4_fmu-v2_default

固件编译:

成功


 

报错问题处理

1.无法make,或者如下图:

方案:

    #make是操作字符 px4fmu是固件名称 -v2是版本号 _default是默认配置
    #实际make之后是一个文件名称,需要编译的模块都在其中
    #可以输入make p 然后按Tab键,会跳出一连串p开头的文件


2.缺少模板

方案:
缺什么补什么,根据提示补模板。中途会出现如下问题:
在这里插入图片描述
方案:终端输入如下:

    python2 --version #查看python2安装版本
    python3 --version #查看python3安装版本
    python --version#查看系统正在使用的版本

现在改为python3

终端输入

  echo alias python=python3 >> ~/.bashrc

source一下

  source ~/.bashrc

版本查看:

python --version


紧接着升级pip,

  python -m pip install --upgrade pip


3.交叉环境出错

重装交叉环境,切记强烈建议2017-q4版本!!!

在这里插入图片描述

4. git submodule update --init --recursive中遇到的问题

  • 问题1

如果使用镜像github.com.cnpmjs.org进行git clone ,在执行git submodule update --init --recursive时出现:

  1. ~/PX4_Firmware$ git submodule update --init --recursive

  2. 子模组 'Tools/jMAVSim'(https://github.com.cnpmjs.org/PX4/jMAVSim.git)未对路径 'Tools/jMAVSim' 注册

  3. 子模组 'Tools/sitl_gazebo'(https://github.com.cnpmjs.org/PX4/sitl_gazebo.git)未对路径 'Tools/sitl_gazebo' 注册

  4. 子模组 'boards/atlflight/cmake_hexagon'(https://github.com.cnpmjs.org/PX4/cmake_hexagon.git)未对路径 'boards/atlflight/cmake_hexagon' 注册

  5. 子模组 'mavlink/include/mavlink/v2.0'(https://github.com.cnpmjs.org/mavlink/c_library_v2.git)未对路径 'mavlink/include/mavlink/v2.0' 注册

  6. 子模组 'platforms/nuttx/NuttX/apps'(https://github.com.cnpmjs.org/PX4/NuttX-apps.git)未对路径 'platforms/nuttx/NuttX/apps' 注册

  7. 子模组 'platforms/nuttx/NuttX/nuttx'(https://github.com.cnpmjs.org/PX4/NuttX.git)未对路径 'platforms/nuttx/NuttX/nuttx' 注册

  8. 子模组 'platforms/qurt/dspal'(https://github.com.cnpmjs.org/ATLFlight/dspal.git)未对路径 'platforms/qurt/dspal' 注册

  9. 子模组 'src/drivers/gps/devices'(https://github.com.cnpmjs.org/PX4/GpsDrivers.git)未对路径 'src/drivers/gps/devices' 注册

  10. 子模组 'src/drivers/uavcan/libuavcan'(https://github.com.cnpmjs.org/PX4/uavcan.git)未对路径 'src/drivers/uavcan/libuavcan' 注册

  11. 子模组 'src/lib/ecl'(https://github.com.cnpmjs.org/PX4/ecl.git)未对路径 'src/lib/ecl' 注册

  12. 子模组 'src/lib/matrix'(https://github.com.cnpmjs.org/PX4/Matrix.git)未对路径 'src/lib/matrix' 注册

  13. 子模组 'src/modules/micrortps_bridge/micro-CDR'(https://github.com.cnpmjs.org/PX4/micro-CDR.git)未对路径 'src/modules/micrortps_bridge/micro-CDR' 注册

解决方法:
检查 .gitmodule文件中的url格式
按照以下方法更换一下即可:

gedit .gitmodules

将.gitmodules文件中所有github.com替换为github.com.cnpmjs.org,例如
[submodule “mavlink/include/mavlink/v2.0”]
path = mavlink/include/mavlink/v2.0
url = https://github.com.cnpmjs.org/mavlink/c_library_v2.git
branch = master

修改完后,再次执行:

git submodule sync
  • 问题2
  1. wtj-virtual-machine:~/PX4_Firmware$ git submodule update --init --recursive

  2. fatal: Needed a single revision

  3. 无法在子模组路径 'Tools/jMAVSim' 中找到当前版本

解决方法:
删除对应文件夹,如删除文件夹 jMAVSim

 

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

ubuntu18配置PX4编译环境 的相关文章

  • Internal server error 500 问题解决思路

    我们系统在一次升级之后 xff0c 生产环境大量出现Internal server error 500错误 xff0c 具体场景 xff1a 在APP上使用拍照功能后 xff0c APP通过Http协议上传压缩后的照片到服务端 xff0c
  • c# List集合类常用操作:二、增加

    所有操作基于以下类 class Employees public int Id get set public string Name get set public string City get set public DateTime Bi
  • 485通讯协议_终于有人把RS485通讯协议应用及缺点分析清楚了,看完收获多多

    RS 485是工业控制环境中常用的通信协议 xff0c 具有抗干扰能力强 传输距离长的特点 RS 485通信协议是对RS 232协议的改进 协议层不变 xff0c 但只有物理层得到了改进 xff0c 从而保留了串行通信协议应用简单的特点 R
  • 常用串口调试工具比较(详细)

    目前有许多免费的串口调试工具 xff0c 比较常用的有 xff1a 1 友善串口调试助手 xff08 v2 6 5 xff09 优点 xff1a 1 xff09 使用方便 xff0c 不丢包 xff1b 2 xff09 串口自动识别 xff
  • 请问在Delphi中用什么方式打开窗体能让它一直在最前面,而且还可以对其它窗体进行操作?

    将要打开的窗口FormStyle属性设置为 fsStayOnTop xff0c 然后再用show方法打开窗口
  • 微软Surface Pro 4/5平板如何重装Win10系统?教程分享

    重装Win10系统很多用户都会 xff0c 但是如果是平板 xff0c 那么操作起来和电脑可能会有不同 xff0c 毕竟平板需要触屏的支持 xff0c 今天我们要讲的是微软Surface Pro 4 5如何重装Win10系统 xff0c 主
  • C#发送16进制串口数据

    个困扰两天的问题 xff1a 需要通过串 向设备发送的数据 xff1a 0A010 7e 08 00 11 00 00 7e 76 7f 我先将每个16进制字符转换成10进制 xff0c 再将其转换成ASCII码对应的字符 lt summa
  • C# WinForm遍历窗体控件的3种方法

    这篇文章主要介绍了C WinForm遍历窗体控件的3种方法 xff0c 帮助大家更好的理解和使用c xff0c 感兴趣的朋友可以了解下 目录 1 循环遍历2 递归遍历3 使用反射 1 循环遍历 1 2 3 4 5 6 7 8 private
  • gazebo_ros:未找到命令

    操作系统 xff1a ubuntu18 04 链接 B站链接 xff1a Autolabor初级教程 ROS机器人入门 问题 gazebo ros xff1a 未找到命令 解决办法 sudo apt install ros span cla
  • 【深入学习51单片机】一、基于8051的RTOS内核任务切换堆栈过程剖析

    我一直在写裸机 xff0c 写的多了自然会对rtos产生浓厚兴趣 xff0c 最有意思的莫过于任务切换了 xff0c 可以在多个死循环里面跳转 xff0c 很神奇的样子 本文学习参考程序是网上一个基于8051的简易os xff0c 从哪里下
  • 如何使用网络调试助手调试UDP

    最近的一个项目需要使用UDP xff0c 在网上下载了一个网络调试助手的小工具进行调试 xff0c 非常方便 xff0c 在这里简单的向大家介绍一下它的使用方法 xff0c 仅供参考 xff0c 其他类似的调试工具都差不多 工具 原料 网络
  • Delphi 回调函数及例子

    Delphi回调函数 1 回调函数的概述 回调函数是这样一种机制 xff1a 调用者在初始化一个对象 xff08 这里的对象是泛指 xff0c 包括OOP中的对象 全局函数等 xff09 时 xff0c 将一些参数传递给对象 xff0c 同
  • 解决Window10连接共享目录 登录失败:未知的用户名或错误密码 的解决方法

    关于未知的用户名或错误密码 win10共享这个很多人还不知道 xff0c 今天菲菲来为大家解答以上的问题 xff0c 现在让我们一起来看看吧 xff01 1 按 Win 43 R 运行 执行 窗口 xff0c 输入 gpedit msc 命
  • 教您电脑电源短接哪两根线风扇转

    如果哦我们没有接电脑主板 xff0c 如何让电脑电源风扇转动 我们只有通过电脑电源线的短接来解决这个问题 xff0c 但是电脑电源线哪两跟线使风扇转动呢 一起跟小编来看看吧 电脑电源短接哪两根线风扇转 xff1a 1 电脑电源本身是一个供电
  • 编译PX4固件

    PX4编译 文章目录 PX4编译疑难杂症bug1bug2catkin build isolated 官方脚本Step1Step2 安装常用依赖Step3 创建并运行脚本Step4 补全代码子模块Step5 验证仿真 官方offboard 例
  • ubuntu18.04安装mavros并读取pixhawk飞控数据

    Mavros源码安装 最新mavros详细安装教程 xff08 亲测可行 xff09 启动mavros 上述步骤完成后 xff0c 启动px4 launch roslaunch mavros px4 launch 此时rostopic li
  • 相机标定:相机模型和畸变模型

    一 相机标定方案 相机内参标定是确定内参和畸变参数 equidistqant畸变模型 或者 radial tangential模型 的过程 本文首先介绍SLAM中常用的相机模型和畸变模型 xff0c 随后介绍我们采用的两种内参标定方案 xf
  • 新手入门Docker之Windows下如何使用Docker

    Docker是什么 xff1f Docker 将应用程序与该程序的依赖 xff0c 打包在一个文件里面 运行这个文件 xff0c 就会生成一个虚拟容器 程序在这个虚拟容器里运行 xff0c 就好像在真实的物理机上运行一样 有了 Docker
  • C/C++服务器开发常见面试题(一)

    C C 43 43 服务器开发常见面试题 转自 xff1a LinuxC C 43 43 服务器开发面试题 一 编程语言 1 根据熟悉的语言 xff0c 谈谈两种语言的区别 xff1f 主要浅谈下C C 43 43 和JAVA语言的区别 1
  • Realsense D455/435内参标定以及手眼标定

    相机的内外参 内参数 与相机自身特性有关的参数 xff0c 焦距 xff0c 像素大小外参数 xff0c 相机的位置 xff0c 旋转方向 为什么要内参标定 理想情况下 xff0c 镜头会将一个三维空间中的直线也映射成直线 xff08 即射

随机推荐

  • 最新Ubuntu20.04安装指南(防踩坑版)

    文章目录 最新Ubuntu20 04安装 配置指南 防踩坑版 一 备份 1 Windows系统镜像 2 个人资料 3 一些杂项 二 启动盘UEFI引导1 启动盘制作2 设置以U盘方式启动 三 Ubuntu安装 最新Ubuntu20 04安装
  • 18.Python爬虫之Scrapy框架

    scrapy 框架 01 Scrapy 链接02 Scrapy 的爬虫流程03 Scrapy入门04 setting py文件中的常用设置4 1 logging模块的使用4 2 61 61 scrapy项目中的setting py常用配置内
  • 树莓派上手实战之SSH下配置VNC服务器实现远程桌面(可以实现开机自启动vncserver)

    VNC是linux下面常用的远程桌面 xff0c 用它可以在windows或者unix主机上方便的通过网络操作远程主机而不需要一个额外的显示器 xff0c 非常实用 这篇教程将会详细讲解安装配置VNC服务器开启远程桌面服务的全部过程 首先
  • N2N(docker方式安装)实现远程访问家里群晖

    N2N xff08 docker 安装 xff09 实现远程访问家里群晖 前言部署阿里云ECS安装n2n supernode 及 edge 节点在黑群晖上安装 edge节点windows 安装edge节点 测试遇到的问题检查tun模块状态测
  • 深入浅出话事件(下)

    深入浅出话事件 xff08 下 xff09 二 xff0e 事件的由来 在传统的面向对象的概念中是没有 事件 这个概念的 传统的面向对象概念中只有数据 xff08 Data xff0c 也称为 field 域 成员变量 xff09 和方法
  • 凤凰涅槃

    涅槃 xff0c 涅槃 xff0c 太阳般灿烂 xff0c 黑色的凤凰飞入烈火 xff0c 一切腐朽烧干 涅槃 xff0c 涅槃 xff0c 大海般坦然 xff0c 红色的凤凰浴火重生 xff0c 一切希望复燃 涅槃 xff0c 涅槃 xf
  • 转:make cmake和catkin_make的区别

    程序在cmake编译是这样的流程 cmake指令依据你的CMakeLists txt 文件 生成makefiles文件 make再依据此makefiles文件编译链接生成可执行文件 catkin make是将cmake与make的编译方式做
  • 前端开发踩坑-npm install 时报错---持续更新

    1 npm ERR fatal unable to access https github com adobe webplatform eve git Failed to connect to github com port 443 Ope
  • μC/OS II 任务调度详解(一)

    UC OS II 是一个多任务操作系统 xff0c 从宏观角度来看 xff0c 当前系统中可以有多个任务同时运行 xff1b 但从微观角度来看 xff0c 某一个时刻只能有一个任务处于运行状态 xff08 单CPU情况 xff0c 事实上在
  • IMU参数详解

    1 加速度计 1 1Full Scale Range 1 指加速度计能测量到的正反方向最大加速度的额定值范围 常见有 xff08 2g 4g 8g 16g up to 400g 2 地球重力加速度为1g 61 9 8m s 2 16g 61
  • Registry注册机制

    前言 不管是Detectron还是mmdetection xff0c 都有用到这个register机制 xff0c 特意去弄明白 xff0c 记录一下 首先看Registry代码 Copyright c Facebook Inc and i
  • 计算机网路:<3>连接外网(多层交换机)

    上一期我们讲到如何用多层交换机将不同的子网连接起来 xff0c 我们是用到了多层交换机的路由功能 xff0c 那么这个路由功能可以不以创建路由表并且与路由器相连 xff0c 与外网相连呢 xff1f 答案是肯定的 xff0c 这一期我们就做
  • c++ vector指针访问vector元素的方法

    c 43 43 使用 vector指针访问vector元素时 xff0c 不能简单的类似于c中数组和指针的方式 需要使用迭代器 int main vector lt int gt s vector lt int gt p 61 amp s
  • PHP中的设计模式及其实际应用浅析

    设计模式在各种语言中都有很重要的应用 xff0c 每种设计模式都有其特有的优点以及使用场景 接下来 xff0c 将从单例模式 工厂模式 组合模式以及策略模式四个模式 xff0c 介绍设计模式及其实际项目中的简单应用 一 单例模式 单例模式的
  • ECMAScript6(6):数组的扩展

    数组的扩展 Array from 将类数组对象和可遍历对象转化为真正的数组 span class hljs keyword var span arrayLike 61 span class hljs string 39 0 39 span
  • 嵌入式stm32f429上成功跑通主流Linux 4.13

    楼主是个闲的蛋疼的大学僧 xff0c 在高中和大学的社团 工作室中长期搞单片机和 嵌入式系统开发 刚接触树莓派时候是惊叹不已的 xff0c 然后眼看香蕉派杨梅派橙子派荔枝派醋鳖派等等等等的 开源硬件 相继登场 xff0c 也是一阵的兴奋 x
  • 【视频】零基础学Android开发:蓝牙聊天室APP(一)

    零基础学Android开发 xff1a 蓝牙聊天室APP第一讲 1 Android介绍与环境搭建 xff1a 史上最高效Android入门学习 1 1 Google的大小战略 1 2 物联网与云计算 1 3 智能XX设备 1 4 Andro
  • 飞行控制器Pixhawk简介

    作者 xff1a 华清远见讲师 Pixhawk是一款由PX4开源项目设计并由3DR公司制造生产的高级自动驾驶仪系统 其前身是APM xff0c 由于APM的处理器已经接近满负荷 xff0c 没有办法满足更复杂的运算处理 xff0c 所以硬件
  • Altium Designer 10 介绍、原理图及其模板常规设计

    作者 xff1a 卢老师 华清远见嵌入式学院讲师 1 Altium Designer 10 入门知识 1 1 1 什么是 Altium Designer Altium Designer 提供了统一的应用方案 xff0c 是 Protel x
  • ubuntu18配置PX4编译环境

    Ubuntu 18 04系统下搭建PX4 Pixhawk原生固件编译环境 经参考总结CSDN上多位开发者的文章 xff0c 经调整亲测可行 xff01 参考文章 xff1a 7条消息 搭建无人机仿真环境之PX4安装中出现的一些问题的解决 T