SlideShare a Scribd company logo
1 of 37
Download to read offline
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 はまだまだ始まったばかり
●
シミュレーションから始めて興味のあるところを掘り下げていた
だければと思います。

More Related Content

More from Hiroshi Sakate

GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...
GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...
GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...Hiroshi Sakate
 
Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)Hiroshi Sakate
 
ディープラーニングを活用したジェスチャー認識
ディープラーニングを活用したジェスチャー認識ディープラーニングを活用したジェスチャー認識
ディープラーニングを活用したジェスチャー認識Hiroshi Sakate
 
Introduce Yocto Project Japan and What want to make using Yocto Project
Introduce Yocto Project Japan and What want to make using Yocto ProjectIntroduce Yocto Project Japan and What want to make using Yocto Project
Introduce Yocto Project Japan and What want to make using Yocto ProjectHiroshi Sakate
 
Introduction to Yocto Project - Let's make customized embedded linux
Introduction to Yocto Project - Let's make customized embedded linuxIntroduction to Yocto Project - Let's make customized embedded linux
Introduction to Yocto Project - Let's make customized embedded linuxHiroshi Sakate
 
TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門
TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門
TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門Hiroshi Sakate
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaHiroshi Sakate
 
Tizenのご紹介(OSC2012 Tokyo/Fall)
Tizenのご紹介(OSC2012 Tokyo/Fall)Tizenのご紹介(OSC2012 Tokyo/Fall)
Tizenのご紹介(OSC2012 Tokyo/Fall)Hiroshi Sakate
 
Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルドHiroshi Sakate
 

More from Hiroshi Sakate (9)

GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...
GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...
GA勉強会#1 幾何学的代数に関する特許とアメリカの特許制度, The patents related to Geometric Algebra and ...
 
Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)
 
ディープラーニングを活用したジェスチャー認識
ディープラーニングを活用したジェスチャー認識ディープラーニングを活用したジェスチャー認識
ディープラーニングを活用したジェスチャー認識
 
Introduce Yocto Project Japan and What want to make using Yocto Project
Introduce Yocto Project Japan and What want to make using Yocto ProjectIntroduce Yocto Project Japan and What want to make using Yocto Project
Introduce Yocto Project Japan and What want to make using Yocto Project
 
Introduction to Yocto Project - Let's make customized embedded linux
Introduction to Yocto Project - Let's make customized embedded linuxIntroduction to Yocto Project - Let's make customized embedded linux
Introduction to Yocto Project - Let's make customized embedded linux
 
TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門
TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門
TIZEN OS for smartphone Kickstart application development / はじめて学ぶアプリ開発入門
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alpha
 
Tizenのご紹介(OSC2012 Tokyo/Fall)
Tizenのご紹介(OSC2012 Tokyo/Fall)Tizenのご紹介(OSC2012 Tokyo/Fall)
Tizenのご紹介(OSC2012 Tokyo/Fall)
 
Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルド
 

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