37
Dronecode ROS の概要 シミュレーション環境のセットアップとその内容 日本 Android の会 ドローン WG くまだす 2015/7/20 ABC2015Summer

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

Embed Size (px)

Citation preview

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

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

日本 Android の会 ドローン WG くまだす2015/7/20 ABC2015Summer

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

対象

● Dronecode をほとんど知らないけれど興味がある

● ROS を知らない、触ったことがない

● Linux の基本的なコマンドの扱い方は知っている

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

自己紹介

● くまだす (Hiroshi Sakate)

● 自称 組込み屋さん● 所属

– 日本 Android の会 ドローン WG

– 日本 Android の会 神戸支部

– Yocto Project Japan

– Tizen Japan コンソーシアム● ドローンとの関わり

– 触ったことがありません– 学生の時に制御理論の研究室だったので姿勢制御に興味あり

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

このセッションでできるようになること

● 風の日でも雨の日でもドローンを飛ばせる

– ※PC の画面の中で● シミュレーション環境を整えゲームのコントローラーでドローンを操縦で

きる

● ROS がどういったプロジェクトか理解できる

● ROS の簡単なコマンドを操作できる

● 補足

– Dronecode 初心者の私が詰まった箇所も含めて紹介

– Dronecode に興味を持つきっかけの提供

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

流れ

1.シミュレーション環境 (SITL) の概要

2.シミュレーション環境のセットアップ

3.デモ

4. ROS の概要

5. SITL の中身を少し覗いてみる

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

1. シミュレーション環境( SITL )の概要

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

Dronecode プロジェクトの全体像

● 今回見ていくのはたくさんあるうちのごく一部

● Off Vehicle のSimulators の中の SITL

引用元: https://www.dronecode.org

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

PX4 プロジェクトの全体像

● 大きく 2 つあるプロジェクトのうち PX4 を扱う

– もうひとつはAPM/ArduPilot

● 実機の代わりにシミュレーションを使う

● 上位層は MAVLink で通信

● ROS から飛行指示が可能

引用元: https://www.dronecode.org

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

SITL と HITL とは

● SITL : Simulation in the loop

– ホスト PC 上ですべての計算を実機無しで行う

– 新しいアルゴリズムや制御則のテストに向いている– ハードウェアのタイミングや制限(スタックサイズなど)を考慮できない。

● HITL : Hardware in the loop

– SITL と違い実機を使用する。

– シミュレートされたセンサーデータを流し、制御信号を取り出す。

– 通信速度の都合で USB 接続で使用、無線では使用してはいけないとされている。

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

シミュレーション環境( SITL )の構成

● ネイティブ環境が推奨されていますが、手軽さを重視して仮想環境を使用します。

● 必要な機材

– そこそこの性能の Linux PC

– Xbox360 の USB コントローラ● 使用した主なソフトウェア

– Ubuntu

– Docker

– ROS

Host OS : Ubuntu 14.04

Docker

Guest OS : Ubuntu 14.04

ROS

Gazebo

xboxdrv

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

2. シミュレーション環境のセットアップ

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

はじめに

● 以降の手順は下記のページを参考にしたものです。

– Automated SITL setup

– https://pixhawk.org/dev/ros/automated_sitl● OS イメージ、開発環境、ソースコードなどのダウンロードが必

要なため容量制限のある回線では気をつけてください。

● ゲスト OS は画面なしで起動しますが、 X サーバ使ってホスト上でウィンドウが開きます。

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

Docker のインストール

● インストール

– 手順通り、といっても 1 行。 http://docs.docker.com/linux/started/

● $ wget -qO- https://get.docker.com/ | sh– 中でグループを追加しているので、このあとログインしなおし

たほうが良いかもしれない。

● 動作確認

– $ docker run hello-world

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

X サーバの公開

● まず X サーバへのアクセスを許可する。

– $ xhost +– 調べるとセキュリティ的にはかなり危ないようなので、自分で調べてください。

