PX4二次开发环境搭建及报错解决(v1.9.2)

2023-05-16

PX4二次开发环境搭建及报错解决(v1.9.2)

  • 正文
    • 脚本安装方式
    • 手动安装编译环境

网上之前已经有很完善的环境搭建教程了,但是大多是支持v1.8.0及之前版本的,但自从v1.9.0版本之后,环境发生了一些改变,比如对gcc编译环境的版本要求提高了,会遇到其他的报错等等,因此笔者做了这个新教程

正文

本教程是基于新装的Ubuntu系统搭建的环境,因而应该可以包括大多数遇到的问题。

脚本安装方式

首先我们进入官网:dev.px4.io
(官网的教程已经很完善了,但是对于新手可能不太友好。我们做一下梳理。)
在Getting Started下面我们可以找到Ubuntu的安装教程。PX4提供了一些安装的脚本,我们直接运行就可以安装。
安装过程和编译过程中可能会遇到一些问题,因此在后面一节我们通过手动安装的方式,介绍一下问题的解决方法。你也可以选择不用脚本,直接手动安装。如果你是新手,手动安装有助于你了解编译环境的构成。
在这里插入图片描述
运行脚本进行安装,需要先将用户添加至组

//将用户添加至组“dialout”
sudo usermod -a -G dialout $USER

然后下载你想要的脚本,脚本内容上图所示页面有介绍。
之后运行即可,在此我们以ubuntu_sim_common_deps.sh为例。

//用source命令运行脚本
source ubuntu_sim_common_deps.sh

在这里插入图片描述

手动安装编译环境

在我的上一个教程,写了如何安装Ubuntu双系统,因此我们就是在这个刚安装好的空白双系统中进行的px4环境搭建。这个系统已经换了源,进行了初始的update工作,剩下的工作都还没有做。
这个教程是写给小白看的,因此会比较啰嗦。但当我最开始还是18k纯小白的时候,我是多么希望有这样啰嗦的教程呀。希望大家理解。
首先我们需要去github上下载PX4的源码,因此我们需要装一个git

sudo apt install git

其次,PX4的编译环境需要调用Cmakelist,因此我们要装一个cmake:

sudo apt-get install cmake

装好之后,我们在home/目录下新建一个文件夹src/

mkdir src

然后我们进入这个文件夹目录下:

cd src

下载最近的PX4源码(教程是v1.9.2):

git clone https://github.com/PX4/Firmware.git

这个过程需要你的网一定要好,如果没下成功没关系,再重新clone一遍。
clone成功之后,你会发现src路径下面多了一个文件夹Firmware/,我们进入它:

cd Firmware/

Firmware里面就是PX4的环境包,但是他其实依赖了很多其他的库,所以此时还不完整不能用,我们需要更新他的依赖:

git submodule update --init

这一步一样很可能会因为网不好而失败,没关系,失败了你就重新执行这个语句。
在这里插入图片描述
成功之后,这个包就下好了,接下来如果编译时出现报错,就都是你电脑环境的问题。
我们执行make指令测试一下:

make px4fmu-v2_default

哦吼,报错了,你可以尝试着理解一下这个报错,是缺少python-jinja2。并且上面已经给出了解决方案:在这里插入图片描述
我们按它的指点安装一下缺少的这个东东:

sudo apt-get install python-jinja2

然后重新编译一下,又报错:
在这里插入图片描述
这个报错也给出了解决方案,执行一下:

sudo apt-get install python-empy
sudo pip install catkin_pkg

然后你会看到执行第二条命令的时候报错:在这里插入图片描述
这是因为你的系统里没有pip的原因,那么我们安装一个:
(在此提醒一下,正常来讲,pip的安装是不需要sudo的,这种情况下pip会被安装在home/目录下,这样之后安装pip的其他插件也不会出现权限问题。但是由于新装的系统只有系统自带的python环境,这个python环境是系统赖以维持稳定必须的,因此pip只能用sudo来安装,这可能会使你的后续开发工作进入深入阶段时出现权限问题,建议使用pyenv之类的进行python环境虚拟管理,当然了也有可能你并不会遇到这个问题,看你的工作会不会用到了)

//在此我们还是先用sudo装pip
sudo apt install python-pip
//如果系统说你的pip版本太低你就按提示去升一下级
//装好之后重新执行刚才失败的那条命令
sudo pip install catkin_pkg

