zebian.log

技術系備忘録とか

Tello SDKに書かれていない謎仕様

DJI Telloを使ってVideoとStateを取得するプログラムを書いていたときの出来事。

Tello SDK User Guide

www.ryzerobotics.com

Receive Tello State

Tello IP: 192.168.10.1 ->> PC/Mac/Mobile UDP Server: 0.0.0.0 UDP PORT: 8890

Remark3: Set up a UDP server on PC, Mac or Mobile device and listen the message from IP 0.0.0.0 via UDP PORT 8890. Do Remark2 to start receiving state data if you haven’t.

事前に192.168.10.1:8889に任意の任意のデータを送信しないと、Stateの受信に失敗する。

Receive Tello Video Stream

Tello IP: 192.168.10.1 ->> PC/Mac/Mobile UDP Server: 0.0.0.0 UDP PORT:1111

Remark4: Set up a UDP server on PC, Mac or Mobile device and listen the message from IP 0.0.0.0 via UDP PORT 11111.

Remark5: Do Remark2 if you haven’t. Then send “streamon” command to Tello via UDP PORT 8889 to start the streaming.

事前に192.168.10.1:62512に任意のデータを送信しないと、Videoの受信に失敗する。

Wiresharkを覗いてみた

どうやらStateの送信元ポートが8889、Videoの送信元ポートが62512らしい。つまり送信元ポートを叩いていることになる。

謎仕様と書いたが結局のところ...

PythonOpenCVのVideoCaptureでVideoを受信する際にはポートを叩く必要はなかった。VideoとStateを取得するプログラムはRustで書いているので、言語の問題なのかもしれない。