February 18, 2011

AR.Drone プロポで操縦したい

AR.Droneという空飛ぶおもちゃですが、iPhoneやiPadなどの高度な機器からの操縦を前提されているため、ラジコンに関わっていると少々物足りない気分になってきます。ラジコンといったら、iPhoneやiPadではなく、もちろんプロポですよね! というわけでAR.Droneをプロポで手動操縦する手段をここしばらくの間調べています。ある程度情報が集まったので、まとめておきたいと思います。

Yellow Jacketを使って手動コントロール


実は既にプロポによってAR.Droneを制御する方法が編み出されています。『RC Controlled AR.Drone』に書いてあることなのですが、追加搭載したYellow Jacketという無線LAN装備のArduino互換基板、およびラジコン受信機が、IPhoneのフリをすることで可能になります。この方法、AR.Droneの安定制御を生かしつつプロポによる手動制御を可能にしているので、確かによくできています。
しかしながら、無線リンクが冗長(プロポから受信機へのラジコンと、yellow jacketからAR.Drone基板への無線LANの2リンク)であり、またAR.Droneの制御を切って真の手動制御を行うことはできないので、僕は満足がいきません(笑)。Arduino互換機を使っている点もマイナスです(笑)

モータを直たたきしたい


そういうわけで、AR.Droneの中央の基板を経由せずに、四隅にあるモータをコントロールしている基板(BrushLess Controller (BLC)と呼ばれたり、Electric speed controller (ESC)と呼ばれている)に直接プロポから指令を送れないか、検討しています。といってもラジコン受信機から出るPWM信号を、AR.DroneのBLCが解釈できるわけではないようです。
基板を観察してみた結果、AR.Droneの中央の基板と、四隅のBLCはTX/RX共通のシリアル通信、および汎用I/O接続されていることがわかりました。またオシロをあててみた結果、指令はシリアル通信に頼っているようで、これでモータの回転を制御したり、BLC基板上にあるLEDの光り方を調整しているようです。この通信規約(プロトコル)がわかれば、BLCを思いのまま制御できプロポを使った完全手動操縦への道も開けることになりますが、これは現在調査中です。なおシリアル通信の規格は115200bpsで、スタートビット/ストップビットは1bit、パリティなしです。
さらにですが、このシリアル通信は中央の基板においてはメインチップのARM9を組み込んだSoCのParrot6上のシリアルポートに接続されているようです。Parrot6ではLinuxが動いているのですが、『Let’s get serial!』によるとBLCと接続されているシリアルポートは/dev/ttyPA1に割り当てられているようです。オシロを当てずとも、このシリアルポートのデータの流れを見ていれば、先ほどのプロトコルは解析できそうですね。
おまけ情報ですが、AR.DroneはLinuxを搭載しているということもあり、ソフトウェアの一部がGPLというソースを公開しなければならないライセンスの元に開発されていることがわかりました。ソースを公開することに関して議論が行われた形跡を『Where are the LINUX gpl stuff for the arm9 board are avaiable?』に見ることができます。現在はGPL分をはじめとして一部はここここでソースが公開されています。

※その後、AR.Drone上でソフトを動かす方法を調べてみました。

19:45 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/789
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。