Windows / Ubuntu平台下PX4固件的编译方法

来源:互联网 发布:mysql测试数据库下载 编辑:程序博客网 时间:2024/05/16 16:02

Windows / Ubuntu平台下PX4固件的编译方法

2016-08-01 Fantasy 知控制 知控制
知控制

ucontrol

这里汇集了众多飞行控制领域的行业大牛以及院校精英,为您带来非同一般的无人机控制技术和更多更独到的无人机前沿知识。


作者:Fantasy

开发者,主要研究方向为姿态估计与控制 。


引子

各个论坛以及QQ群中经常有人反应不知道怎么编译Pixhawk原生固件PX4,笔者也为这个问题苦恼了很久,最近一时兴起,想尝试下官网的写一个应用程序,但是原生代码都编译不过这可怎么能行,于是东查西试,解决了在Windows操作系统以及Ubuntu操作系统上编译PX4固件的问题。

原作链接:

http://blog.csdn.net/oqqenvy12/article/details/52035127


Windows 

☆Win7 64位系统测试通过 

1软件安装


首先,需要安装一些软件,CMake32位的Java jdk以及PX4 Toolchain Installer。 

CMake的话笔者使用的是CMake 3.3.2版本。 

Java sdk: 

Eclipse 需要 Java,用命令 java -version 来查看 Java 是否配置 成功。 

接下来进行PX4固件相关的配置,安装PX4 Toolchain Installer,默认安装在C盘根目录下,笔者不服,非要安装在D盘,安装的时候一路下一步就行。

安装完以后在开始菜单会出现一套工具链包括,PX4Console、PX4Ecplise.

 

2代码编译

打开PX4console,下载PX4固件,输入指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;">git <span style="color: #000088;">clone</span> https:<span style="color: #880000;">//github.com/PX4/Firmware.git</span></code>

切换到Firmware文件夹,输入指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="color: #660066;">cd</span> Firmware</code>

之后输入指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="color: #880000;">git</span> <span style="color: #880000;">submodule</span> <span style="color: #880000;">update</span> <span style="color: #006666;">--</span><span style="color: #880000;">init</span> <span style="color: #006666;">--</span><span style="color: #880000;">recursive</span></code>

(根据网速耗时有差异,耐心等待)

最后直接编译,输入指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="color: #660066;">make</span></code>

(漫长的等待,可能需要半个小时) 

