環境
- ドローン Ryze Tello
-- 公式スペックページ https://www.ryzerobotics.com/jp/tello/specs - Tello sdk 1.0.0.0
-- ダウンロードサイト ここにあるpdf内のバージョン表記です https://www.ryzerobotics.com/jp/tello/downloads - Processing 3.3
- udp(Processingライブラリ) 1.0
今回はnodeや公式サンプルのあるpythonなどは使用せずに飛ばします
前回( https://qiita.com/tkyko13/items/02f74180daac05254367 )で飛ばしたparrotのswatは壊しちゃいました...汗
サンプルコード
いきなりサンプルコード
import hypermedia.net.*;
UDP udp;
String ip = "192.168.10.1";
int port = 8889;
void setup() {
udp = new UDP(this, port);
udp.listen(true);
// 最初にcommand実行
udp.send("command", ip, port);
}
void draw() {
}
void keyPressed() {
if (key == 't') {
udp.send("takeoff", ip, port);
}
else if(key == 'l') {
udp.send("land", ip, port);
}
else if(key == 'q') {
udp.send("cw 100", ip, port);
udp.send("down 100", ip, port);
}
else if(key == 'p') {
udp.send("speed?", ip, port);
udp.send("battery?", ip, port);
udp.send("time?", ip, port);
}
}
void receive(byte[] data, String ip, int port) {
// 後ろ2バイトは改行コード
data = subset(data, 0, data.length-2);
String recMess = new String(data);
println(recMess);
}
とりあえずこれだけで要は足りる人は足りるのかな
ちょい解説
Tello sdkについて
まずは,サンプルを動かすための手順
- Processingのダウンロード(詳細は省く)
- Processing内で「udp」ライブラリのインストール(詳細は省く)
- Tello本体の電源をつける
- wifiに「Tello〇〇」という名前が見つかるはず,そこに繋ぐ
- Processingにてサンプルを実行 tキーを押すと離陸,lキーで着陸
実行した後,
qキーを押すと,100°旋回命令と,100cm下に下降命令を同時に送っている
期待する結果は回りながら下降してほしいが,その場で回った後,下降する挙動になっている
てことは斜め移動できない!!
公式のスマフォアプリ「Tello」だとできるのにね!!
sdkは1.0だけどもバージョンアップ来て,できるようになってほしいなぁ...
仕組みとして,
公式SDKにも乗っているが,Telloが飛ばしているwifiに接続して指定のipとportにudpで遅れればどんな言語でもできそうです
他の言語でも挑戦してみたい!
もちろんESPなんかのwifi付きマイコンでも操作したいね!!
# 参考
公式のTelloダウンロード場所
「Scratch README」内にnodeのサンプルが置いてあるURLが書いてあるし,「Tello SDK」内にはpythonのサンプルURLが書いてある
https://www.ryzerobotics.com/jp/tello/downloads
日本語で丁寧に解説している
Scratchを利用していて,nodeもある
http://yaaam.blog.jp/archives/75130218.html
GO言語のライブラリgobot内でHackしてる様子が見れる
公式SDK以上に詳しい
https://gobot.io/blog/2018/04/20/hello-tello-hacking-drones-with-go/
ESPで編隊飛行
楽しそう
https://qiita.com/bishi/items/30ba53eedbb868cb6ddc