天天看点

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

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

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

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

正文

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

脚本安装方式

首先我们进入官网:dev.px4.io

(官网的教程已经很完善了,但是对于新手可能不太友好。我们做一下梳理。)

在Getting Started下面我们可以找到Ubuntu的安装教程。PX4提供了一些安装的脚本,我们直接运行就可以安装。

安装过程和编译过程中可能会遇到一些问题,因此在后面一节我们通过手动安装的方式,介绍一下问题的解决方法。你也可以选择不用脚本,直接手动安装。如果你是新手,手动安装有助于你了解编译环境的构成。

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

运行脚本进行安装,需要先将用户添加至组

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

然后下载你想要的脚本,脚本内容上图所示页面有介绍。

之后运行即可,在此我们以ubuntu_sim_common_deps.sh为例。

//用source命令运行脚本
source ubuntu_sim_common_deps.sh
           
PX4二次开发环境搭建及报错解决(v1.9.2)正文

手动安装编译环境

在我的上一个教程,写了如何安装Ubuntu双系统,因此我们就是在这个刚安装好的空白双系统中进行的px4环境搭建。这个系统已经换了源,进行了初始的update工作,剩下的工作都还没有做。

这个教程是写给小白看的,因此会比较啰嗦。但当我最开始还是18k纯小白的时候,我是多么希望有这样啰嗦的教程呀。希望大家理解。

首先我们需要去github上下载PX4的源码,因此我们需要装一个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
           

这一步一样很可能会因为网不好而失败,没关系,失败了你就重新执行这个语句。

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

成功之后,这个包就下好了,接下来如果编译时出现报错,就都是你电脑环境的问题。

我们执行make指令测试一下:

make px4fmu-v2_default
           

哦吼,报错了,你可以尝试着理解一下这个报错,是缺少python-jinja2。并且上面已经给出了解决方案:

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

我们按它的指点安装一下缺少的这个东东:

sudo apt-get install python-jinja2
           

然后重新编译一下,又报错:

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

这个报错也给出了解决方案,执行一下:

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

然后你会看到执行第二条命令的时候报错:

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

这是因为你的系统里没有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
           

之后我们再编译,又报了新的错误:

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

这是因为系统的gcc版本不正确的缘故,我们需要安装指定版本的gcc。

我们打开px4官网教程,找到之前看到的安装脚本们,找到ubuntu_sim_nuttx.sh,打开:

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

将下图所示的这段代码复制到命令行进行执行:

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

然后重新编译:

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

成功了!!!!!

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

如果你没有成功也没有关系,不要气馁,让我们再来一次。不过要养成自己找问题的习惯。

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。