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) 的相关文章

  • PX4与TX2通信

    PX4与TX2通信以及相关数据的获取 目录 1 PX4硬件接口 2 TELEM1 2接口线序 3 PX4与TX2通信 PX4 IO口定义 xff1a PX4硬件 xff1a 4 通信测试 5 RTPS 43 ROS Jetson TX2终端
  • PX4使用I2C方式添加自定义传感器(1)

    PX4使用I2C方式添加自定义传感器 xff08 1 xff09 前言 毕业设计就是要在PX4上添加一个传感器 xff08 角度传感器 xff09 xff0c 由于板子上的接口数量很少 xff0c 很是宝贵 最后只能选择通过I2C通信方式
  • PX4 Offboard Control with MAVROS--Takeoff(一键起飞)

    警告 xff1a 请先在仿真环境下进行测试 xff0c 能达到预期效果后在进行实际飞行测试 xff0c 以免发生意外 本篇文章只是用作学习交流 xff0c 实际飞行时如出现意外情况作者不予以负责 所需材料 1 PIXhawk或者Pixrac
  • PX4位置控制offboard模式说明

    offboard模式的开发及应用 一 px4固件的模式 px4固件支持10几种飞行模式 xff0c 从代码结构上分析 xff0c 分为基本模式 自定义模式和自定义子模式 1 基本模式 基本模式又分为 xff0c 位置控制模式 自稳模式 手动
  • PX4 GAZEBO无人机添加相机并进行图像识别

    PX4 GAZEBO无人机添加摄像头并进行图像识别 在之前完成了ROS的安装和PX4的安装 xff0c 并可以通过roslaunch启动软件仿真 接下来为无人及添加相机 xff0c 并将图像用python函数读取 xff0c 用于后续操作
  • Ubuntu下构建PX4软件

    本搭建过程基于http dev px4 io starting building html xff0c 希望大家互相交流学习 原文 xff1a Building PX4 Software xff08 构建PX4软件 xff09 PX4 ca
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • PX4飞控之PWM输出控制

    PX4飞控之PWM输出控制 多旋翼电调如好盈XRotor xff0c DJI通用电调等都支持PWM信号来传输控制信号 常用的400Hz电调信号对应周期2500us xff0c 一般使用高电平时间1000us 2000us为有效信号区间 xf
  • 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

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

    PX4模块设计之一 xff1a SITL amp HITL模拟框架 1 模拟框架1 1 SITL模拟框架1 2 HITL模拟框架 2 模拟器类型3 MAVLink API4 总结 基于PX4开源软件框架简明简介的框架设计 xff0c 逐步分
  • PX4模块设计之二十四:内部ADC模块

    PX4模块设计之二十四 xff1a 内部ADC模块 1 内部ADC模块简介2 模块入口函数2 1 主入口board adc main2 2 自定义子命令custom command 3 内部ADC模块重要函数3 1 task spawn3
  • PX4模块设计之四十五:param模块

    PX4模块设计之四十五 xff1a param模块 1 param模块简介2 模块入口函数param main3 重要函数列表4 总结5 参考资料 1 param模块简介 Description Command to access and
  • PX4模块设计之四十六:dataman模块

    PX4模块设计之四十六 xff1a dataman模块 1 dataman模块简介2 模块入口函数dataman main3 dataman模块重要函数3 1 start3 2 stop3 3 status3 4 task main 4 A
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • px4无人机常识介绍(固件,px4等)

    专业名词解释 aircraft 任何可以飞或者可以携带物品还是搭载旅客的飞行器统称为飞机 航空器 uav 无人驾驶飞机 vehicle 飞行器 airplane plane aero plane 有机翼和一个或多个引擎的飞行器统称为飞机 D
  • px4下载指定版本的固件、git用法

    https hub fastgit org PX4 PX4 Autopilot git describe tag 查看当前版本号 git tag l 查看所有版本 xff0c 也就是打个tag git checkout v1 9 1 跳转到
  • PX4中自定义MAVLink消息(记录)

    简单记录一下这个过程 一 自定义uORB消息 这一步比较简单 xff0c 首先在msg 中新建ca trajectory msg文件 uint64 timestamp time since system start span class t
  • 步骤三:PX4,Mavros的下载安装及代码测试

    1 安装Mavros sudo apt install ros melodic mavros ros melodic mavros extras 2 安装Mavros相关的 geographiclib dataset 此处已经加了ghpro
  • 步骤八:PX4使用cartographer与move_base进行自主建图导航

    首先老样子硬件如下 飞控 HOLYBRO PIXHAWK V4 PX4 机载电脑 jetson nano b01 激光雷达 思岚a2 前提 你已经完成了cartographer建图部分 能够正常输出map话题 前言 由于要参加中国机器人大赛
  • 飞行姿态解算(三)

    继之前研究了一些飞行姿态理论方面的问题后 又找到了之前很流行的一段外国大神写的代码 来分析分析 第二篇文章的最后 讲到了文章中的算法在实际使用中有重大缺陷 大家都知道 分析算法理论的时候很多情况下我们没有考虑太多外界干扰的情况 原因是很多情

随机推荐

  • 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