● X サーバはすぐには使わないですが後々使います。

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

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 を開く

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

SITL のビルドの前に

● 手順通りに進めると次の手順でゲスト OS 上に unzip が無いと怒られるので、事前にインストールしておく。 (2015/7/11現在 )

– # apt-get install unzip

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

SITL のソース取得・ビルド

● セットアップスクリプトの実行

– # cd /sitl

– # ./setup-workspace.bash● 実行される内容

– 作業ディレクトリの作成

– 使用するリポジトリ (5個 ) のチェックアウト

– ビルド

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

参考 :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 を実行している。

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

シミュレータの起動

● ここまでで SITL のセットアップ完了。

● 起動は下記コマンド

– # source devel/setup.bash

– # roslaunch px4 gazebo_iris_empty_world.launch● X サーバを使ってホストのウィンドウとして表示される。

● ただし、このままではドローンが操作できない。

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

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

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

Xbox360 コントローラ認識結果

デーモンを止める前 デーモンを止めた後

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

操作方法

● ARM (プロペラを回す)

– 2 本のスティックを→←と内側に倒す

● DISARM (プロペラを止める)

– 2 本のスティックを←←と左へ倒す● 移動

– 右スティック左右:下降・上昇– 右スティック上下:水平移動– 左スティック左右:旋回– 右アナログトリガ:水平移動(えっ?)

● モード切り替え

– X :オート?、 A :マニュアル?、 B :マニュアル?

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

キーアサインの変更

● 2 つの変更方法

– jstest-gtk を使う

– launch ファイルに設定を書いてアサインを変更

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

ワールドの切り替え

● roslaunch の際に launch ファイルにべつのファイルをシテイすると機体やワールドが切り替わる

– # roslaunch px4 gazebo_ardrone_house_world.launch

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

終了と再開

● 終了(正しくないような気がする)

– 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

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

3. デモ

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

4.ROS の概要

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

ROS について

● ROS : Robot operating system

– ロボットのソフト開発のための柔軟なフレームワーク– ハードウェア抽象化、デバイスドライバ、ライブラリ、視覚化ツ

ール、メッセージ通信、パッケージ管理などを提供

– BSD ライセンス

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

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

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

Roslaunch

● 例: roslaunch px4 gazebo_iris_empty_world.launch

● launch ファイルに記述した設定で起動する

● launch ファイル

– XML で記述

– ちゃんと理解できていないけれど、様々なパラメータ(ワールド、機体、キーマップ)を設定している

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

新しいコマンド

● 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

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

5.SITL の中身を少し覗いてみる

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

チェックアウトしたコード( 1/2 )

● Firmware

– PX4 のフライトコアとミドルウェア● catkin_simple

– catkin の便利パッケージみたい

– ROS のパッケージでは依存関係について記述する必要があるが、その記述を簡略化できる

● glog_catkin

– Google glog(Google のログ記録用マクロ集 ) を catkin で使用できるようにしたパッケージ。

– catkin_simple と unzip に依存

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

チェックアウトしたコード( 2/2 )

● mav_comm

– MAV で使用されるメッセージとサービスが定義するパッケージ

● rotors_simulator

– MAV gazebo シミュレータの 1 つ。

– いくつかのマルチローターのモデルを提供– センサーのシミュレーション、実装例としての制御器やワー

ルド、ジョイスティックインタフェース、 launch ファイルの例なども含む

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

依存関係の解決

● rosdep コマンド( ROS の依存解決を行うコマンド)で不足パッケージや不足しているシステムのアプリケーションを取得できる、はず

– package.xml に依存関係を記述

– unzip もここに記述されているが、他のパッケージで依存関係の解決ができずに unzip がインストールされないのだと考えられる。

– とりあえず unzip を手動でインストールすることで解決

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

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● 独自の制御器を実装した場合でもシミュレーションで動作確認ができそう

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

さいごに

● Dronecode はまだまだ始まったばかり

● シミュレーションから始めて興味のあるところを掘り下げていただければと思います。