Advertisement
Advertisement

More Related Content

Recently uploaded(20)

Advertisement

DronecodeとROSの概要 - シミュレーション環境のセットアップとその内容 #abc2015s #droneoss

  1. Dronecode と ROS の概要 シミュレーション環境のセットアップとその内容 日本 Android の会 ドローン WG くまだす 2015/7/20 ABC2015Summer
  2. 対象 ● Dronecode をほとんど知らないけれど興味がある ● ROS を知らない、触ったことがない ● Linux の基本的なコマンドの扱い方は知っている
  3. 自己紹介 ● くまだす (Hiroshi Sakate) ● 自称 組込み屋さん ● 所属 – 日本 Android の会 ドローン WG – 日本 Android の会 神戸支部 – Yocto Project Japan – Tizen Japan コンソーシアム ● ドローンとの関わり – 触ったことがありません – 学生の時に制御理論の研究室だったので姿勢制御に興味あり
  4. このセッションでできるようになること ● 風の日でも雨の日でもドローンを飛ばせる – ※PC の画面の中で ● シミュレーション環境を整えゲームのコントローラーでドローンを操縦で きる ● ROS がどういったプロジェクトか理解できる ● ROS の簡単なコマンドを操作できる ● 補足 – Dronecode 初心者の私が詰まった箇所も含めて紹介 – Dronecode に興味を持つきっかけの提供
  5. 流れ 1.シミュレーション環境 (SITL) の概要 2.シミュレーション環境のセットアップ 3.デモ 4.ROS の概要 5.SITL の中身を少し覗いてみる
  6. 1. シミュレーション環境( SITL )の概要
  7. Dronecode プロジェクトの全体像 ● 今回見ていくのは たくさんあるうちの ごく一部 ● Off Vehicle の Simulators の中の SITL 引用元: https://www.dronecode.org
  8. PX4 プロジェクトの全体像 ● 大きく 2 つあるプロジェクト のうち PX4 を扱う – もうひとつは APM/ArduPilot ● 実機の代わりにシミュレー ションを使う ● 上位層は MAVLink で通信 ● ROS から飛行指示が可能 引用元: https://www.dronecode.org
  9. SITL と HITL とは ● SITL : Simulation in the loop – ホスト PC 上ですべての計算を実機無しで行う – 新しいアルゴリズムや制御則のテストに向いている – ハードウェアのタイミングや制限(スタックサイズなど)を考慮できない。 ● HITL : Hardware in the loop – SITL と違い実機を使用する。 – シミュレートされたセンサーデータを流し、制御信号を取り出す。 – 通信速度の都合で USB 接続で使用、無線では使用してはいけないと されている。
  10. シミュレーション環境( SITL )の構成 ● ネイティブ環境が推奨されていますが、手軽さを重視して仮想 環境を使用します。 ● 必要な機材 – そこそこの性能の Linux PC – Xbox360 の USB コントローラ ● 使用した主なソフトウェア – Ubuntu – Docker – ROS Host OS : Ubuntu 14.04 Docker Guest OS : Ubuntu 14.04 ROS Gazebo xboxdrv
  11. 2. シミュレーション環境のセットアップ
  12. はじめに ● 以降の手順は下記のページを参考にしたものです。 – Automated SITL setup – https://pixhawk.org/dev/ros/automated_sitl ● OS イメージ、開発環境、ソースコードなどのダウンロードが必 要なため容量制限のある回線では気をつけてください。 ● ゲスト OS は画面なしで起動しますが、 X サーバ使ってホスト 上でウィンドウが開きます。
  13. Docker のインストール ● インストール – 手順通り、といっても 1 行。 http://docs.docker.com/linux/started/ ● $ wget -qO- https://get.docker.com/ | sh – 中でグループを追加しているので、このあとログインしなおし たほうが良いかもしれない。 ● 動作確認 – $ docker run hello-world
  14. X サーバの公開 ● まず X サーバへのアクセスを許可する。 – $ xhost + – 調べるとセキュリティ的にはかなり危ないようなので、自分で 調べてください。 ● X サーバはすぐには使わないですが後々使います。
  15. Docker 上で Ubuntu の立ち上げ ● $ sudo docker run --privileged -v "/tmp/.X11-unix:/tmp/.X11-unix:ro" -e DISPLAY=$DISPLAY --name=sitl -it px4io/px4-ros-full bash – 長いコマンド – イメージのダウンロードとセットアップが走るので結構時間がかかる ● --name=sitl – sitl という名前のコンテナを作る ● px4io/px4-ros-full – dockerhub で公開されている SITL 用のイメージを使用する ● bash – bash を開く
  16. SITL のビルドの前に ● 手順通りに進めると次の手順でゲスト OS 上に unzip が無いと 怒られるので、事前にインストールしておく。 (2015/7/11 現在 ) – # apt-get install unzip
  17. SITL のソース取得・ビルド ● セットアップスクリプトの実行 – # cd /sitl – # ./setup-workspace.bash ● 実行される内容 – 作業ディレクトリの作成 – 使用するリポジトリ (5 個 ) のチェックアウト – ビルド
  18. 参考 :unzip のエラーからの復帰方法 ● unzip が無いと怒られた場合は unzip インストール後に以下を実行してく ださい。 – # export ROS_PARALLEL_JOBS= – # cd /sitl/catkin_ws – # source devel/setup.bash – # catkin_make ● setup-workspace.bash の再実行では下記メッセージで処理が進まない。 – File "/sitl/catkin_ws/src/CMakeLists.txt" already exists ● setup-workspace.bash の最終行の catkin_make で unzip が必要なた め必要な環境変数を設定した上で catkin_make を実行している。
  19. シミュレータの起動 ● ここまでで SITL のセットアップ完了。 ● 起動は下記コマンド – # source devel/setup.bash – # roslaunch px4 gazebo_iris_empty_world.launch ● X サーバを使ってホストのウィンドウとして表示される。 ● ただし、このままではドローンが操作できない。
  20. Xbox360 コントローラの設定 ● ※ このページはホスト環境での作業 ● PPA でドライバをインストール – $ sudo apt-add-repository ppa:rael-gc/ubuntu-xboxdrv – $ sudo apt-get update && sudo apt-get install ubuntu- xboxdrv ● なぜかこれではうまく認識しないのでデーモンを止めて手動で ドライバ?を起動する – $ sudo service xboxdrv stop – $ sudo xboxdrv
  21. Xbox360 コントローラ認識結果 デーモンを止める前 デーモンを止めた後
  22. 操作方法 ● ARM (プロペラを回す) – 2 本のスティックを→←と内側に倒す ● DISARM (プロペラを止める) – 2 本のスティックを←←と左へ倒す ● 移動 – 右スティック左右:下降・上昇 – 右スティック上下:水平移動 – 左スティック左右:旋回 – 右アナログトリガ:水平移動(えっ?) ● モード切り替え – X :オート?、 A :マニュアル?、 B :マニュアル?
  23. キーアサインの変更 ● 2 つの変更方法 – jstest-gtk を使う – launch ファイルに設定を書いてアサインを変更
  24. ワールドの切り替え ● roslaunch の際に launch ファイルにべつのファイルをシテイす ると機体やワールドが切り替わる – # roslaunch px4 gazebo_ardrone_house_world.launch
  25. 終了と再開 ● 終了(正しくないような気がする) – 3D の絵が出ているウィンドウを × で閉じる – roslaunch したターミナルで Ctr-C してしばらく (5 〜 10 秒くらい ) 待つ – roslaunch したターミナルで Ctr-D で bash を閉じる – $ docker stop sitl ● 再開 – $ docker start sitl – $ docker exec -it sitl bash – # roslaunch px4 gazebo_iris_empty_world.launch
  26. 3. デモ
  27. 4.ROS の概要
  28. ROS について ● ROS : Robot operating system – ロボットのソフト開発のための柔軟なフレームワーク – ハードウェア抽象化、デバイスドライバ、ライブラリ、視覚化ツ ール、メッセージ通信、パッケージ管理などを提供 – BSD ライセンス
  29. catkin_make ● ROS のオフィシャルのビルドシステム – もともと rosbuild だったがこれの後継 ● Catkin : 尾状花序 – 猫のしっぽみたいな形の小さい 花の集まり – ROS の開発をしていた Willows (ヤナギ) Garage 社に ちなんで名付けられた "P3240141". Licensed under CC BY-SA 3.0 via Wikimedia Commons - https://commons.wikimedia.org/wiki/File:P3240141.JPG#/media/File:P3240141.JPG
  30. Roslaunch ● 例: roslaunch px4 gazebo_iris_empty_world.launch ● launch ファイルに記述した設定で起動する ● launch ファイル – XML で記述 – ちゃんと理解できていないけれど、様々なパラメータ(ワール ド、機体、キーマップ)を設定している
  31. 新しいコマンド ● rospack find roscpp – roscpp という名前のパッケージを探す ● roscd roscpp – roscpp パッケージのディレクトリへ移動する ● rosls glog_catkin – glog_catkin パッケージのディレクトリの内容を確認する ● 特徴 – タブ補完ができる – $ROS_PACKAGE_PATH に指定されたパス以下にあれば場所を意識せずに扱える ● /opt/ros/indigo/share/roscpp ● /sitl/catkin_ws/src/glog_catkin
  32. 5.SITL の中身を少し覗いてみる
  33. チェックアウトしたコード( 1/2 ) ● Firmware – PX4 のフライトコアとミドルウェア ● catkin_simple – catkin の便利パッケージみたい – ROS のパッケージでは依存関係について記述する必要があるが、 その記述を簡略化できる ● glog_catkin – Google glog(Google のログ記録用マクロ集 ) を catkin で使用で きるようにしたパッケージ。 – catkin_simple と unzip に依存
  34. チェックアウトしたコード( 2/2 ) ● mav_comm – MAV で使用されるメッセージとサービスが定義するパッケー ジ ● rotors_simulator – MAV gazebo シミュレータの 1 つ。 – いくつかのマルチローターのモデルを提供 – センサーのシミュレーション、実装例としての制御器やワー ルド、ジョイスティックインタフェース、 launch ファイルの例な ども含む
  35. 依存関係の解決 ● rosdep コマンド( ROS の依存解決を行うコマンド)で不足パッ ケージや不足しているシステムのアプリケーションを取得でき る、はず – package.xml に依存関係を記述 – unzip もここに記述されているが、他のパッケージで依存関 係の解決ができずに unzip がインストールされないのだと 考えられる。 – とりあえず unzip を手動でインストールすることで解決
  36. Firmware ● 姿勢推定や制御コードがこの辺りにありそう ● Firmware/src/modules/ – attitude_estimator_ekf – attitude_estimator_q – attitude_estimator_so3 – ekf_att_pos_estimator – mc_att_control – mc_att_control_multiplatform – mc_pos_control – mc_pos_control_multiplatform ● 独自の制御器を実装した場合でもシミュレーションで動作確認ができそう
  37. さいごに ● Dronecode はまだまだ始まったばかり ● シミュレーションから始めて興味のあるところを掘り下げていた だければと思います。
Advertisement