2

我从 Parrot 阅读了一篇关于 AR Drone 2.0 编码的有趣文章。在这段代码中,他们使用 nodeJS 与无人机对话。因此,代码从创建一个 Stream 开始/dev/ttyO0

我开始更多地了解 linux 功能的背景,并想知道:

  • 您最初是如何发现正在使用 dev/ttyO0 的,例如在 linux 上运行的无人机上。我认为这是一种逆向工程,但因此使用了哪些工具或命令?
  • 当我想对无人机这样的系统进行逆向工程并找出正在发送的命令时,是否有类似“嗅探器”的东西来找出正在发送的命令?

我知道这不是一个简短而简单的答案,但我很乐意了解更多相关信息或找出在哪里了解相关信息。但最初寻找合适设备的问题会非常有趣。

谢谢

4

1 回答 1

2

我不知道你问题第一部分的答案,但我可以解决第二部分。

是的,AR.Drone 使用 TCP 和 UDP 进行无人机和控制器应用程序之间的所有通信,包括命令、遥测和视频。您可以使用标准网络嗅探器,例如 tcpdump 或Wireshark。连接无人机时,其默认 IP 地址为 192.168.1.1。配置嗅探器以捕获进出该地址的所有流量。以下是您可以看到的一些亮点:

  • Command/"AT" comms, UDP on port 5556:此端口用于向无人机发送命令。命令采用 ASCII 格式,AT*...例如AT*REF=7,256AT*PCMD=7,1,-1110651699,0,0,1050253722AR.Drone 开发人员指南的第 6 节描述了大部分(但不是全部)命令。

  • Navdata,UDP 端口 5554:这是从无人机发送的二进制编码数据,包含传感器数据和有关无人机状态的信息。它包括气压、高度估计、位置估计、飞行模式和 GPS(如果您的无人机配备有)。由于您提到了 Javascript,node-ar-drone 库中的parseNavdata.js文件包含解析导航数据的代码。

  • 视频,端口 5555 上的 TCP:这是来自无人机的实时视频,采用几乎但不完全的 H264 格式,称为 PaVE。该格式记录在开发人员指南的第 7.3 节中,大多数与 AR.Drones 对话的库都可以解析该格式。

您可能会注意到的另一件事:

  • FTP:官方控制器应用程序使用标准 FTP 向无人机发送星历文件,其中包含有助于 GPS 更快锁定的信息。
于 2015-05-18T22:58:20.373 回答