然后我们再编译,大概率又会报错,这次是缺少一个叫numpy toml的东西:
我们执行系统提示的命令:

sudo pip install numpy toml

这次看到了新的报错:
这是为什么呢,我们去百度一下(希望新手养成自己百度找原因的习惯,不要找到一个教程就照抄,最好弄明白为什么,有些教程并不对):
不过这次的解决方案我查到了,列出如下:
在终端输入

sudo gedit /usr/bin/pip

然后在打开的文件,修改:

from pip import main  
if __name__ == '__main__':  
    sys.exit(main()) 

from pip import __main__  #修改
if __name__ == '__main__':  
    sys.exit(__main__._main())#修改

然后保存,退出,重新执行之前失败的命令
再编译之后还有报错缺少环境pyyaml,一样按提示安装即可:

sudo pip install pyyaml

之后我们再编译,又报了新的错误:
在这里插入图片描述
这是因为系统的gcc版本不正确的缘故,我们需要安装指定版本的gcc。
我们打开px4官网教程,找到之前看到的安装脚本们,找到ubuntu_sim_nuttx.sh,打开:
在这里插入图片描述
将下图所示的这段代码复制到命令行进行执行:
在这里插入图片描述
然后重新编译:

//	清除之前编译的文件
make clean
//重新编译指定固件
make px4fmu-v2_default

成功了!!!!!
在这里插入图片描述
如果你没有成功也没有关系,不要气馁,让我们再来一次。不过要养成自己找问题的习惯。
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。

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

