Xavie平台 ubuntu18.04下PX4环境配置与编译

2023-05-16

文章参考:
PX环境搭建编译px4_fmu-v2_default相关问题的解决方法
pip3 使用问题小记
PX4安装与编译
ubuntu18.04配置px4编译环境
Ubuntu20.04或18.04下PX4(pixhawk)源码编译环境配置教程,及构建代码各种错误解决办法
知乎-PX4固件下载及环境搭建小记(Ubuntu 18.04)
PX4安装到Ubuntu出现内存溢出的解决办法

开始之前先确保系统安装了git,不确定的话可以直接安装

sudo apt install git

1.首先克隆项目

参考知乎教程的第二步,因为没有翻墙,所以先克隆PX4文件,换源,再克隆子项目
先执行

it config --global http.postBuffer 2000000000

这样克隆速度快些

1) 去掉recursive ,recursive会持续克隆一大堆子项目

git clone https://github.com/PX4/PX4-Autopilot.git 

这样克隆的版本是最新的版本,如果想克隆某一版,例如我需要克隆1.8.2版本的代码,则执行

git clone --branch v1.8.2 https://github.com/PX4/PX4-Autopilot.git

2) 子模块的下载,我找到两种办法,有一块板子是换.gitmodules文件的源成功的,还有一块板子是在终端添加克隆前缀成功的。下面分别介绍

  • 方法1:换.gitmodules文件的源

进入PX4-Autopilot文件夹,Ctrl+h 找到并打开.gitmodules文件
将文件中所有的https://github.com 改为 https://镜像源
其中,镜像源用到了镜像源参考博客,我采用的是hub.fastgit.xyz

注意:如果执行了3)中的–init指令,发现源不可用,再执行这一步换源,会没有用,可能是初始化定了,再只修改.gitmodules文件没用了,所以一定要确保源可用,可以打开源的网址看看是不是正常运行着的。如果真的用到了错误的源,只能重新克隆一遍源码了。

换源后,终端执行下面的指令

cd PX4-Autopilot   
git submodule update --init --recursive

如果上述出现了部分下载失败,继续执行下面的命令,直到全部成功

git submodule update  --recursive

成功后会显示:在这里插入图片描述

  • 方法2:在终端添加克隆前缀
    这里还是用到了镜像源参考博客里的源https://gitclone.com,但操作方式有变化,根据官网介绍的第二个用法,
git config --global url."https://gitclone.com/".insteadOf https://

git clone https://github.com/tendermint/tendermint.git

这样相当于执行完第一句,以后下载什么都可以直接执行克隆源码地址,他自动给加前缀。
取消的办法是:打开home界面,执行ctrl+h,打开隐藏文件.gitconfig,把instead那两句删除

==!!反正下载源码感觉是个玄学,最后一次配的时候,子模块老不成功,我直接全取消按源码地址克隆居然成功了……………………

2.运行 bash 脚本,以安装所有工具链

2.1

可以考虑先跳过nuttx 等(官网提示)

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

这里我老报错python2.7的问题,还有pyulog用python2.7下载老报格式错,所以我找了个最简单的python2.7切换为python3的办法(没有python3的先下载)

  • 配置ssh链接,安装openssh-server
sudo apt-get install openssh-server
  • 将Python3设置为默认 python2切换python3
    可以直接输入下面的:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

原理上,输入

sudo update-alternatives --config python

可以查看现在python2和python3的优先级
例如我的输出结果是:

 Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3   150       auto mode
  1            /usr/bin/python2   100       manual mode
  2            /usr/bin/python3   150       manual mode
  
Press <enter> to keep the current choice[*], or type selection number: 

*是我选中的最优先的那个,现在选的是0,即python3,如果紧接着键入1,则切换为python2为默认了。如果不想变直接回车退出。

  • 验证
 python

输出:Python 3.6.9 (default, Dec 8 2021, 21:08:43)

2.2

