Ubuntu系统下搭建PX4环境

Ubuntu系统下搭建PX4环境

首先我是从一个小白开始的,完全不懂linux系统,完全不懂PX4,PX4固件是Pixhawk飞行控制器的官方固件,Pixhawk官网也给出了Linux/windows下搭建开发环境的方法。由于种种原因,搭建开发环境时总会遇到各种各样的bug。但是还是参照CSDN上一位大神方法搭建完成了,过程中还是会出现一些上面也没有的bug,也学会怎么去看这里面的报错,最后一路下来解决了所有错误,编译成功。特此分享:
1、权限设置,如果不做这一步会产生很多上述的权限问题,如果用sudo去修复,那就……可以重装系统了。
把用户添加到用户组 “dialout”
sudo usermod -a -G dialout $USER
2、安装必备软件 CMAKE、QT、Python
添加源
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
更新软件
sudo apt-get update
安装python、git、qt
sudo apt-get install python-argparse git-core wget zip
python-empy qtcreator cmake build-essential genromfs -y
添加源
sudo add-apt-repository ppa:openjdk-r/ppa
更新
sudo apt-get update
安装仿真软件和需要的库文件,注意体验下面两句的区别(一句代码后有 -y ,一句没有)
sudo apt-get install openjdk-8-jre
sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv- dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y
这个过程中除了最后一句话会出现问题,其他都能够非常正常的执行完。最后一段话报错我无视掉了,后面编译过程中去解决这个问题,一路下来也没有出现什么问题,因此就没有去管这句话。

3、卸载模式管理器,Ubuntu配备了一系列代理管理,这会严重干扰相关的串口(或usb串口),最明显的表现就是硬件连接到PC机后,无法读出硬件,无法烧录上传固件。
sudo apt-get remove modemmanager

4、更新相关库文件
添加源 添加第一个源时可能会出现Failed,不过没关系,继续添加第二个
gcc-arm-none-eabi源添加Failed的问题后面会解决
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
检查更新,由于上面那个Failed,检查更新时,部分链接也可能访问不到
sudo apt-get update
不管那么多了,先把能安装的软件/库文件安装上,后面编译时缺什么再补装什么
sudo apt-get install python-serial openocd flex bison libncurses5-dev autoconf texinfo build-essential libftdi-dev libtool zlib1g-dev python-empy gcc-arm-none-eabi -y
这个阶段也会出现一些问题,但是也不会太影响结果,只管输入就行了,期间有任何问题可以忽略不管。
5、安装正确版本的gcc-arm-none-eabi
还记的上面出现的那个Failed吗?实际我们安装的gcc-arm-none-eabi版本不支持源码,所以需要安装正确的版本。输入一下代码可以查看gcc-arm-none-eabi版本信息。
arm-none-eabi-gcc --version
我们需要的是GCC6.3.1,如果看到如下的信息那就代表gcc-arm-none-eabi版本安装正确,直接跳到代码编译步骤即可,否则就按下述步骤重新安装gcc-arm-none-eabi。
Ubuntu系统下搭建PX4环境

我是直接成功了,所以没有安装GCC,如需要安装请自行百度方法。

6、源码下载
首先需要安装一个库文件
sudo apt-get install lsb-core
下载源码
创建src文件夹
mkdir -p ~/src
进入文件夹
cd ~/src
克隆源码
git clone git clone -b v1.8.2 https://github.com/PX4/Firmware.git
这个过程中,如果不*的话,至少需要2到3个小时,一般下载速度只有10K左右,因此最好找一个好一点的*。
弄到*成功之后,就可以开始下载,下载速度取决于个人网速,如果网速不行,可以考虑开手机热点,一般手机热点大概30分钟左右完成。
如果还是很慢,可以Ctrl+X然后Ctrl+Z强制终止。之后进入src文件夹文件夹,把文件夹中已clone的代码删除,然后回到终端,进入src文件夹重新clone。
之后需要进入Firmware文件夹,进行初始化、更新子模块操作,耐心的等待……
cd Firmware
git submodule update --init --recursive
输入完成之后耐心等待,这个过错没有进度显示,我每次都是以为崩溃了,半天没有动静,就这样删除之后下载然后再删除,一来下载了7,8次,安装上10次,最后耐心下来等,反正过了一个晚上最后成功了,所以这个过程也许很慢,一定要耐心!!!
7、源码编译
make是操作字符 px4fmu是固件名称 -v2是版本号 _default是默认配置
实际make之后是一个文件名称,需要编译的模块都在其中
可以输入make p 然后按Tab键,会跳出一连串p开头的文件
make px4fmu-v2_default
不同版本这句话有点不一样,请一定注意!!!!!
编译应该会出现这个问题:
Ubuntu系统下搭建PX4环境

自己需要自己去定位。例如,这个错误实际是少安装了python的一个module造成的。
sudo apt-get install python-jinja2
再次编译,还是会出现问题:
Ubuntu系统下搭建PX4环境

从最开始进行查找,会发现实际出现Error的原因是“Required python packages not installed”(查找错误原因的能力必须要掌握)。然后可以尝试一下系统给出的建议的解决方案。
sudo apt-get install python-pip
安装完成之后再make px4fmu-v2_default一次,接下来还是会出现问题,然后sudo pip install numpy toml,这样就会解决本问题。然后编译快一分钟之后,问题又出现一个:
Ubuntu系统下搭建PX4环境

问题是内存溢出,不能照着网络上的把1008K改为2032K,我也没有找到十分好的解决办法,选择注释掉没有用的三个模块,然后就成功了。之前一直按照网上方法,可以编译通过,但是下载一直存在问题,报错图片如下:
Ubuntu系统下搭建PX4环境