ubuntu18配置PX4编译环境

Ubuntu 18.04系统下搭建PX4/Pixhawk原生固件编译环境

经参考总结CSDN上多位开发者的文章,经调整亲测可行!

参考文章:

(7条消息) 搭建无人机仿真环境之PX4安装中出现的一些问题的解决_TYINY的博客-CSDN博客

(9条消息) 最新Linux系统下搭建PX4/Pixhawk原生固件编译环境!!!_C_zzzzz的博客-CSDN博客

 

添加用户到dialout工作组

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

 sudo usermod -a -G dialout $USER

注意:注销后重新登录
安装软件包

#更新软件源列表:

      

  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

注:添加源操作一般成功后会跳出一个“OK”,update成功后会有个“done”。
安装常用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

安装正确版本的gcc-arm-none-eabi!!!

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

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

亲测有效,强烈建议2017-q4版本!!!

解压    

  tar jxvf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 -C /usr/bin

修改环境变量

 vim /etc/profile

添加到最后一行,i进入编辑模式 ,esc推出编辑模式,:wq保存退出。若vim提示权限问题,sudo su 进入管理员模式在进行上述操作。

export PATH=/usr/bin/gcc-arm-none-eabi-7-2017-q4-major/bin:$PATH

  使新的环境变量生效,随后重启

  source /etc/profile

  reboot

查看编译器版本确认是否配置成功    

echo $PATH

arm-none-eabi-gcc --version

运行指令且结果如下:

环境配置检测
编译源码

  #克隆源码

git clone -b v1.8.2 https://github.com/PX4/Firmware.git

 #更新子模块:
   

git submodule update --init --recursive

 #编译:
       

make px4_fmu-v2_default

下面的列表显示了通用板的构建命令:

    Pixhawk 4: make px4_fmu-v5_default
    Pixracer: make px4_fmu-v4_default
    Pixhawk 3 Pro: make px4_fmu-v4pro_default
    Pixhawk Mini: make px4_fmu-v3_default
    Pixhawk 2: make px4_fmu-v3_default
    mRo Pixhawk: make px4_fmu-v3_default (supports 2MB Flash)
    HKPilot32: make px4_fmu-v2_default
    Pixfalcon: make px4_fmu-v2_default
    Dropix: make px4_fmu-v2_default
    MindPX/MindRacer: make airmind_mindpx-v2_default
    mRo X-2.1: make auav_x21_default
    Crazyflie 2.0: make bitcraze_crazyflie_default
    Intel® Aero Ready to Fly Drone: make intel_aerofc-v1_default
    Pixhawk 1: make px4_fmu-v2_default

固件编译:

ubuntu18配置PX4编译环境_第1张图片

成功

ubuntu18配置PX4编译环境_第2张图片
 

报错问题处理

1.无法make,或者如下图:

方案:

    #make是操作字符 px4fmu是固件名称 -v2是版本号 _default是默认配置
    #实际make之后是一个文件名称,需要编译的模块都在其中
    #可以输入make p 然后按Tab键,会跳出一连串p开头的文件

ubuntu18配置PX4编译环境_第3张图片
2.缺少模板

方案:
缺什么补什么,根据提示补模板。中途会出现如下问题:
ubuntu18配置PX4编译环境_第4张图片
方案:终端输入如下:

    python2 --version #查看python2安装版本
    python3 --version #查看python3安装版本
    python --version#查看系统正在使用的版本

现在改为python3

终端输入

  echo alias python=python3 >> ~/.bashrc

source一下

  source ~/.bashrc

版本查看:

python --version


紧接着升级pip,

  python -m pip install --upgrade pip


3.交叉环境出错

重装交叉环境,切记强烈建议2017-q4版本!!!

ubuntu18配置PX4编译环境_第5张图片

4. git submodule update --init --recursive中遇到的问题

  • 问题1

如果使用镜像github.com.cnpmjs.org进行git clone ,在执行git submodule update --init --recursive时出现:

  1. ~/PX4_Firmware$ git submodule update --init --recursive

  2. 子模组 'Tools/jMAVSim'(https://github.com.cnpmjs.org/PX4/jMAVSim.git)未对路径 'Tools/jMAVSim' 注册

  3. 子模组 'Tools/sitl_gazebo'(https://github.com.cnpmjs.org/PX4/sitl_gazebo.git)未对路径 'Tools/sitl_gazebo' 注册

  4. 子模组 'boards/atlflight/cmake_hexagon'(https://github.com.cnpmjs.org/PX4/cmake_hexagon.git)未对路径 'boards/atlflight/cmake_hexagon' 注册

  5. 子模组 'mavlink/include/mavlink/v2.0'(https://github.com.cnpmjs.org/mavlink/c_library_v2.git)未对路径 'mavlink/include/mavlink/v2.0' 注册

  6. 子模组 'platforms/nuttx/NuttX/apps'(https://github.com.cnpmjs.org/PX4/NuttX-apps.git)未对路径 'platforms/nuttx/NuttX/apps' 注册

  7. 子模组 'platforms/nuttx/NuttX/nuttx'(https://github.com.cnpmjs.org/PX4/NuttX.git)未对路径 'platforms/nuttx/NuttX/nuttx' 注册

  8. 子模组 'platforms/qurt/dspal'(https://github.com.cnpmjs.org/ATLFlight/dspal.git)未对路径 'platforms/qurt/dspal' 注册

  9. 子模组 'src/drivers/gps/devices'(https://github.com.cnpmjs.org/PX4/GpsDrivers.git)未对路径 'src/drivers/gps/devices' 注册

  10. 子模组 'src/drivers/uavcan/libuavcan'(https://github.com.cnpmjs.org/PX4/uavcan.git)未对路径 'src/drivers/uavcan/libuavcan' 注册

  11. 子模组 'src/lib/ecl'(https://github.com.cnpmjs.org/PX4/ecl.git)未对路径 'src/lib/ecl' 注册

  12. 子模组 'src/lib/matrix'(https://github.com.cnpmjs.org/PX4/Matrix.git)未对路径 'src/lib/matrix' 注册

  13. 子模组 'src/modules/micrortps_bridge/micro-CDR'(https://github.com.cnpmjs.org/PX4/micro-CDR.git)未对路径 'src/modules/micrortps_bridge/micro-CDR' 注册

解决方法:
检查 .gitmodule文件中的url格式
按照以下方法更换一下即可:

gedit .gitmodules

将.gitmodules文件中所有github.com替换为github.com.cnpmjs.org,例如
[submodule “mavlink/include/mavlink/v2.0”]
path = mavlink/include/mavlink/v2.0
url = https://github.com.cnpmjs.org/mavlink/c_library_v2.git
branch = master

修改完后,再次执行:

git submodule sync
  • 问题2
  1. wtj-virtual-machine:~/PX4_Firmware$ git submodule update --init --recursive

  2. fatal: Needed a single revision

  3. 无法在子模组路径 'Tools/jMAVSim' 中找到当前版本

解决方法:
删除对应文件夹,如删除文件夹 jMAVSim

 

你可能感兴趣的:(ubuntu)