从3月1号,开始接触无人机飞控
在期间收集了很多关于无人机飞控的资料,一一详细阅读,但是还是有很多不太明白的地方,让笔者很是困惑,仿佛是拿着一个做好的圆大饼不知为何下口一样......(最近的感慨)
本文是参考网络上的文章(第五部分给出了引用参考文章)与自己实际搭建的一个总结,希望对大家有所帮助,好了,切入正题开始搭建我们在ubuntu下的PIXhawk编译环境:
一、所需软件:
1.虚拟机 (安装虚拟机,不会的请自行度娘,有很多的详细教程)
2.Ubuntu :ubuntu-16.04.2-desktop-amd64.iso
(下载地址:https://www.ubuntu.com/download 文末附一:下载图文说明)
二、编译环境搭建过程
2.1 Ubuntu操作系统安装
下载完成的ubuntu.iso文件,在虚拟机中安装Ubuntu操作系统。(也请自行度娘,有很多详细的安装教程)
2.2 安装ubuntu下的工具
安装需要用到的比如 vim、git 、VMare Tools等工具
更新软件仓库:sudo apt-get update
安装vim: sudo apt-get install vim
安装git: sudo apt-get install git
安装VMare Tools可方便与物理机进行复制,粘贴,文件拷贝等操作。(安装方法,自行度娘)
2.3 用户权限
按照官网上的指南,将当前用户加入到dialout组中,获得一定的权限:
sudo usermod -a -G dialout $USER
注:官方指南地址 https://dev.px4.io/starting-installing-linux.html
2.4 安装依赖库及软件
逐条执行以下指令:(注意“\”是续行符号,与下一行是一个命令)
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
sudo apt-get update
sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential genromfs -y
# simulation tools
sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y
(注:安装VMare Tools工具后可直接复制、粘贴 Windows物理机下 复制:ctrl+c 粘贴:ctrl+v
Ubuntu虚拟机下 复制:crtl+shift+c 粘贴:crtl+shift+v
可直接复制以上命令、注意命令的格式中间,是否会有编辑文章的空格)
2.5 删除串口模式管理器
官网是说Ubuntu的端口和 USB serial端口有冲突,所以需要删除modemmanager
Ubuntu comes with a serial modem manager which interferes heavily with any robotics related use of a serial port (or USB serial). It can deinstalled without side effects:
sudo apt-get remove modemmanager
2.6 更新、安装依赖软件和arm-none-eabi toolchain
逐条执行以下命令:
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
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
如果上述命令安装不成功,我们可以手动安装
cd ~
wget https://launchpadlibrarian.net/186124160/gcc-arm-none-eabi- 4_8-2014q3-20140805-linux.tar.bz2
sudo tar -jxf gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
进入解压出来的gcc-arm-none-eabi-4_8-2014q3文件夹
cd gcc-arm-none-eabi-4_8-2014q3/bin/
ls
pwd
ls可以查看目录下的编译工具,pwd查看当前路径
鼠标选中当前路径, crtl+shift+c 复制当前路径
vim ~/.bashrc
按i进入编辑模式,在 ~/.bashrc 的最后添加
export PATH="$PATH:刚刚pwd所显示的路径"
例:export PATH="$PATH:/home/however/gcc-arm-none-eabi-4_9-2015q3/bin"
(注:开始我们已经复制了路径,可以直接crtl+shift+v 粘贴)
输入完成后,按Esc键,输入:wq(保存并退出) (‘:’号输入是shift+;)
执行下面命令,让配置立即生效:
source ~/.bashrc
cd /home
输入arm 并用Tab补全,能够出现编译工具命令,则证明配置成功
如下图:
2.7 下载PIXhawk源码
执行以下命令:
cd /home
mkdir src
cd src
git clone https://github.com/PX4/Firmware.git
(注:下载完成后可以更新当中的子模块,也可不更新,若不更新,将在编译时自动更新下载)
更新命令如下:
cd /home/src/Firmware
git submodule update --init--recursive
2.8 编译PIXhawk源码
建议切换到root用户进行编译,避免一些访问、操作权限等问题。
sudo -s
make px4fmu-v2_default
注:V2是指的Pixhawk
第一次编译可能会出错,请仔细阅读系统给出的出错原因,并进行错误分析,解决问题。本人会对过程中的一些错误进行总结,希望能对大家有所帮助,以上就是本人关于PIXhawk的整个编译流程。
三、出现的问题以及解决方法
1.ubuntu版本问题
笔者最开始使用的,Ubuntu 12.04 版本,按照网络的教程,一直无法搭建出编译环境,让笔者很是苦恼,思来想去不知其所然,困惑了很久,一直无法解决这个问题。
在某一天,笔者又寻找到一篇教程继续进行搭建,为了确定是否是以前安装过一些工具的影响,笔者又重新建立了一个新的Ubuntu虚拟机,进行这篇教程的操作,很幸运按照教程很通顺的走了下来,直到进行make编译的时候,出现了 file to patch: 一直找寻不到,并在这里一直编译不过去,笔者猜测是否是Ubuntu系统的版本太低,遂重新下载一个新版本的Ubuntu,进行安装搭建,解决了以上的编译问题。
2.在 make 编译过程中出现如下错误:
-- PX4 VERSION: v1.6.0rc1-408-g0c92610
-- CONFIG: nuttx-px4fmu-v2-default
-- CMAKE_MODULE_PATH: /home/however/src/Firmware/cmake
-- Nuttx build for px4fmu-v2 on m4 hardware, using nsh with ROMFS on px4fmu_common
-- The ASM compiler identification is GNU
-- Found assembler: /home/however/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc
-- Found PythonInterp: /usr/bin/python (found version "2.7.3")
CMake Error at /usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
couldn't find python module jinja2:
for debian systems try:
sudo apt-get install python-jinja2
or for all other OSs/debian:
pip install jinja2
(missing: PY_JINJA2)
Call Stack (most recent call first):
/usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
cmake/common/px4_base.cmake:1295 (find_package_handle_standard_args)
CMakeLists.txt:276 (px4_find_python_module)
-- Configuring incomplete, errors occurred!
See also "/home/however/src/Firmware/build_px4fmu-v2_default/CMakeFiles/CMakeOutput.log".
/bin/sh: 1: cd: can't cd to /home/however/src/Firmware/build_px4fmu-v2_default
make: *** [px4fmu-v2_default] Error 2
出现以上错误,阅读系统给出的错误信息,并按照上述,安装python-jinja2:
sudo apt-get install python-jinja2
安装完毕,make clean ,重新进行编译:
make clean
make px4fmu-v2_default
顺利编译完成。
四、总结
经历几天的折腾总算是把pixhawk的源码编译出来,虽然期间出现了很多困难,但是所幸都一一找到了解决问题的方法,让我很是有所收获,下一步就可以尝试把编译好的源码上传到固件当中,进行一个初步的开发流程演示。
接下来的学习方向:
①学习pixhawk源码架构
②分模块学习pixhawk的源码实现
③尝试更改其中的代码,进行二次开发
五、参考引用文章
pixhaw的官方开发指导:https://dev.px4.io/starting-installing-linux.html
amov auto(阿木)的博客:http://blog.csdn.net/msq19895070/article/details/51670829
真实不变的博客:http://blog.csdn.net/wangcfan/article/details/51271608
非常感谢两位博主的文章,让我能顺利的完成环境搭建,再次感谢!
附一:Ubuntu镜像官网下载说明
1.网址https://www.ubuntu.com/download
点击下图所示的Ubuntu Desktop:
2.页面跳转,点击如下图的Download:
3.页面跳转,点击如下图所示的 Not now,take me to the download > :
4.页面跳转,出现下载框,点击确定,即可开始Ubuntu镜像文件的下载。