PX4二次开发环境搭建及报错解决(v1.9.2) 的相关文章

  • pixhawk px4 spi设备驱动

    此篇blog是以nuttx官网介绍为出发点 xff0c 先分析如何初始化的 xff0c 再分析如何读取传感器数据的 xff0c 最后对比了字符型设备操作和spi驱动的实现方式的差别 如有错误还请指正 6 字符型设备 所有的结构体和API都在
  • PX4 Offboard Control with MAVROS--Takeoff(一键起飞)

    警告 xff1a 请先在仿真环境下进行测试 xff0c 能达到预期效果后在进行实际飞行测试 xff0c 以免发生意外 本篇文章只是用作学习交流 xff0c 实际飞行时如出现意外情况作者不予以负责 所需材料 1 PIXhawk或者Pixrac
  • px4: v2的主板刷写v2的固件

    v2的主板刷写v2的固件 fengxuewei 64 fengxuewei Legion Y7000 2019 PG0 src Firmware changwei rc span class token function make span
  • Ubuntu18.04安装PX4踩坑、报错及解决方案整理

    笔者最近需要跑无人机巡检大坝的仿真 xff0c 于是在自己的Ubuntu2018 04中开始安装PX4 xff0c 问过不少之前已经装过PX4的师兄和同学 xff0c 都曾在PX4安装过程中踩过许多坑 xff0c 耗费了不少时间 xff0c
  • PX4+Offboard模式+代码控制无人机起飞(Gazebo)

    参考PX4自动驾驶用户指南 https docs px4 io main zh ros mavros offboard cpp html 我的另一篇博客写了 键盘控制PX4无人机飞行 PX4无人机 键盘控制飞行代码 可以先借鉴本篇博客 xf
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • 从Simulink到PX4——Simulink-PX4插件安装与环境搭建

    从Simulink到PX4 Simulink PX4插件安装与环境搭建 前言0 准备工作1 安装WSL2 Setting up the PX4 Toolchain on Windows3 Setting up the PX4 Tool Ch
  • 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

    无人机仿真 PX4编译 xff0c gazebo仿真及简单off board控制模式下无人机起飞 前言 在上篇记录中 xff0c 已经对整体的PX4仿真环境有了一定的了解 xff0c 现如今就要开始对无人机进行起飞等仿真环境工作 xff0c
  • PX4 ---- Indoor Flight

    文章目录 室内飞行ROS amp PX4Pose Data 飞机配置MAVROS 基于工训赛 VIO 飞行总结 室内飞行 ROS amp PX4 Pose Data 飞机配置 VIO 参考此处 xff0c 采用 T265 配置 相机与飞控机
  • PX4 -- EKF2

    文章目录 EKF2参数高度估计Range Finder滤波 单变量更新单变量更新对多变量的影响 EKF2 参数 EKF2 中有一类 GATE 参数 当测量值在 VAR GATE 范围内才会更新值 高度估计 四种高度控制方法 xff1a 气压
  • PX4模块设计之三:自定义uORB消息

    PX4模块设计之三 xff1a 自定义uORB消息 1 新增自定义uORB消息步骤2 应用ext hello world消息示例3 编译执行结果4 参考资料 基于PX4开源软件框架简明简介和PX4模块设计之二 xff1a uORB消息代理
  • PX4模块设计之九:PX4飞行模式简介

    PX4模块设计之九 xff1a PX4飞行模式简介 关于模式的探讨1 需求角度1 1 多旋翼 MC multi copter 1 1 1 RC控制模式1 1 1 1 Position Mode1 1 1 2 Altitude Mode1 1
  • PX4模块设计之十七:ModuleBase模块

    PX4模块设计之十七 xff1a ModuleBase模块 1 ModuleBase模块介绍2 ModuleBase类介绍3 ModuleBase类功能介绍3 1 模块入口3 2 模块启动3 3 模块停止3 4 状态查询3 5 任务回调3
  • PX4模块设计之三十四:ControlAllocator模块

    PX4模块设计之三十四 xff1a ControlAllocator模块 1 ControlAllocator模块简介2 模块入口函数2 1 主入口control allocator main2 2 自定义子命令custom command
  • px4仿真无法起飞问题(Failsafe enabled: no datalink)

    报错信息 问题描述 xff1a 使用JMAVSim和gazebo仿真px4起飞时报错如下 xff1a WARN commander Failsafe enabled no datalink 说不安全 解决方法 打开QGC 就可以起飞了
  • PX4飞控之自主返航(RTL)控制逻辑

    本文基于PX4飞控1 5 5版本 xff0c 分析导航模块中自护返航模式的控制逻辑和算法 自主返航模式和导航中的其他模式一样 xff0c 在Navigator main函数中一旦触发case vehicle status s NAVIGAT
  • PX4 OffBoard Control

    终于还是走上了这一步 xff0c 对飞控下手 xff0c 可以说是一张白纸了 记录一下学习的过程方便以后的查阅 目录 一 ubuntu18 04配置px4编译环境及mavros环境 二 PX4的OffBoard控制 1 搭建功能包 2 编写
  • PX4——Range Finder 篇

    Range Finder 此处选用的是 Benewake 下的 Lidar 参数设置 General Configuration 除了官方的参数设置外 xff0c 我在 EKF2 中还找到了 EKF2 RNG AID 参数 xff0c 用来
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 无人机PX4使用动捕系统mocap的位置实现控制+MAVROS

    动捕系统Optitrack xff0c 有很高的定位精度 xff0c 能够给无人机提供比较精确的位置信息 xff0c 因此如果实验室有条件 xff0c 都可以买一套动捕系统 动捕系统的原理 xff1a 光学式动作捕捉依靠一整套精密而复杂的光

