初めてのQiita投稿です。
誤りやアドバイスがありましたら、コメントにてビシバシご指摘頂けると助かります。喜びます。
作ったもの
micro:bitを搭載した杖でトイドローンTelloを操作してみました。
杖を振った方向にドローンを移動させることができるため、子供でもドローンを直感的に操作できます。まさに気分は魔法使い🌀
この作品はヒーローズ・リーグ2019のMAリーグと学生リーグにて決勝まで残りました🙌
#ヒーローズリーグ 学生リーグ2019決勝審査会 タッチ&トライ時間 pic.twitter.com/40NOwl1zZ5
— t_furu ♨ #AKIあきラジオ #オオエン (@t_furu) November 16, 2019
#ヒーローズリーグ Magic Wand! 杖の操作でドローンが動くのはさながらクディッチですね! pic.twitter.com/5vnzhQqEKN
— ヒーローズ・リーグ@授賞式は12/8(日) (@mashupaward) December 7, 2019
作品の紹介動画はこちら
ソース
ソースはGitHubで公開しております。
https://github.com/daiking1756/drone_app
環境
- macOS Mojave 10.14.6
- node.js 10.13.0
きっかけ
昔から某魔法使いファンタジー映画が好きで、劇中の有名なワンシーンを再現してみたかった。
そんな時に次の2つの記事を見つけました。
更に杖もダイソーグッズで作れるらしいです。
https://matome.naver.jp/odai/2142524916452195501
これらを組み合わせたら杖でドローンを操作できるぜ!
ということで作ってみました。
システム構成
- micro:bitとサーバ(フロントエンド)はWebBluetoothで接続 (参考記事)
- サーバのフロントエンドとバックエンドはSocket.ioで非同期通信
- サーバ(バックエンド:node.js)とTelloは同じネットワーク上でUDPパケットを伝送することで通信 (参考記事)
Tello
DJI社が販売しているトイドローン。公式SDKが公開されていてプログラムから手軽に制御することができます。
TelloはWi-Fi親機になっています。
プログラムからTelloを操作するには、
- サーバ(今回はPC)をTelloと同じネットワークに接続
- 公式SDKに沿ってUDPパケットを送信
- 以上
とっても簡単ですね!
micro:bit
ちっちゃいマイコン。
各種センサやBluetooth、5×5のLEDマトリックスなどが付いています。
ブロックプログラミングが可能です。
実際に使用したmicro:bit側のプログラムはこんな感じです。
やってることは、ジェスチャーを検出したら対応する文字列をBluetoothで接続したサーバに送信しているだけです。
サーバのプログラムは参考記事とほとんど同じため省略します。
杖でドローンを操作
菜箸にグルーガンで形を作って絵の具で色を塗った魔法の杖にmicro:bitとモバイルバッテリーを装着します。
これにて完成!
起動手順
- TelloのWi-Fiにサーバ(PC)を接続
node server.js
- ブラウザで
localhost:3000
にアクセス - CONNECTボタンより、ブラウザとmicro:bitをWebBluetoothで接続
- micro:bitのLEDマトリクスに「✔」が表示されれば準備完了
冒頭の動画のように、杖の動きに対応してドローンが動きます
Telloに鏡を貼ってステルス化
ここまで読んで
「あれ、これってただmicro:bitでドローンを操作しているだけで、劇中のシーンとは全然違くね?」と思った方は正しいです。
ここから、いくつかの仕掛けを加えて、劇中のシーンっぽくなるように仕上げていきます。
- Telloに鏡を貼る
- この状態で森や砂漠にTelloを持っていく
- 周囲の景色が鏡に反射してTelloが視認し難くなる(ステルス化)
- 上に軽いものを乗せると、その物体だけが浮いているように見える
- 「Wingardium leviosa(浮遊せよ)」状態!!!!!!(参考動画)
まとめ
TelloはpythonやJSで簡単に制御できた。
ドローン入門にはもってこい。
micro:bitもこんなに簡単に使えるんだなぁと感じた。
子供の頃やってみたかったこと駆動で開発するのは楽しい!