トイドローン Tello を PHP でプログラムする
昨日に引き続き Tello です。
Tello とは?
1万円ちょっとで買える200g未満のドローンで、スマホでコントロールします。動画や静止画を撮ることもでき、また、プログラムでドローンを制御することが可能です。
オンラインでもいろいろなところから買えますし、
実物も 大須ドローンステーション などで見られると思います。
初期設定の手順は以下を見るとわかります。
ちなみに、Tello はドローン本体が Wi-Fi AP になっており、それにスマホやMacなどを接続するため、1台のドローンしかコントロールすることができません。複数台にコマンドを送信し制御したいという人は Tello EDU という機種があり、そちらはドローン本体を既存の Wi-Fi AP に接続できるそうです。
開発環境の構築
昨日は、公式にサポートされている Scratch でした。
ただし、Scratch と言いながら何で Node が必要なの?と疑問に思われた方や、あるいは、Tello.js のコードを読むと Scratch いらないんじゃない?と思われた方も多いかと思います。
はい、Tello をプログラムするためには、Scratch も Node も必須ではありません。 PHP でも OK です。
ということで、すでに PHP の開発環境は構築済みだと思いますので、先に進みましょう。
プログラミング
ということで PHP で書いてみましょう。
tello-php.php
<?php
$tello_ip = '192.168.10.1';
$tello_port = 8889;
if (! $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) {
echo "Can't create socket" . PHP_EOL;
exit(1);
}
// コマンドモードにする
sendCommand("command");
sleep(2);
// 離陸する
sendCommand("takeoff");
sleep(5);
// 着陸する
sendCommand("land");
function sendCommand($command)
{
global $socket;
global $tello_ip;
global $tello_port;
echo date("c") . ': ' . $command . PHP_EOL;
socket_sendto($socket, $command, strlen($command), 0, $tello_ip, $tello_port);
}
UDP で Tello の Port 8889 にテキストでコマンドを送信すればいいだけです。簡単ですね!
Tello のコマンドについては、Tello SDK や以下のブログ記事を参考にしてください。
プログラム実行の準備
Tello の起動
Tello のスイッチを on にします。
Wi-Fi 接続
Mac から Tello に Wi-Fi で接続します。
プログラムの実行
ドローンの位置とプログラムの内容を確認してから、ターミナルからプログラムを実行しましょう。
$ php tello-php.php
一旦実行すると、ドローンを途中で止めることができませんので、誤った場所から飛ばすと、壁に激突したりして危険です。
うまくいけば、Tello が飛んでいるはずです。
参考
Date: 2019/04/23