网上之前已经有很完善的环境搭建教程了,但是大多是支持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(使用前将#替换为@)