前言
更多无人机知识可关注公众号:无人机系统技术。北航博士为你解析全面的无人机系统知识。
很多朋友在搭建PX4开发环境的时候都会出现一些环境配置的问题,今天笔者就来总结一下ubuntu系统下搭建PX4开发环境的过程。想要开发PX4的朋友强烈建议安装ubuntu系统,在windows下只会遇到很多问题,既不方便,编译速度也慢。下面的整个过程是笔者今天花了整整一天时间亲测过的,真实有效。
添加用户到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的版本有关。
解压缩:
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指令下载代码:
下载代码:
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这个版本编译不出现问题,所以你们就去下这个版本的交叉编译器就行了。
一般没有安装交叉编译器时是运行编译指令时是这样的:
而编译成功是这样的(左边仿真,右边固件):
关于MVAROS以及ROS的使用,我们以后有机会再单独讲述,在这里我们放一个运行MAVROS时的界面给大家看下,下图是运行MAVROS时发布的topic,ROS就是通过这些topic与px4进行数据交互的:
总结
要开发PX4的朋友按照上面的步骤搭建环境一般就不会出现问题了,当然出现问题了也可以根据问题的提示单独进行解决,要想熟练地在ubuntu下进行嵌入式软件的开发还是需要了解一些常用的系统指令以及能够熟练使用像git一样的分布式版本管理系统。
更多无人机知识可关注公众号:无人机系统技术。北航博士为你解析全面的无人机系统知识。