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

文章参考:
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

成功后会显示:Xavie平台 ubuntu18.04下PX4环境配置与编译_第1张图片

  • 方法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位,工具链版本为:
Xavie平台 ubuntu18.04下PX4环境配置与编译_第2张图片
(2)下载后参考博客在Linux Ubnutu下安装arm-none-eabi-gcc及所必须的各种依赖包进行安装即可。

完成后重启

3. 编译

不同版本的编译指令可能不同,例如我采用的是px4 v2版本,那我先在终端写make p,然后长按Tab键,会弹出一堆名称,如图所示
Xavie平台 ubuntu18.04下PX4环境配置与编译_第3张图片

查找并选择适合我的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还报错,我就没管它,继续后面的操作了。

你可能感兴趣的:(环境配置,文件下载,ubuntu,linux,飞桨)