トイドローン 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

Tags: tello