DJI RS2、RS3 Proを外部から制御する(試作編)
先日書いた以下のnoteでは、既存のビデオカメラ、ミラーレスカメラをリモートPTZカメラ化する方法をご紹介しました。
そのなかのひとつ、DJIのジンバル(電動スタビライザー)Roninシリーズを外部から制御する方法の1つ、DJI R フォーカスホイールにある「S.BUS」ポートを利用した方法ですが、その後いろいろ調べていましたが、フォーカスホイールの4ピン端子は、S.BUSのほか「CAN」という方式で制御できることを知りました(よくよくみたら、フォーカスホイールには、S.BUSとCANの切り替えスイッチがついていますね)。
よくよく、DJI RS3 Proの製品紹介ページをみてみると「DJI RS SDKについて」という項目があり、ドキュメントやサンプルコードがダウンロードできるようになっています。ここで提供される文書には、「RSA(Ronin Series Accessories)」ポートのピンアサインやDJI Rフォーカスホイールの端子のピンアサイン、CANで制御する場合の「DJI R SDKプロトコル」の解説があり、それをもとに試作を開始しました。
「CAN」ってなに?
CANとは「Controller Area Network」の略で、2本の信号線によるバスに複数の機器を接続して、機器同士の通信を実現するプロトコルです。広く自動車の車載電子制御ユニットや工作機器などでも利用されています。自動車盗難などのニュースで盗難手法として登場する「CANインベーダー」の「CAN」そのものです。
CANで送受信されるデータは「データフレーム」という単位で送られるのですが、CANでは、1つのデータフレームに載せられるユーザーデータは8バイトに限られています。送信先という概念はなく、送信元のCAN IDをもとに受信側が必要なフレームのみを処理します。DJI R SDKプロトコルで一度に送受信されるデータは8バイトを超えるため、複数のフレームに分割されて送られています。
本題とは関係ありませんが、同一のバスに複数機器が接続されているため、同時に複数機器が送信開始する可能性もありますが、その衝突検出と調停をフレーム冒頭のCAN IDで行い再送信も不要など、非常によく考えられている仕組みです。また、標準化されたプロトコルであるため、既存のCANコントローラ・トランシーバが市場には安価にあるため、機器を作りやすいメリットもあります。後述する試作品でも、Microchip Technology社のチップを利用しています。
DJI R SDKプロトコルでは、Roninに対して外部から送信するデータとしては、ジンバル本体やフォーカスモータ、ジンバルに接続したカメラの制御のためのコマンドであったり、ジンバルやフォーカスモータの状態を取得するためのコマンドが定義されています。また、Roninからもコマンドの実行結果であったり、取得を依頼した状態のデータが送られてきます。
いずれも、同一のフォーマットのデータパケットでやりとりされており、これがCANの複数フレームに分割されて送受信されています。さまざまなコマンドが
ありますが、外部から制御する際に使い勝手がよいのは、以下のコマンドとなります。
ジンバルの位置を各軸の角度の絶対値や現在位置からの相対角度で指定して動かすコマンド
ジンバルの現在の各軸の角度を取得するコマンド
ジョイスティックでの制御に利用しやすい、3軸の動き量を指定して動かすコマンド
RS2以降にある本体ダイヤルに割り当てられている「ダイヤル機能」のダイヤルの動き量を指定して動かすコマンド(フォーカスモータだけでなく、カメラのフォーカスやISO、絞り、シャッタースピードなどの、どれか1つに割り当てられる)
「ダイヤル機能」とは独立して、フォーカスモータのキャリブレーション範囲内での絶対値として指定して動かすコマンド
フォーカスモータの現在位置を取得するコマンド
ジンバルに接続されているカメラのシャッター、録画などを制御するコマンド
これ以外にもコマンドはありますが、ここに挙げたものだけでも、PTZカメラ的に使うにはそこそこ充分な機能が実現できそうです(本格的なPTZカメラのように、アイリスやシャッタースピード、色温度などをリモートから自由に操作するとかはできませんが)。
ひとまず、「MP-101無線リモコンキット」をRS2、RS3 Proに対応させる試作をしてみた
「既存のビデオカメラやミラーレスカメラをリモートPTZカメラにする」でもご紹介した「MP-101無線リモコンキット」は、筆者が開発・手作業で製造・販売している製品で、Bescor MP-101という安価な電動雲台とLANC対応のビデオカメラなどのズームの制御を可能するものです。
筆者自身も現場で使い倒してはいますが、ミラーレスカメラを使いたい現場では、パワーズームレンズも少なく、フォーカスモータ、レンズモータを使って、PTZ制御を実現したいということも多く、そこについては課題を抱えていました。
上記でも紹介したように、DJI R SDKでは、フォーカスモータの制御もできるため、ミラーレスカメラをPTZカメラ化するのに、RS2、RS3 Proは最適そうです。というわけで、ひとまず、「MP-101無線リモコンキット」の既存のリモコンのままで、RS2とフォーカスモータを制御するための試作をしてみました。実際の動きのチューニングはこれからですが、ひとまず、どんな感じかは以下の動画をご覧ください。
この動画では、パナソニックGH6をDJI RS2に載せ、RS2とGH6を付属のUSB Type-Cのケーブルで接続し、GH6のUSBモードを「PC(Tether)」にしています。これによって、フォーカスモータを使わず、レンズのフォーカスの制御をUSB経由で実現しています。DJI RS2に付属のフォーカスモータは、レンズ(LEICA DG VARIO-ELMARIT 12-60mm)のズームリングにつけて、ズームの制御を行なっています。
上記レンズは比較的ズームリングの操作は軽くできますが、重めのレンズの場合は、トルクが強化されている「DJI RS フォーカスモーター (2022)」を使うのがよさそうです。
今後の予定など
ありがたいことに、試作を見ていただいた同業者の方からも「欲しい」という声を頂戴しており、近日(3〜4月には)発売開始できればと思っています。価格は、「MP-101無線リモコンキット」の雲台側ユニットと同程度となるかと思います。当面リモコンについては変更ありませんので、すでにお持ちの方は、お手元のリモコンでRS2、RS3 Proの制御が可能になります。
上記の動画では、DJI Rフォーカスホイール経由でRS2に接続していますが、製品では、RS2、RS3 ProのRSAポートに直接接続できるようにする予定です。
さらに、野望としては、ジャイロセンサーを使ったForce Mobile、Force Pro的な安価なリモコンも作りたいと思っています(MP-101はRS2に比べると高速な動作はできないため、操作感は劣るとは思いますが、既存のMP-101の制御もできるようにしたいと思います)。
1つのリモコンで4つの雲台まで制御できるという特徴はそのままですので、RS2とMP-101を混在して4セットまで利用できるようにします。
また、雲台の状態を取得できないMP-101では実現できなかった、ジンバルの角度とフォーカスモータの位置をプリセットして呼び出せる機能も、新型リモコンとともに出せればと思っています。
なお、DJI R SDKの対応機種が、おそらくRS2とRS3 Proのみとなるようなので(公式の情報がないのですが、どうやらそうらしい)、対応機種は限られてしまいますが……。
MP-101無線リモコンキットのクーポンをご用意
前回のnoteのときにもご好評でした、note読者様限定クーポンをご用意しました。現時点では、RS2、RS3 Pro対応版はありませんが、MP-101をお持ちのかたは、こちらもご検討いただけると幸いです。
クーポンコードは「ZJ6LGS8Q」となります(2023年2月17日まで有効)。
現在販売中のリモコンでも、RS2、RS3 Pro対応版のご利用はできますが、操作性改善のためのファームウェアのアップデートは行う際には、一旦お預かりする形にはなりますが、アップデートの対応は行う予定です。