PIXhawk入门学习之Ubuntu下编译环境搭建


       从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补全,能够出现编译工具命令,则证明配置成功

      如下图:

                 PIXhawk入门学习之Ubuntu下编译环境搭建_第1张图片

       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:

                  PIXhawk入门学习之Ubuntu下编译环境搭建_第2张图片

2.页面跳转,点击如下图的Download:

PIXhawk入门学习之Ubuntu下编译环境搭建_第3张图片

3.页面跳转,点击如下图所示的 Not now,take me to the download > :

       PIXhawk入门学习之Ubuntu下编译环境搭建_第4张图片

4.页面跳转,出现下载框,点击确定,即可开始Ubuntu镜像文件的下载。

   PIXhawk入门学习之Ubuntu下编译环境搭建_第5张图片


你可能感兴趣的:(pixhawk入门,pixhawk,ubuntu,编译)