跳转至

MAVLink调试

wireshark 是功能非常强大的网络数据抓包工具,可以通过配置mavlink插件,更好的抓取、过滤mavlink消息。并且可以显示mavlink消息各字段的详细内容。

程序安装

Windows

Windows下安装非常简单,双击安装文件即可。安装完成后,双击打开桌面快捷方式,可以启动wireshark。

linux

$ sudo apt-add-repository ppa:wireshark-dev/stable
$ sudo apt-get install wireshark

## 添加到用户组
$ sudo adduser $USER wireshark

ubuntu下通过输入命令启动wireshark

wireshark

插件生成与配置

生成插件

下载mavlink仓库,进入mavlink-master根目录,输入如下命令:

python3 -m pymavlink.tools.mavgen --lang=WLua --wire-protocol=2.0 --output=mavlink_2_common message_definitions/v1.0/common.xml

会在当前输入命令所在目录下生成**mavlink_2_common.lua**.该文件就是mavlink开发对应的lua语言文件。

nextpilot-flight-control/tools/mavlink文件夹下可以找到该文件。

配置插件

为了监控mavlink消息,必须指定监控端口,在**mavlink_2_common.lua**文件默认添加了相关配置信息,如下是默认的UDP监控端口

-- bind protocol dissector to USER0 linktype

wtap_encap = DissectorTable.get("wtap_encap")
wtap_encap:add(wtap.USER0, mavlink_proto)

-- bind protocol dissector to port 14550 and 14580

local udp_dissector_table = DissectorTable.get("udp.port")
udp_dissector_table:add(14550, mavlink_proto)
udp_dissector_table:add(14580, mavlink_proto)

仿真环境下,GCS连接端口为:

gazebo:18570 <----> GCS:14550

使用方法

导入插件

这一步就是将上一步生成的**mavlink_2_common.lua**文件作为插件导入wirshark。

  • 查看插件路径

打开软件wireshark,在Help->Folders,查看Global Lua Plugins的路径。

Ubuntu系统下路径:

/usr/lib/x86_64-linux-gnu/wireshark/plugins/

Windows系统下路径:

C:/Program Files/Wireshark/plugins
  • 导入插件

并将生成的插件**mavlink_2_common.lua**文件拷贝至该路径下即可。 ubuntu下可以通过cp命令拷贝:

sudo cp mavlink_2_common.lua /usr/lib/x86_64-linux-gnu/wireshark/plugins/
  • 重启wireshark

导入插件后,重启wireshark软件。

列表过滤

可以通过过滤框中输入mavlink_proto进行mavlink消息的过滤。

img

常用过滤条件

  • 只查看地面站发送的消息

地面站的comp_id=0xbe=190

mavlink_proto.compid == 190
  • 通过msgid过滤消息
mavlink_proto.msgid==0

其他

过滤条件可以进行与或结合,组成更复杂的条件

mavlink_proto.msgid==0 && mavlink_proto.compid == 1 &&
(ip.addr == 10.0.115.155 && ip.dst == 10.0.115.141)

可以双击抓取的mavlink消息,查看具体信息。

img