网络限制,建议单独下载安装GCC交叉编译器,这一步也可以在2.1节之前进行
关于交叉编译参考了一次搞定 Arm Linux 交叉编译、最新Linux系统下搭建PX4/Pixhawk原生固件编译环境!!!以及在Linux Ubnutu下安装arm-none-eabi-gcc及所必须的各种依赖包,大概了解了安装流程:

(1)下载的版本
下载网站为GNU Toolchain,我用的平台为64位的Xavier板子,配的是ubuntu系统,因此进入链接,仔细确认版本后选择的arm64位,工具链版本为:
在这里插入图片描述
(2)下载后参考博客在Linux Ubnutu下安装arm-none-eabi-gcc及所必须的各种依赖包进行安装即可。

完成后重启

3. 编译

不同版本的编译指令可能不同,例如我采用的是px4 v2版本,那我先在终端写make p,然后长按Tab键,会弹出一堆名称,如图所示
在这里插入图片描述

查找并选择适合我的v2版本(由飞控确定),执行:

make px4fmu-v2_default

执行后遇到了内存溢出的报错,即

[637/639] Linking CXX executable nuttx_px4fmu-v2_default.elf
FAILED: nuttx_px4fmu-v2_default.elf 
...(此处省略n行代码)...
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: nuttx_px4fmu-v2_default.elf section `.data' will not fit in region `flash'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: region `flash' overflowed by 652 bytes
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Makefile:154: recipe for target 'px4fmu-v2_default' failed
make: *** [px4fmu-v2_default] Error 1

解决办法:
打开编译后的文件 ./build/nuttx_px4fmu-v2_default/NuttX/nuttx/configs/px4fmu-v2/scripts/ld.script
将flash (rx) : ORIGIN = 0x08004000, LENGTH = 1008K
修改成flash (rx) : ORIGIN = 0x08004000, LENGTH = 1508K
保存后,在终端再次编译即可

若有硬件则需要上传到硬件,通过usb下载固件

make  px4fmu-v2_default upload

在过程中踩的雷主要是:
1.下载了新版本,手动切换回旧版本,在编译过程中出现与nuttx相关的missing and no known rule to make it的报错,原因是在那个目录下找不到相关文件,查找半天无果,所以直接重新下载了1.8.2版本的代码,就解决了。

2.下载源码遇到很多问题,比如克隆的时候,有的教程直接将子模块打包下载,即

git clone https://github.com/PX4/PX4-Autopilot.git  --recursive

除非科学上网,否则肯定下不下来,还尝试过换源下载,自己也找了很多源,也不好使,按照我现在写的办法能够比较快的解决这个下载问题
好不容易下载好了,l利用git checkout切换到自己想要的版本,编译也会报各种各样的错,不如直接克隆的时候就克隆好自己对应的版本。

3.bash过程中遇到了很多问题,没怎么记录,但主要问题感觉还是因为源码没整好,所以报了很多莫名其妙的错,在这之前一定先把代码解决好。还有一些错是包下不下来,或者用sudo apt-get install 或者用pip install总能解决。除了一个叫pyulog的,明明都在pip list的列表里了,每次执行bash还报错,我就没管它,继续后面的操作了。

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

