PX4开发环境搭建

前言

更多无人机知识可关注公众号:无人机系统技术。北航博士为你解析全面的无人机系统知识。

很多朋友在搭建PX4开发环境的时候都会出现一些环境配置的问题,今天笔者就来总结一下ubuntu系统下搭建PX4开发环境的过程。想要开发PX4的朋友强烈建议安装ubuntu系统,在windows下只会遇到很多问题,既不方便,编译速度也慢。下面的整个过程是笔者今天花了整整一天时间亲测过的,真实有效。
PX4开发环境搭建_第1张图片
添加用户到dialout工作组

将你创建的用户加入到用户组dialout中去,注销后重新登录。创建独立用户的目的是这样可以让开发环境分离开来,避免出现不同用户间的版本冲突等情况。将用户加入dialout用户组的目的是dialout拥有对串口tty的操作权限。

sudo usermod-a -G dialout$USER

安装软件包

基本上就是你编译程序,下载程序,调试程序需要使用的软件包了,ubuntu系统的一个好处就是可以使用指令直接安装这些程序,当然你也可以单独下载后再进行安装。

更新软件源列表:

sudo apt-get update -y

安装git、zip、cmake、qt、ninja等必用软件包:

sudo apt-get install git zip qtcreator cmake \
 
     build-essential genromfs ninja-build exiftool -y

安装python依赖包

安装常用python依赖包及管理工具:

sudo apt-get install python-argparse \
    
    python-empy python-toml python-numpy python-yaml \
   
    python-dev python-pip -y

sudo -H pip install --upgrade pip

sudo -H pip install pandas jinja2 pyserial cerberus

安装日志分析工具

Pyulog可以帮助处理px4的日志文件,尤其是在提取单个topic的数据时非常方便,建议安装。

sudo -H pip install pyulog

安装Gazebo仿真软件

仿真软件有好几个,Gazebo只是其中一个,但是其功能强大,版本迭代也快,使用者人数众多,建议优先使用。

依赖包安装:
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev –y
  
设置软件包的来源:

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

设置软件包密钥:

wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

更新软件源列表:

sudo apt-get update -y

安装Gazebo:
sudo apt-get install gazebo9 -y

安装Gazebo9的依赖包:
sudo apt-get install libgazebo9-dev -y

安装ROS和MAVROS

ROS和MAVROS对PX4二次开发以及想要通过其他板载计算机处理诸如视觉识别等任务的开发者来说是比较好的使用方案,建议有此类需求者安装。

设置软件包的来源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

设置软件包密钥:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116

更新软件源列表:

sudo apt-get update

安装基础版ROS和MAVROS:

sudo apt-get install -y ros-kinetic-ros-base ros-kinetic-mavros ros-kinetic-mavros-extras

证书问题:

sudo c_rehash /etc/ssl/certs

MAVROS支持包:

sudo geographiclib-get-geoids egm96-5

rosdep初始化:

sudo rosdep init

rosdep更新:

rosdep update

设置ros运行环境:

echo "source /opt/ros/kinetic/setup.bash" >> $HOME/.bashrc
source /opt/ros/kinetic/setup.bash

安装交叉编译器

用户在ubuntu系统下编译的固件要在arm系统中运行,所以一定会用到交叉编译器,先到下面这个网站下一个比较高版本的安装文件:

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

这里建议用2017-q4版本,笔者下载了以下3个版本试验过,只有这个版本在交叉编译时没有问题,这个跟PX4的版本有关。

PX4开发环境搭建_第2张图片

解压缩:
tar -jxf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2

配置编译环境,将编译器的路径放到.bashrc或者.profile文件中:
export PATH=$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin:\$PATH

查看编译器版本确认是否配置成功:
arm-none-eabi-gcc --version

运行指令及结果如下:
在这里插入图片描述

PX4代码管理

先到github上面找到px4,然后根据下图中的地址使用git clone指令下载代码:

PX4开发环境搭建_第3张图片

下载代码:
git clone https://github.com/PX4/Firmware.git
     
更新子模块:

git submodule update --init –-recursive
    
编译:

make px4_fmu-v3_default
 
编译后上传:

make px4_fmu-v3_default upload

环境配置验证

在完成上述环境的搭建之后,就可以开始仿真和固件的编译了

先进行仿真环境的测试,打开一个Terminal,进入到px4文件夹下,输入以下指令:

make px4_sitl gazebo

界面是这样的:

配合QGC进行仿真测试:

固件编译:

一般情况下仿真没有问题时如果编译固件出错都是交叉编译器的问题,这次小编亲自测试了三款交叉编译器的版本,发现只有2017-q4这个版本编译不出现问题,所以你们就去下这个版本的交叉编译器就行了。

一般没有安装交叉编译器时是运行编译指令时是这样的:

PX4开发环境搭建_第4张图片

而交叉编译器出现版本问题时是这样的:
PX4开发环境搭建_第5张图片

而编译成功是这样的(左边仿真,右边固件):

关于MVAROS以及ROS的使用,我们以后有机会再单独讲述,在这里我们放一个运行MAVROS时的界面给大家看下,下图是运行MAVROS时发布的topic,ROS就是通过这些topic与px4进行数据交互的:

总结

要开发PX4的朋友按照上面的步骤搭建环境一般就不会出现问题了,当然出现问题了也可以根据问题的提示单独进行解决,要想熟练地在ubuntu下进行嵌入式软件的开发还是需要了解一些常用的系统指令以及能够熟练使用像git一样的分布式版本管理系统。

更多无人机知识可关注公众号:无人机系统技术。北航博士为你解析全面的无人机系统知识。

你可能感兴趣的:(实战)