macOS配置无人机仿真环境

2019/11/18 无人机

MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站GCS之间通讯,以及无人飞行器之间通讯最常用的协议。它已经在PX4、APM、PIXHAWK和Parrot AR.Drone飞控平台上进行了大量测试。下面的内容主要介绍如何在macOS配置无人机仿真环境,并使用wireshark监听地面站与无人机之间的MAVLink数据包。

配置方法

  1. 增加macOS上允许打开的最大文件数量到300
     ulimit -S -n 300
    
  2. 安装Homebrew
     /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. 安装java 8 SDK。在terminal下输入java,如果macOS上还没安装java,会弹窗引导到安装下载页面。进入java的下载页面,找到java 8,下载安装包并按照提示安装即可。

  4. 安装PX4相关的库
     brew cask install xquartz
     brew tap PX4/px4
     brew install px4-dev
     brew install px4-sim
    

    使用brew可能会遇到一个问题就是下载速度非常慢,建议使用代理(下面的代码假设代理服务器的监听端口是1086,请按照实际配置而更改):

     export ALL_PROXY = socks5://127.0.0.1:1086
    
  5. 安装python相关的库
     sudo easy_install pip
     sudo -H pip install pyserial empy toml numpy pandas jinja2 pyyaml
    

    到这步为止,已经安装好PX4相关的工具。

  6. 下载PX4的源码并启动
     git clone https://github.com/PX4/Firmware.git
     cd Firmware
     make px4_sitl jmavsim
    

    这个过程中会同时下载jMAVSim模拟器。由于git可能会遇到下载速度很慢的问题,建议使用代理(下面的代码假设代理服务器的监听端口是1086,请按照实际配置而更改):

     git config --global http.proxy 'socks5://127.0.0.1:1086'
     git config --global https.proxy 'socks5://127.0.0.1:1086'
    
     # cancel
     git config --global --unset http.proxy
     git config --global --unset https.proxy
    
  7. 此时模拟器应该已经启动,并且能够看到jMAVSim的图形界面。输入命令让无人机起飞。
     pxh > commander takeoff
    
  8. 安装QGroundControl。访问QGC官网,下载安装包直接安装即可。安装完毕之后启动QGC,此时QGC会自动连接上PX4仿真的无人机。QGC里提供常见的飞行命令的图形化操作,例如起飞、降落等。

  9. 安装wireshark。访问wireshark官网,下载安装包直接安装即可。安装完毕之后启动wireshark,捕获本地环回地址Loopback:lo0的数据包。此时会发现捕获的所有数据包都是UDP和TCP流,无法直接对其数据进行分析,原因是wireshark没有提供对MAVLink协议的支持。因此我们需要使用Lua为wireshark创建协议分析器。

  10. 安装pymavlink。在第6步中,我们下载了PX4的源码,其中有一份xml文件描述了MAVLink协议的消息定义。文件路径为/Firmware/mavlink/include/mavlink/v2.0/message_definitions/common.xml。将该文件复制到桌面,下面会用到。(下面的代码假设common.xml文件已经复制到桌面,并且输出的lua文件也是保存在桌面)
    git clone https://github.com/ArduPilot/pymavlink.git
    cd pymavlink/tools
    python -m mavgen.py --lang=WLua ~/Desktop/common.xml -o ~/Desktop/mymavlink.lua
    

    注意执行mavgen.py的时候可能会提示缺少包,执行下面的语句。如果执行下面的语句提示没有pip这个命令,请回到第5步。

    sudo -H pip install future
    
  11. 将生成的mymavlink.lua复制到/Applications/Wireshark.app/Contents/PlugIns/wireshark。(默认情况下,macOS安装wireshark会保存到/Applications目录下)此时再启动wireshark捕获QGC与PX4之间的数据包时,就能看到协议解析的内容了,注意到MAVLink的数据包是没有经过任何加密处理的。

后续更新

Search

    Table of Contents