Xavie平台 ubuntu18.04下PX4环境配置与编译 的相关文章

  • android headless模式,Headless JS(后台任务)

    Headless JS 是一种使用 js 在后台执行任务的方法 它可以用来在后台同步数据 处理推送通知或是播放音乐等等 JS 端的 API 首先我们要通过AppRegistry来注册一个异步函数 xff0c 这个函数我们称之为 任务 注册方
  • AMOVLAB-QGC地面站二次开发-第七章

    下面红色部分为添加内容 第一步 xff0c 增加单个设备复选按钮 xff0c 位于MultiVehicleList qml中 ColumnLayout id innerColumn anchors margins margin anchor
  • vmware虚拟机usb协调服务器,win10虚拟机vmware usb arbitration service找不到如何解决

    近来 xff0c 一位用户反馈自己在win10系统电脑中运行虚拟机安装xp系统 xff0c 可是进入系统后发现无法使用USB xff0c 而且还提示需要启用vmware usb arbitration service服务 xff0c 之后在
  • Ubuntu14.04下配置并使用MTK flash tool

    前言 由于从事的工作需要经常对手机进行刷机操作 xff0c 而MTK提供的flash tool基本都是在Windows下运行的 xff0c 很多工作又是在linux下完成的 xff0c 要涉及到大量的android源码编译 生成刷机包 调试
  • ubuntu remmina 调整窗口大小以适应远程分辨率

    ubuntu 11 04使用了 remmina作为默认的远程控制软件 xff0c 有个问题是 调整窗口大小以适应远程分辨率 这个按钮 点击后 由于不能计算出分辨率 xff0c 导致不停的计算 无法使用 解决方法 xff1a 在 xff5e
  • Centos squid配置

    squid配置 题目 一 关闭Selinux跟防火墙 二 安装squid服务 并启动 三 配置路由转发 提供路由功能 临时开启 永久开启 四 浏览器测试 打开火狐浏览器找到网络设置 提示 有任何问题可以私信我 下班看到第一时间回复 题目 s
  • [系统安全] Windbg Preview调试记录

    本文为笔者从零基础学习系统安全相关内容的笔记 如果您对系统安全 逆向分析等内容感兴趣或者想要了解一些内容 欢迎关注 本系列文章将会随着笔者在未来三年的读研过程中持续更新 前文链接 系统安全 PE文件格式详解1 系统安全 PE文件格式详解2
  • 北斗和GPS的工作频段

    北斗GPS铱星频段 北斗短报文发送L 1615 68 3MHZ 北斗短报文接收S 2491 75 3MHZ B1 xff1a 1559 052MHZ 1591 788MHZ 民用 标称频率1561 098MHZ B2 xff1a 1166
  • ftp虚拟用户服务器,FTP服务器虚拟用户配置

    FTP服务配置问题及解决方案 使用被动模式 xff0c 设置云主机IP为被动模式数据传输地址 xff1a 在配置文件内添加 pasv enable 61 YES pasv promiscuous 61 YES pasv address 61
  • 关于mac 上传、下载linux服务器sftp命令

    二话不说 xff0c 直接贴命令 root 是用户名 xxx xx x xx 是ip地址 sftp root 64 xxx xx x xx ip地址 连接进行输入密码即可执行 xff1a 上传 xff1a Put 本地地址 线上地址 下载
  • 正则表达式中?: ?= ?! ?<= ?<!的用法

    pattern 非获取匹配 xff0c 匹配pattern但不获取匹配结果 xff0c 不进行存储供以后使用 这在使用或字符 来组合一个模式的各个部分是很有用 例如 industr y ies 就是一个比 industry industri
  • python程序猿必备-reStructuredText快速入门

    reStructuredText快速入门 reStructuredText也称为reST xff0c 这是一种被Python程序员广泛使用的纯文本标记语言 xff0c 就像markdown一样 reStructuredText pychar
  • 程序关闭计算机没反应为什么,电脑点击关机没反应怎么办

    我们不用电脑时候都会关机 xff0c 但是有时点击关机没反应或者卡住 xff0c 应该怎么解决呢 xff1f 下面学习啦小编教大家笔记电脑关不了机的解决方法 xff0c 供您参考 笔记本电脑关不了机的解决方法 当电脑无法关机时 xff0c
  • 梯度反转层(Gradient reversal layer, GRL)

    GRL作用 xff1a 将传入到GRL的梯度乘上一个负数 xff0c 使得在GRL前后的网络的训练目标是相反的 在接入GRL以后 xff0c 特征提取器就会有两个目标需要满足 xff0c 第一是特征提取器需要生成能够预测出正确标签的特征 x
  • 远程连接Ubuntu Server安装图形化界面的过程

    远程连接ubuntu server的坑 首先下载xshell xff0c 新建连接后设置主机名字 xff0c 在host里面填上ipv4或ipv6的地址 xff0c 注意端口号要在主机的 etc ssh sshd config这个文件中查看
  • 网络操作系统 第十章 DNS服务器管理与配置

    习题 1 什么是域名系统 xff1f 描述域名解析的过程 1 xff09 域名系统 xff1a Domain Name System缩写DNS xff0c 是因特网的一项核心服务 域名系统作为可以将域名和IP地址相互映射的一个分布式数据库
  • pytorch模型保存与加载:state_dict、load_state_dict

    简而言之 xff0c pytorch保存模型时用的映射关系 pytorch中的state dict是一个简单的python字典对象 xff0c 将每一层与之对应的参数建立映射关系 只有参数可训练的layer才会保存到模型 的state di
  • python中@staticmethod

    64 staticmethod用于修饰类中的方法 xff0c 使其可以再不创建类实例的情况下调用方法 xff0c 这样做的好处是执行效率较高 xff0c 当然也可像一般方法一样用实例调用该方法 该方法一般被成为静态方法 静态方法不可以引用类
  • attention is all you need

    摘要 主流的序列转换模型都是基于复杂的循环或卷积神经网络 xff0c 这个模型包含一个编码器和一个解码器 具有最好性能的模型是通过一个注意力机制 xff0c 将编码和解码连接在一起 我们提出了一个新的简单网络结构 Transformer x
  • 软件测试流程、测试方法、测试软件

    软件测试的流程主要包含单元测试 组装测试 确认测试 系统测试四个阶段 单元测试 xff1a 也叫模块测试 xff0c 单元是指清晰定义了子功能的最小单位 xff0c 如程序的最小编译单位等 xff0c 是测试工作的第一步 单元测试通常要编写

