AR Drone 2.0中使用的dev / ttyO0 – 逆向工程

我读了一篇有关Parrot的AR Drone 2.0编码的有趣文章。 在这段代码中,我们使用nodeJS来与无人机通话。 因此,代码首先创build一个/dev/ttyO0

我开始了解更多关于linuxfunction的背景,并希望知道:

  • 你怎么最初发现dev / ttyO0正在被使用,例如在Linux上运行的无人机上。 我认为这是一种逆向工程,但是正在使用什么工具或命令呢?
  • 当我想要对像无人机这样的系统进行逆向工程,并找出哪些命令正在发送,有没有像“嗅探器”来找出哪些命令正在发送?

我知道这不是一个简单而简单的答案,但是我很乐意了解更多信息,或者了解一下这方面的知识。 但最初有关寻找合适的设备的问题将是非常有趣的。

谢谢

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

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

  • 命令/“AT”通信,端口5556上的UDP:该端口用于向无人机发送命令。 命令是ASCII码,看起来像AT*... ,例如AT*REF=7,256AT*PCMD=7,1,-1110651699,0,0,1050253722 。 AR.Drone开发人员指南的第6部分介绍了大多数(但不是全部)的命令。

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

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

你可能会注意到的另一件事

  • FTP:官方的控制器应用程序使用标准的FTP发送一个星历文件到无人机,其中包含的信息有助于GPS获得更快的锁定。