Upload
hiroshi-sakate
View
873
Download
2
Embed Size (px)
Citation preview
Dronecode と ROS の概要シミュレーション環境のセットアップとその内容
日本 Android の会 ドローン WG くまだす2015/7/20 ABC2015Summer
対象
● Dronecode をほとんど知らないけれど興味がある
● ROS を知らない、触ったことがない
● Linux の基本的なコマンドの扱い方は知っている
自己紹介
● くまだす (Hiroshi Sakate)
● 自称 組込み屋さん● 所属
– 日本 Android の会 ドローン WG
– 日本 Android の会 神戸支部
– Yocto Project Japan
– Tizen Japan コンソーシアム● ドローンとの関わり
– 触ったことがありません– 学生の時に制御理論の研究室だったので姿勢制御に興味あり
このセッションでできるようになること
● 風の日でも雨の日でもドローンを飛ばせる
– ※PC の画面の中で● シミュレーション環境を整えゲームのコントローラーでドローンを操縦で
きる
● ROS がどういったプロジェクトか理解できる
● ROS の簡単なコマンドを操作できる
● 補足
– Dronecode 初心者の私が詰まった箇所も含めて紹介
– Dronecode に興味を持つきっかけの提供
流れ
1.シミュレーション環境 (SITL) の概要
2.シミュレーション環境のセットアップ
3.デモ
4. ROS の概要
5. SITL の中身を少し覗いてみる
1. シミュレーション環境( SITL )の概要
Dronecode プロジェクトの全体像
● 今回見ていくのはたくさんあるうちのごく一部
● Off Vehicle のSimulators の中の SITL
引用元: https://www.dronecode.org
PX4 プロジェクトの全体像
● 大きく 2 つあるプロジェクトのうち PX4 を扱う
– もうひとつはAPM/ArduPilot
● 実機の代わりにシミュレーションを使う
● 上位層は MAVLink で通信
● ROS から飛行指示が可能
引用元: https://www.dronecode.org
SITL と HITL とは
● SITL : Simulation in the loop
– ホスト PC 上ですべての計算を実機無しで行う
– 新しいアルゴリズムや制御則のテストに向いている– ハードウェアのタイミングや制限(スタックサイズなど)を考慮できない。
● HITL : Hardware in the loop
– SITL と違い実機を使用する。
– シミュレートされたセンサーデータを流し、制御信号を取り出す。
– 通信速度の都合で USB 接続で使用、無線では使用してはいけないとされている。
シミュレーション環境( SITL )の構成
● ネイティブ環境が推奨されていますが、手軽さを重視して仮想環境を使用します。
● 必要な機材
– そこそこの性能の Linux PC
– Xbox360 の USB コントローラ● 使用した主なソフトウェア
– Ubuntu
– Docker
– ROS
Host OS : Ubuntu 14.04
Docker
Guest OS : Ubuntu 14.04
ROS
Gazebo
xboxdrv
2. シミュレーション環境のセットアップ
はじめに
● 以降の手順は下記のページを参考にしたものです。
– Automated SITL setup
– https://pixhawk.org/dev/ros/automated_sitl● OS イメージ、開発環境、ソースコードなどのダウンロードが必
要なため容量制限のある回線では気をつけてください。
● ゲスト OS は画面なしで起動しますが、 X サーバ使ってホスト上でウィンドウが開きます。
Docker のインストール
● インストール
– 手順通り、といっても 1 行。 http://docs.docker.com/linux/started/
● $ wget -qO- https://get.docker.com/ | sh– 中でグループを追加しているので、このあとログインしなおし
たほうが良いかもしれない。
● 動作確認
– $ docker run hello-world
X サーバの公開
● まず X サーバへのアクセスを許可する。
– $ xhost +– 調べるとセキュリティ的にはかなり危ないようなので、自分で調べてください。
● X サーバはすぐには使わないですが後々使います。
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 を開く
SITL のビルドの前に
● 手順通りに進めると次の手順でゲスト OS 上に unzip が無いと怒られるので、事前にインストールしておく。 (2015/7/11現在 )
– # apt-get install unzip
SITL のソース取得・ビルド
● セットアップスクリプトの実行
– # cd /sitl
– # ./setup-workspace.bash● 実行される内容
– 作業ディレクトリの作成
– 使用するリポジトリ (5個 ) のチェックアウト
– ビルド
参考 :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 を実行している。
シミュレータの起動
● ここまでで SITL のセットアップ完了。
● 起動は下記コマンド
– # source devel/setup.bash
– # roslaunch px4 gazebo_iris_empty_world.launch● X サーバを使ってホストのウィンドウとして表示される。
● ただし、このままではドローンが操作できない。
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
Xbox360 コントローラ認識結果
デーモンを止める前 デーモンを止めた後
操作方法
● ARM (プロペラを回す)
– 2 本のスティックを→←と内側に倒す
● DISARM (プロペラを止める)
– 2 本のスティックを←←と左へ倒す● 移動
– 右スティック左右:下降・上昇– 右スティック上下:水平移動– 左スティック左右:旋回– 右アナログトリガ:水平移動(えっ?)
● モード切り替え
– X :オート?、 A :マニュアル?、 B :マニュアル?
キーアサインの変更
● 2 つの変更方法
– jstest-gtk を使う
– launch ファイルに設定を書いてアサインを変更
ワールドの切り替え
● roslaunch の際に launch ファイルにべつのファイルをシテイすると機体やワールドが切り替わる
– # roslaunch px4 gazebo_ardrone_house_world.launch
終了と再開
● 終了(正しくないような気がする)
– 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
3. デモ
4.ROS の概要
ROS について
● ROS : Robot operating system
– ロボットのソフト開発のための柔軟なフレームワーク– ハードウェア抽象化、デバイスドライバ、ライブラリ、視覚化ツ
ール、メッセージ通信、パッケージ管理などを提供
– BSD ライセンス
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
Roslaunch
● 例: roslaunch px4 gazebo_iris_empty_world.launch
● launch ファイルに記述した設定で起動する
● launch ファイル
– XML で記述
– ちゃんと理解できていないけれど、様々なパラメータ(ワールド、機体、キーマップ)を設定している
新しいコマンド
● 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
5.SITL の中身を少し覗いてみる
チェックアウトしたコード( 1/2 )
● Firmware
– PX4 のフライトコアとミドルウェア● catkin_simple
– catkin の便利パッケージみたい
– ROS のパッケージでは依存関係について記述する必要があるが、その記述を簡略化できる
● glog_catkin
– Google glog(Google のログ記録用マクロ集 ) を catkin で使用できるようにしたパッケージ。
– catkin_simple と unzip に依存
チェックアウトしたコード( 2/2 )
● mav_comm
– MAV で使用されるメッセージとサービスが定義するパッケージ
● rotors_simulator
– MAV gazebo シミュレータの 1 つ。
– いくつかのマルチローターのモデルを提供– センサーのシミュレーション、実装例としての制御器やワー
ルド、ジョイスティックインタフェース、 launch ファイルの例なども含む
依存関係の解決
● rosdep コマンド( ROS の依存解決を行うコマンド)で不足パッケージや不足しているシステムのアプリケーションを取得できる、はず
– package.xml に依存関係を記述
– unzip もここに記述されているが、他のパッケージで依存関係の解決ができずに unzip がインストールされないのだと考えられる。
– とりあえず unzip を手動でインストールすることで解決
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● 独自の制御器を実装した場合でもシミュレーションで動作確認ができそう
さいごに
● Dronecode はまだまだ始まったばかり
● シミュレーションから始めて興味のあるところを掘り下げていただければと思います。