随机推荐

  • 验证平台,SV 和UVM

    验证 是确保设计和预定的设计期望一致的过程 验证平台 xff1a 被用来应用一个或多个测试激励 xff0c 并将激励发送到设计的输入中 xff0c 激励可通过验证平台产生 xff0c 或者通过手动创建 最后 xff0c 输出进行比较 xff
  • 清除docker镜像缓存

    清除docker镜像缓存 为什么就一个命令也要单开一个博客记录 因为坑死我了 xff0c 打了一早上镜像一直有问题 xff0c 搞到最后是缓存的锅 佛了 xff01 命令 docker system prune volumes 该命令清除
  • 解决 ERROR: Command errored out with exit status 128: git clone -q

    在安装 git 43 github 网页时出现此错误 xff0c 全称是 Collecting git 43 https github com pytorch tnt git 64 master Cloning https github c
  • IP能ping通,xshell远程连接失败

    ip能ping通 xff0c Xshell 6 远程连接却失败 xff0c 是什么原因呢 xff1f 挨个排查 xff1a 1 在cmd中这个地址是能ping通的 xff0c 说明这台服务器没有被占用 2 到机房在这台服务器上操作时 xff
  • Jetson TX2(Ubuntu16.04)安装ROS和ORB-SLAM2

    文章目录 1 前言2 安装ROS2 1 准备工作2 2 ROS Kinetic Kame 的安装和配置2 3 配置环境2 4 测试 3 配置ORB SLAM2运行环境3 1 创建ROS工作空间3 2 安装Pangolin 4 安装ORB S
  • 操作系统的分类及介绍

    操作系统分类 xff1a 1 xff09 按用户界面的使用环境和功能特征分为 xff1a 批处理操作系统 xff0c 分时操作系统 xff0c 实时操作系统 xff1b 2 xff09 按计算机体系结构的发展分为 xff1a 个人操作系 x
  • 树莓派安装wiringpi显示不存在解决方法

    环境 xff1a 树莓派4B 使用sudo apt get install wiringpi 指令安装wiringpi包时 xff0c 出现下面的提示 xff1a Reading package lists Done Building de
  • PMSM速度环LADRC控制与PI控制仿真对比和实验对比

    PMSM速度环 电流环采用LADRC控制与PI控制仿真对比和实验对比 PMSM矢量控制速度环 电流环调节器均采用PI的仿真模型PMSM矢量控制速度环 电流环调节器均采用ADRC的仿真模型仿真模型中相关细节PMSM矢量控制调节器均采用PI和均
  • linux 802.x 认证,ubuntu 802.1x 认证

    ubuntu 802 1x 认证 发布时间 2008 04 17 00 55 54来源 红联作者 nutra 在Linux下有两个软件可以同样实现以太网IEEE 802 1x认证 xsupplicant和wpa supplicant xff
  • springboot之kafkaListener手动开启与暂停

    业务场景 由于这是项目辅助服务 xff0c 用于向其它各个服务推送数据 kafka
  • linux svc作用,[svc]linux性能监控

    w Show who is logged on and what they are doing root 64 n1 w w Show who is logged on and what they are doing 10 15 20 up
  • 树莓派入门嵌入式linux,从树莓派带你掌握嵌入式linux产品实战开发-- 开发环境安装(五)...

    从树莓派带你掌握嵌入式linux产品实战开发 开发环境安装 五 作者 xff1a 伍俊伟 wjw 64 paipaiiot com 本文非作者授权 xff0c 禁止转载 2020年8月8日 本次开发环境使用虚拟机vmware安装ubuntu
  • 路径优化算法研究

    路径优化算法研究 启发式搜索算法 1 启发式搜索算法 启发式属于运筹学的范畴 xff0c 通常采用图论 Graph Theory 法进行计算 启发式算法一般由启发函数来引导搜索方向并估算当前点与终点间的距离 xff0c 适合解决单源点最短路
  • 2019蓝桥杯省赛B组模拟赛(一):马的管辖

    在中国象棋中 xff0c 马是走日字的 一个马的管辖范围指的是当前位置以及一步之内能走到的位置 xff0c 下图的绿色旗子表示马能走到的位置 如果一匹马的某个方向被蹩马脚 xff0c 它就不能往这个方向跳了 xff0c 如下图所示 xff0
  • Oracle 系列之索引(Index)

    索引的意义在于类似一本书的目录 xff0c 可以快速的查找到需要的内容 一 创建语法 create or replace unique bitmap index lt schema gt lt index name gt on lt sch
  • java爬虫框架之webMagic

    webMagic框架 前言介绍案例控制类 解析类 持久化类 用到的工具类以及配置类 注意事项 后语 前言 文章仅供安全领域的朋友学习使用 xff01 xff01 严禁做违法违纪的事情 xff0c 责任自负 介绍 WebMagic是一个简单灵
  • 工作笔记05:imu、底盘车轮、单激光雷达外参校准(基于hdl_graph_slam建图和定位)

    目录 1 imu 校准1 1 IMU型号1 2 坐标定义1 2 1 大地坐标系 WGS84 1 2 2 当地地理坐标系 xff08 ENU xff09 1 2 3 传感器坐标轴定义 1 3 传感器内参校准1 4 校准imu和车底坐标系 2
  • 安装PX4编译环境,fireware固件下载,以及qgc源码下载二次开发。

    PIXHAWK的官网网站 xff1a https dev px4 io v1 9 0 zh tutorials tutorial hello sky html 固件环境搭建和编译 pixhawk的中文网站 xff1a https www b
  • C语言strtok()函数:字符串分割

    1 头文件 xff1a include lt string h gt 2 定义函数 xff1a char strtok char s const char delim 分解字符串为一组字符串 s为要分解的字符 xff0c delim为分隔符
  • Xavie平台 ubuntu18.04下PX4环境配置与编译

    文章参考 xff1a PX环境搭建编译px4 fmu v2 default相关问题的解决方法 pip3 使用问题小记 PX4安装与编译 ubuntu18 04配置px4编译环境 Ubuntu20 04或18 04下PX4 xff08 pix