看到编译100%很开心吧,但是还是存在错误,arm-none-eabi-gcc 4.7.4版本不对,换成4.8.4即可,下载该压缩文件地址点这里(http://pan.baidu.com/s/1c1QzUU0)。

解压后将这四个文件夹复制并替换到PX4Toolchain安装目录下的toolchain文件夹下,这里我替换到的文件夹为D:\px4\toolchain。

之后重启PX4Console控制台,先输入指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="color: #660066;">make</span> clean</code>

清除上一次的编译,然后重新编译,输入指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="color: #660066;">make</span></code>

(又是漫长的等待,但是等待都是值得的) 

3配置Eclipse

现在控制台已经编译成功了,接下来就是进行Eclipse的配置了

  • 打开PX4Eclipse。

第一次启动时,选择好workplace,并勾选Use this as the default and……。由于笔者以D盘作为工作目录,因此这里依然保持将workplace放置在D盘。

  • 建立工程

File -> New -> Makefile Project with Existing Code。

然后点击Browse……到D:\px4\Firmware,并选择Cross GCC,点击Finish。 

然后进入WorkBench:

  • 创建编译目标

可以在右边板块中”Make Target(” 菜单 Window->Show View -> Make Target 也可以打开),选中根文件夹(Firmware),可以创建新的 make Target(绿色圆形按钮)。 如创建目标 px4fmu-v2_default 。

px4fmu-v2_default创建好如下:

同理创建目标:all,archives,clean,distclean,px4io-v2_default,upload px4fmu-v2_default

  • 各 make target 说明

    • all – builds the autopilot software (depends on archives)

    • archives– 编译实时系统 NuttX OS

    • distclean– 删除所有编译的文件,包括编译的操作系统

    • clean – 删除编译的固件相关文件,不会清除archives

    • px4fmu-v2_default—FMU 固件

    • px4io-v2_default—IO 固件

    • upload px4fmu-v2_default – uploads to PX4FMU v2.x boards

  • 路径配置 
    必须配置好Eclipse软件的路径才能进行编译,这一步至关重要。 
    打开eclipse软件,打开目录栏的Project -> Priorities 

 打开相应栏,更改CWD、PWD的路径: 
开始的路径(如果装在默认路径则为C:\px4) 
然后你的CWD路径为 C:\px4\Firmware 
这里将路径改为 /D/px4/Firmware 

  • 差别不大,还望仔细,我当时在这个问题上可是纠结了特别久,无限的报错,not contain Cmakelists.txt。也是得到高人相助,开始人指出来我还根本看不出,然后仔细的发现原来是:“\”、“/”“这样的问题。 

    然后再将PWD的路径也做相应的更改。

  • 编译固件 
    点击上述Target中的px4fmu-v2_default,即可进行编译。此操作与在Console控制台中输入make有同样的效果。

     

至此,在Windows环境下编译Pixhawk原生固件PX4的操作已经完成。


Ubuntu


☆Ubuntu 14.04 LTS 64位系统测试通过  

笔者同时也进行了Ubuntu上的环境搭建。跟随大流,笔者安装了Ubutnu 14.04 LTS虚拟机,64位操作系统。

在Ubuntu上搭建环境相对简单许多,按照PX4中文维基官网的教程即可。

(PX4中文Wiki地址:

https://fantasyjxf.gitbooks.io/px4-wiki/content/1_Getting-Started/linux.html)

1工具链安装

  • 权限设置

把用户添加到用户组 “dialout”(如果这步没做,会导致很多用户权限问题)

sudo usermod -a -G dialout $USER

然后注销后,重新登录,因为重新登录后所做的改变才会有效。

  • 安装CMake

sudo add-apt-repository ppa:george-edison55/cmake-3.x -ysudo apt-get update

sudo apt-get install python-argparse git-core wget zip \

 python-empy qtcreator cmake build-essential genromfs -y

# simulation toolssudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-7-jdk openjdk-7-jre clang-3.5 lldb-3.5 -y

  • 卸载模式管理器

Ubuntu配备了一系列代理管理,这会严重干扰任何机器人相关的串口(或usb串口),卸载掉它也不会有什么影响。

sudo apt-get remove modemmanager
  • 更新包列表和安装下面的依赖包

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -ysudo apt-get updatesudo 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

2代码编译

根据PX4中文维基官网教程。

  • 安装Git

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;">sudo apt-get install git-all</span></code>
  • 下载代码

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;">mkdir -p ~/srccd ~/srcgit <span style="color: #000088;">clone</span> https:<span style="color: #880000;">//github.com/PX4/Firmware.git</span></span></code>
  • 初始化 
    先进入Firmware文件夹,进而进行初始化、更新子模块操作,耐心的等待……

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;"><span style="color: #880000;">cd</span> <span style="color: #880000;">Firmwaregit</span> <span style="color: #880000;">submodule</span> <span style="color: #880000;">update</span> <span style="color: #006666;">--</span><span style="color: #880000;">init</span> <span style="color: #006666;">--</span><span style="color: #880000;">recursive</span></span></code>
  • 编译 
    在上一步的操作结束之后,即可进行编译:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;">make px4fmu-v2_default</span></code>

注意到“make”是一个字符命令编译工具,“px4fmu-v2”是硬件版本,“default”是默认配置,所有的PX4编译目标遵循这个规则。

与Windows环境中相同,这里也可能因为gcc-arm-none-eabi版本不对,需要进行版本升级到4.8.4,方法如下:

  • 下载gcc-arm-none-eabi 4.8.4,对于的文件夹命名为arm-none-eabi-4_8-2014**q3**

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;">wget https://launchpadlibrarian<span style="color: #444444;">.net</span>/<span style="color: #006666;">186124160</span>/gcc-arm-none-eabi-<span style="color: #006666;">4</span>_8-<span style="color: #006666;">2014</span>q3-<span style="color: #006666;">20140805</span>-linux<span style="color: #444444;">.tar.bz</span>2</span></code>
  • 去旧迎新

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;"><span style="color: rgb(102, 0, 102);">pushd</span> .<span style="color: rgb(136, 0, 0);"># => 卸载新版的gcc-arm-none-eabi</span><span style="color: rgb(102, 0, 102);">sudo</span> apt-get remove gcc-arm-none-eabi<span style="color: rgb(136, 0, 0);"># => 安装下载好的gcc-arm-none-eabi</span>tar xjvf gcc-arm-none-eabi-<span style="color: rgb(0, 102, 102);">4</span>_8-<span style="color: rgb(0, 102, 102);">2014</span>q3-<span style="color: rgb(0, 102, 102);">20140805</span>-linux.tar.bz2<span style="color: rgb(102, 0, 102);">sudo</span> mv gcc-arm-none-eabi-<span style="color: rgb(0, 102, 102);">4</span>_8-<span style="color: rgb(0, 102, 102);">2014</span>q3 /optexportline=<span style="color: rgb(0, 136, 0);">"export PATH=/opt/gcc-arm-none-eabi-4_8-2014q3/bin:\$PATH"</span><span style="color: rgb(0, 0, 136);">if</span> grep -Fxq <span style="color: rgb(0, 136, 0);">"<span style="color: rgb(102, 0, 102);">$exportline</span>"</span> ~/.profile; <span style="color: rgb(0, 0, 136);">then</span> <span style="color: rgb(102, 0, 102);">echo</span> nothing to <span style="color: rgb(0, 0, 136);">do</span> ; <span style="color: rgb(0, 0, 136);">else</span> <span style="color: rgb(102, 0, 102);">echo</span> <span style="color: rgb(102, 0, 102);">$exportline</span> >> ~/.profile; <span style="color: rgb(0, 0, 136);">fi</span><span style="color: rgb(136, 0, 0);"># => 使路径生效</span>. ~/.profile<span style="color: rgb(102, 0, 102);">popd</span></span></code>

笔者装的是Ubuntu 64位系统,而上述arm-none-eabi是直接下载的编译好的32位,还需要安装一个东西

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;">sudo apt-get install lsb-core</span></code>

可以检查arm-none-eabi 4.8.4是否安装成功,输入以下指令:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;">arm-none-eabi-g<span style="color: #000000;">++</span> -v</span></code>

如果出现如下信息,交叉编译环境搭建就没有什么问题了 。

  • 编译

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;"><span style="color: #660066;">cd</span> ~/src/Firmwaremake</span></code>

进入Firmware所在的文件夹,make成功后,显示如下: 

3Qt Creator

Qt Creator是官方唯一支持的IDE,在Ubuntu上针对PX4固件使用,便于看代码的同时也可以进行编译烧录。

  • 安装Qt

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;"><span style="color: #660066;">sudo</span> apt-get install qtcreator</span></code>

Qt Creator的常见功能如下: 

在打开Qt之前,应该创建project文件:

<code style="display: block; color: inherit; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; box-sizing: border-box; background: transparent;"><span style="font-family: 微软雅黑;"><span style="color: #660066;">cd</span> ~/src/Firmwaremkdir ../Firmware-build<span style="color: #660066;">cd</span> ../Firmware-buildcmake ../Firmware -G <span style="color: #008800;">"CodeBlocks - Unix Makefiles"</span><span style="color: #880000;">#可以发现Firmware-build目录生成了一些文件</span></span></code>
  • 打开Qt 


 

Ubuntu用户只要导入主文件夹里的CMakeLists.txt文件就可以了,打开Qt,通过File -> Open File or Project -> 选择CMakeLists.txt (默认位置在Firmware文件夹根目录下) 

  • 项目配置 
    选择src/Firmware-build作为构建目录 


运行设置 

  • 编译 

至此,在Windows已经Ubuntu下的环境搭建已经全部搭建成功。

现在是2016.7.26 19:37 ,为了确保方法的有效性,笔者已经在都装有Ubuntu虚拟机的笔记本和台式机上用上述方法完成了两种系统下环境搭建、代码编译的复现,亲测有效。

做这些只为让遇到相同问题的人少走弯路,专注核心问题,这也是笔者发起PX4中文维基汉化项目的初衷。 

PX4中文维基

https://fantasyjxf.gitbooks.io/px4-wiki/content/

还望志同道合的你们多多支持!~



知控制 微信公众号

飞控漫谈交流QQ群

荣誉出品


加入我们

专业的无人机开发交流平台

QQ群

目前一群已满,欢迎大家加入二群

群名称 :飞控漫谈交流II群

群ID:570911686

微信群

飞控漫谈交流微信群,请您加管理员为好友(ID:darkriddle)注明“加群”,邀请您进群。

『知控制』微信公众号

搜索ID:ucontrol

或扫描二维码

关注更多精彩


给Fantasy点个赞吧

赞赏

人赞赏

阅读原文
阅读
投诉
精选留言

该文章作者已设置需关注才可以留言

写留言

    该文章作者已设置需关注才可以留言

    写留言

    加载中
    以上留言由公众号筛选后显示

    了解留言功能详情

    0 0