AR Drone用OPEN-RTM通信コンポーネントの実装

AR Drone用OPEN-RTM通信コンポーネントの実装

Author: 
yukikawana

ライセンスについて

AR.Drone組込みシステム用コンポーネントはBSD/LGPLライセンスのCV Drone(https://github.com/puku0x/cvdrone)を使用しています。 本コンポーネント使用時はhttps://github.com/yukikawana/ARTC_ardrone にありますcvdrone-license-LGPL.txt及びcvdrone-license-BSD.txtをご確認ください。 ライセンス、コードの公開について問題をご指摘頂きました、CV Drone制作者のpuku0x様とMiyamoto Nobuhiko様に深く感謝申し上げます。 (2015/08/23追記)

概要

  • 様々な用途に広く利用されているクアッドコプタであるAR.Droneの操作、航行データの取得をRTコンポーネント化
  • AR.Drone上の組込みLinux OSで動作するRTコンポーネントをビルドするためのクロスコンパイル環境の入った仮想ディスクイメージを提供

デモシステム動画

更新履歴

特徴

  • AR.Drone上の組込みLinux OSで動作
  • AR.DroneのXYZ軸方向の移動、Z軸上の回転を指示可能
  • AR.Droneの高度、バッテリー残量、XYZ軸方向の移動速度等を取得可能
  • データポートの型にAR.Drone操作用の(TimedControldata)と航行データ取得用の(TimedNavdata)を採用

仕様

  • 言語: C++
  • OS:AR.Drone上のLinux (AR.Drone独自のLinux)

コンポーネント群

ARTC_ardrone

  • AR.Drone内部で動作し、TimedControldataポートの入力に応じてAR.Droneに離着陸、回転、移動方向の指示を行うとともに、移動速度、機体角度、高度航行データを取得しTimedNavdataから出力します。
入力ポート
入力ポートはデータタイプTimedControldataによって定義されています。TimedControldataの各変数について解説をします。
    • double yaw
      • 水平方向における機体のラジアン単位での回転を指示します。
    • double vx
      • 正値で前進、負値で後退の速度を指定します。
    • double vy
      • 正値で右方向、負値で左方向の速度を指定します。
    • double vz
      • 正値で上昇速度、負値で下降速度を指示します。
    • boolean onground
      • trueでAR.Droneが離陸します。falseの時は着陸します。AR.Droneを飛行させたい間はongroundの値は常にtrueにさせておく必要があります。
出力ポート
出力ポートはデータタイプTimedNavdataによって定義されています。TimedNavdataの各変数について解説をします。
    • long imgwidth
      • AR.Droneのフロントカメラから取得された映像のピクセル単位の横幅です。
    • long imgheight
      • AR.Droneのフロントカメラから取得された映像のピクセル単位の縦幅です。
    • long imgSize
      • AR.Droneのフロントカメラから取得された映像の画像サイズです。
    • long imgType;
      • OpenCVのIPL_DEPTH_8Uと同じです。
    • RTC::TimedOctetSeq imgData
      • AR.Droneのフロントカメラから取得された映像のバイト配列です。
    • double roll
      • AR.Droneのロール角です。
    • double pitch
      • AR.Droneのピッチ角です。
    • double yaw
      • AR.Droneのヨー角です。
    • double altitude
      • AR.Droneの高度です。
    • double vx
      • 正値で前進、負値で後退の速度です。
    • double vy
      • 正値で右方向、負値で左方向の速度です。
    • double vz
      • 正値で上昇速度、負値で下降速度です。
    • short battery
      • バッテリー残りパーセントです。
    • boolean on ground
      • Trueで飛行中、Falseで着陸中を表します。

ARTC_pc

  • PC上で動作します。ARTC_ardroneから取得したTimedNavdataのAR.Droneのカメラ映像の表示を行い、AR.Droneに対してヨー角での回転指示をTimedControldataを通してARTC_ardroneへ伝えます。

デモシステム構成図

mudai-2.jpg

ソースコード

ドキュメント

  • ファイルサイズは約6GBです。展開すると約15GBになります。
  • パスワードはardrone2014です。
  • 仮想ディスクイメージ

実行ファイル

問合先(メールアドレス): 
kojirou.tensou+rtcontest@gmail.com
Resources
Project Information
OS: 
Windows
Linux
MacOSX
言語: 
C++
OpenRTM ver.: 
1.1
Average: 
4
Average: 4 (1 vote)
Last modified: 
Sun, 2015-08-23 12:51

Comments

Author: 

AR.Droneを持っていないのでマニュアルとソースコードを読んでいたのですが、以下の点が少し気になりました。

  • 何故独自のデータ型を使用するのでしょうか?TimedControldata型はTimedVector3D型とTimedDouble型とTimedBoolean型、TimedNavdata型はCameraImage型とTimedOrientation3D型とTimedVector3D型とTimedDouble型とTimedBoolean型とTimedShort型に分割した方が既存のRTCと接続できるので便利だと思います。
  • マニュアルでRTシステムビルダーと書いてありますが、RTシステムエディタの間違いではないでしょうか?
  • 単位はdegreeではなくradianを使ってほしいです。
  • 仮想ディスクイメージのUbuntuのパスワードがわからずログインできませんでした。
Author: 

お返事が遅れて申し訳ございません、ご指摘頂いた点は随時修正し反映していきたいと思います。また何かお気づきの点が御座いましたらコメント頂ければと存じます。 貴重なご意見ありがとう御座いました。

Author: 

返信ありがとうございます。 上のコメントにも書いてある通り何故独自のデータ型を使用したのかを知りたいので教えていただけないでしょうか?

Author: 

他の方が作ったRTコンポーネントで独自データ型を使っている方がいらしたので、それに習って独自のデータ型を定義しました。 今回初めてRTコンポーネントを作成するので、どのような時に独自データ型を定義した方が良いかなどについて良く分かっていません。

ただこのようなデータ構造を初心者ながら設定した理由は、AR.Droneから取得される航行データ、AR.Droneへ送信する飛行指示の形式によっています。 本コンポーネントではAR.Droneが公式に定めるTCP通信を通した方法で航行データの取得と、飛行指示を行っています。 その方法では航行データは速度や高度などの各値が一度に取得され、飛行指示ではx, y, z軸上の移動速度、ヨー角の回転角度などを一度に関数に渡す形式になっています。 よってコンポーネント化する歳も、AR.Droneが定める方法に従って入力、出力しやすいように、データ型を新しく作成する方が良いのではないかという結論になりました。

しかしながら実際の使用に関しては不便かもしれませんので、そこは実際に使用された方のご意見をお聞きしようと考えております。

Author: 

ご指摘頂いたマニュアルの誤字訂正、パスワードの表記を行いました。単位表記がdegreeになっていた件に関しましては表記をdegreeとしておりましたが、元から表示されている角度はラジアン単位です。

Author: 

マニュアルと実装コードを拝見しましたが、デモの利用に関してもシステム構成図なのがありませんので、ちょっとわかりにくいと思います。また、各コンポーネントに関しても、もう少しわかり易いドキュメントはないのでしょうか?

ARTC_ardroneで、onActivateの時にコミュニケーションポートの初期化をしていますが、失敗時にもRTCがエラー状態にならないように思えますが、どうしてでしょうか?

Author: 

ご意見誠にありがとう御座います。ご指摘頂いた点を随時反映させていく所存です。エラーに処理については考えが及んでおらず恐縮ですが、頂いたご意見を元に実装させて頂きたく思います。 今後とも何かありましたらまたご意見頂ければと思います。

Author: 

システム構成図をページに追加致しました。またARTC_ardroneについても、コミュニケーションポートの失敗時にRTC::RTC_ERRORを返すように致しました。 コンポーネントの説明に関してはこのような説明が欲しいなど御座いましたら随時追加させて頂きます。

Author: 

pukuさんは苦情のメールをしたと思うのですが、それに対して「深く感謝申し上げます」は凄く違和感を感じます。

何だかこれだけ見るとpukuさんに迷惑をかけたという事実がなくて、pukuさんが善意からライセンスの指摘をしてくれたかのような誤解を与えると思います。

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK