TouchDesignerを用いると、映像と合わせてドローンを飛ばしたり、ドローンのアクションに応じて映像を変化させることなどが可能です。
映像と共にtelloを飛ばしてみる、その3。暗いとtelloは制御困難になるけど、部屋の明るさ調整とプロジェクタ3700lmにしてなんとか制御可能なレベルで、映像も見えるかな。#touchdesigner #tello pic.twitter.com/xmQ7TeqB26
— Tomoya@∀RroWs (@snufkinliberty) 2019年3月16日
今回、ドローンのTelloを用いて次のような映像と合わせたFlip動作などを行ってみました。
ドローンのTelloの操作をTouchDesignerで行い、Flipの動作に合わせてワープっぽい映像に変化するようにしてみる。音に注意。#TouchDesigner pic.twitter.com/1JrPgHXLmj
— Tomoya@∀RroWs (@snufkinliberty) 2019年3月19日
Telloを用いると、比較的簡単にこのようなことができるので、今回はTouchDesignerを用いてTelloを制御する方法をまとめたいと思います。
はじめに
ドローンの中でもTelloを選んだのは、様々な言語でプログラミングが可能であり、低価格なものの中で性能が高く、wi-fi接続で操作ができ(アマチュア無線の免許が不要)、TouchDesignerのudpoutDatで制御ができそうだったので、試しました。
なかなかトイドローン小さい。次のライヴ演出の新たな試みとしてドローンとDMX制御で照明をやろうと検証開始。 pic.twitter.com/QWUuAYQm7j
— Tomoya@∀RroWs (@snufkinliberty) 2019年3月10日
早速、TouchDesignerでTelloを操作する方法に入りましょう。
1.udpoutDatの設定
udpoutDatを作成し、パラメータを画像のように設定します。画像では、udpoutDatの初期値から変更している項目のみ表示しています。
Row/Callback FormatはOne Per ByteかOne Per Messageならうまくいきました。
Network AddressやPortはTelloのSDKなどに記載されている固定値になります。
(後の4 Telloの制御のコマンドを実行するとこのmessageの下にOKなどTelloからの応答が返ってきます。)
これでudpoutDatの設定は終わります。次に、制御コマンドの送信方法に入ります。
2 制御コマンドの送信方法
Telloの制御コマンドは、元々決まっていてSDKのpdfファイルに記載されています。
このpdf資料の4. Tello Commandsに従いコマンドを送ると実際に動きます。
コマンドの送り方ですが、これはHelpのOperator Snippetsを開き、
oscinDatの項目を見るとudpoutDatのサンプルがあるので、これを流用すると良いです。
実際にこれをコピペして以下のように改変しました。
panelexecuteDatの中で、a = ''のところにコマンドを入力します。
まずはcommandを作成し、さらにtakeoff、landなど同様に、このbuttonCompとpanelexecuteDatをコピーして作成し、UIを作っていきます。
3 UIの構築
僕自身が作ったプロトタイプのperformモードの画面はこんな感じです。直観的に操作できるように、コマンド実行ボタンは配置しています。
webカメラでモニターして画面を見ながら制御できるようにしています。
UIの作り方は基礎的で本(「Visual Thinking with TouchDesigner - プロが選ぶリアルタイムレンダリング&プロトタイピングの極意」)にも書いてあるので、参照して作成してみてください。
4 Telloの制御
Telloのコマンドボタン一式を作ったら、Telloにwi-fi接続し、まずはcommandを実行します。
これでコマンド入力を受け付けてくれるようになります。
次にtakeoffで離陸します。
あとはleft 20, right 20などで移動したり、flip lなどでアクションしてくれます。
最後にlandで着陸します。
TelloをTouchDesignerから操作してみる。一応操作通りには動きますね。#TouchDesigner #tellodrone pic.twitter.com/pIO1pUDDp5
— Tomoya@∀RroWs (@snufkinliberty) 2019年3月15日
終わりに
2つ目の動画で、映像と動きを同期する部分は、ボタンを押した際にtriggerChopをかけて、switchTopで別映像をoverTopで重ねる処理をしています。
ここまで情報があれば、TouchDesignerを使っている方なら、同様のことができるかと思います。
面白いのでぜひ、試していただければと思います。
なお、Telloは暗いと制御が不安定になります。そのため、ある程度の明るさが必要になるのでご注意ください。
プロジェクターの映像に合わせるには部屋を暗くしますが、プロジェクターは明るいものを使用し(今回は3700lmのものを使用しています)、部屋の明るさは制御可能な下限以上にすれば、上記の動画レベルで飛ばせます。
<制作環境>
TouchDesigner099 COMMERCIAL 64-Bit Build 2019.12330
CPU Corei9 9900K
GPU Geforce RTX 2080Ti
Windows10
<∀RroWs>
HomePage