随机推荐

  • python爬虫beautifulsoup详细教程

    BeautifulSoup4是爬虫必学的技能 BeautifulSoup最主要的功能是从网页抓取数据 xff0c Beautiful Soup自动将输入文档转换为Unicode编码 xff0c 输出文档转换为utf 8编码 Beautifu
  • pandas用法详解

    一 生成数据表 1 首先导入pandas库 xff0c 一般都会用到numpy库 xff0c 所以我们先导入备用 xff1a import numpy as np import pandas as pd 2 导入CSV或者xlsx文件 xf
  • 程序员读书顺序!

    程序猿的读书历程 xff1a xx语言入门 gt xx语言应用实践 gt xxx语言高阶编程 gt xxx语言的科学与艺术 gt 编程之美 gt 编程之道 gt 编程之禅 gt 颈椎病康复指南
  • 基于STM32的倾斜仪设计(二)—— 硬件设计(2)

    2 4控制电路 本实验中选用的控制核心是STM32系列单片机 xff0c 具体型号为STM32F103R8T6 STM32F103R8T6是一款嵌入式 微控制器集成电路 xff0c 是ST旗下的一款常用的增强型系列微控制器 此芯片工作电压为
  • win32多媒体定时器

    win32多媒体定时器 因为编程需要以1ms为周期调用一个函数 xff0c 故在Windows平台上测试了一些定时器 xff0c 并进行比较 xff0c 最终选用timeSetEvent作为最终选项 几个拉跨的定时器精度 select选择模
  • 树莓派005_L298N电机控制板

    硬件接口 ENA IN1 IN2 控制左边的电机A xff0c ENB IN3 IN4控制右边的电机B 以上六个全部接GPIO口 xff0c 可通过pwm控制ENA ENB实现调速 43 12V为外接电源正极接入口 GND为外接电源负极接入
  • Vue实现Enter键查询

    单个条件 xff1a 64 keyup span class token punctuation span enter span class token punctuation span native span class token op
  • 图文详解教你在线换系统(无须U盘)

    1 先去msdn下载需要安装的系统 建议不要下载到系统盘 系统下载传送门 2 系统下载后 xff0c 双击打开找到setup xff0c 然后以管理员权限打开 3 打开windows安装界面后 xff0c 选择更改windows安装程序下载
  • 从零开始写一个图像处理程序之一(BMP彩色图转灰度图)

    图像二值化可以直接调用opencv的二值化函数去完成处理 xff0c 但是不利用OpenCV从头手写一个处理图片程序未尝不是一件有意思的事情 xff0c 就拿BMP图片为例去做一个 BMP图像 xff1a BMP xff08 Bitmap
  • 智能革命和未来社会《智能时代--大数据和智能革命重新定义未来》

    通过区块链 xff08 Block Chain xff09 在未来跟踪每一件商品从制造出来到被消费的完整行踪 比特币在一定程度上起到货币的作用 xff0c 并且成为全球很安全的洗钱工具 xff0c 源于它背后的一个技术 区块链 block即
  • Git 版本回退方法

    场景一 xff1a 如果想将代码恢复到之前某个提交的版本 xff0c 且那个版本之后提交的版本都不要了 xff0c 就可以使用 git rest 原理 xff1a git reset的作用是修改HEAD的位置 xff0c 即将HEAD指向的
  • Antd form表单的使用、设值、取值、清空值

    1 使用 this props form getFieldDecorator 34 key 34 lt Input gt 3 设值 this props form setFieldsValue key 39 123 39 2 取值 this
  • 静态类,方法,成员

    说起静态类 xff0c 你可能会联想到实例类 这两者并不难区分 xff0c 前者 静态类 只在内存中创建一个 xff0c 而后者 实例类 则是每次实例化后 xff0c 就会再内存创建一份 今天来简单聊一下静态类的理解 代码情景 xff1a
  • shell脚本批量执行可执行文件

    touch一个test sh文件 xff0c 按下方例子vim写入 xff1a span class token comment bin bash span span class token function echo span span
  • git 本地改动了,不保留,直接拉取线上最新代码

    如果您在本地做了改动 xff0c 但是又不想保留这些改动 xff0c 可以使用以下命令强制拉取远程最新代码 xff0c 覆盖掉本地代码 xff1a span class token function git span fetch all s
  • C语言创建单链表

    单链表 链表是一种物理存储单元上非连续 非顺序的存储结构 xff0c 数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表由一系列结点 xff08 链表中每一个元素称为结点 xff09 组成 xff0c 结点可以在运行时动态生成 每个结
  • kvaser二次开发

    总结归纳 xff1a 实施步骤 xff1a 通过浏览网上的大量关于can总线开发的资料 xff0c 建立起对can总线软件开发的大致流程记录优质资料将开发过程流程化通过官方资料研究技术细节开工 技术要点 xff1a can协议 xff0c
  • vue瀑布流布局插件vue-masonry

    插件npm网址 https www npmjs com package vue masonrygithub xff1a https github com shershen08 vue masonry安装 npm install vue ma
  • 双目视觉——点云与RGB图像融合

    目录 一 固定向量类1 cv Vec2 读取像素 二 点云着色四 结果展示1 图像2 点云3 彩色点云 五 参考链接 一 固定向量类 1 cv Vec 在OpenCV中针对三通道矩阵 xff0c 定义的Vec类型有 xff1a cv Vec
  • PX4二次开发环境搭建及报错解决(v1.9.2)

    PX4二次开发环境搭建及报错解决 xff08 v1 9 2 xff09 正文脚本安装方式手动安装编译环境 网上之前已经有很完善的环境搭建教程了 xff0c 但是大多是支持v1 8 0及之前版本的 xff0c 但自从v1 9 0版本之后 xf