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

本文详细介绍了在Ubuntu 18.04或20.04上搭建PX4编译环境,包括克隆项目、更换源、子模块下载、工具链安装、编译过程中的内存溢出解决、以及常见问题如版本切换和依赖包管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章参考:
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还报错,我就没管它,继续后面的操作了。

<think>好的,用户想了解在Ubuntu 18.04上配置PX4和MAVROS的编译环境。我需要根据提供的引用内容来整理步骤。首先,引用[1]提到使用ubuntu_sim_ros_melodic.sh脚本,这可能是一个关键步骤。引用[2]和[3]提供了安装ROS、Gazebo、Mavros、PX4的具体方法,比如配置清华源和安装依赖。 用户可能需要详细的步骤说明,包括安装ROS Melodic,配置PX4环境,安装Mavros,以及验证安装。需要确保每个步骤的命令正确无误,比如sudo apt-get update和安装依赖库。同时要注意可能遇到的依赖问题,比如Gazebo版本兼容性,或者权限问题,比如用户组添加。此外,用户可能会关心如何测试安装是否成功,比如运行仿真和检查MAVROS连接。 需要将信息结构化,分步骤讲解,引用对应的参考文献。还要考虑用户可能不熟悉Linux命令,需要给出具体的命令示例。最后,生成相关问题帮助用户深入理解,比如性能优化或常见错误处理。</think>### Ubuntu 18.04配置PX4和MAVROS编译环境教程 #### 1. 安装ROS Melodic PX4和MAVROS依赖ROS环境,需先安装ROS Melodic(Ubuntu 18.04对应版本): ```bash # 配置清华ROS镜像源 sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list' # 添加密钥 sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 # 安装完整版ROS sudo apt update sudo apt install ros-melodic-desktop-full # 初始化rosdep sudo rosdep init rosdep update ``` 安装完成后,将ROS环境变量加入bashrc: ```bash echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 引用来源:[^3] --- #### 2. 配置PX4编译环境 通过官方脚本快速搭建PX4开发环境: ```bash # 下载PX4源码 git clone https://github.com/PX4/Firmware.git --recursive cd Firmware # 运行自动化配置脚本(包含Gazebo、工具链等) bash ./Tools/setup/ubuntu.sh ``` 脚本会自动安装以下依赖: - Gazebo 9仿真环境 - FastRTPS和FastCDR - 交叉编译工具链 - Python依赖库 引用来源:[^1] --- #### 3. 安装MAVROS MAVROS是ROS飞控通信的桥梁,需额外安装: ```bash # 安装依赖项 sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras # 安装GeographicLib数据集 wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh chmod +x install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh ``` 引用来源:[^2] --- #### 4. 环境验证 1. **PX4仿真测试**: ```bash make px4_sitl_default gazebo ``` 2. **MAVROS连接测试**: ```bash roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557" ``` --- #### 常见问题处理 1. **权限问题**:将用户加入`dialout`组 ```bash sudo usermod -a -G dialout $USER ``` 2. **Gazebo黑屏**:安装显卡驱动或改用软件渲染 ```bash export LIBGL_ALWAYS_SOFTWARE=1 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值