40
テキスト ROS+Gazebo ではじめるロボットシミュレーション akio

第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

Embed Size (px)

DESCRIPTION

第1回ROS勉強会で発表した時のスライドです。

Citation preview

Page 1: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

ROS+Gazeboではじめるロボットシミュレーション

akio

Page 2: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

DISCLAIMER

この発表の内容は全て公開されている情報および発表者(akio)の個人的な意見に基づくものです。発表者の雇用者に一切の関係はありません。

発表内容には細心の注意を払っていますが、記載情報のご利用により万一損害が生じても、発表者は一切の責任を負いません。

Page 3: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

自己紹介

akio

@akio(GitHub)

ロボットのソフトウェアを開発する仕事をしてます

学生時代から物理シミュレータで遊ぶのが好きです

Page 4: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

内容Gazeboについて

ROSとの連携

すぐ試せるパッケージ

自分のモデルをつくってみよう

まとめ

Page 5: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

Gazeboについて

Page 6: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

Gazeboとは!

公式サイトはhttp://gazebosim.org

オープンソース(Apacheライセンス)の3Dロボットシミュレータ

リアルタイム性を重視

OGREを利用した高品質なグラフィック

複数の物理エンジンを切り替えられる(ODE, Bullet, Simbody, DART)

カメラ、レーザーレンジファインダなどのセンサーシミュレーション

独自のAPIを持つが、ROSとの連携も充実

Page 7: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

独断と偏見によるGazeboの歴史

Player時代

ROS時代

Standalone時代 👈今ここ

Page 8: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

Player時代

2DロボットシミュレータPlayer/Stageの用途を補完する目的で始動

設定ファイルはXMLベースで記述

ライセンスはGPL

発表者もあまりよく知らない

Page 9: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

ROS時代(2009 - 2011)Willow Garageが開発支援

ROSとの連携を容易にする努力がなされる

PR2のシミュレータとして利用される

C++サポートの強化

コードベースはPlayer時代と同じ(GPL)

ROS Wikiにはまだこの時代の記述が残っており、混乱しやすい

Page 10: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

Standalone時代(2012 - 現在)WillowGarageからスピンアウトしたOSRF(Open Source Robotics Foundation)が主に開発

全面的な書き直しが行われ、バージョンもリセット

ライセンスもApache Software License 2.0に

設定ファイルもSDF(Simulation Description Format)へ

Protobufを利用した独自のメッセージ通信機構を持つ

DARPA Robotics Challengeの予選の一つVRC(Virtual Robotics Challenge)用シミュレータに採用される

Page 11: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

Gazeboのアーキテクチャ

SDF

gzserver

gzclient (GUI)

プラグイン

モデル

Load

モデル

プラグイン プラグイン

Simulation World

メッセージ通信

制御処理など

Page 12: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

向き不向き元々の開発経緯から、センサー+シンプルな機構のロボットとは比較的相性が良いです

しかし、物理シミュレーションエンジンのアルゴリズムの影響もあり多関節ロボットや歩行ロボットなどでは苦しい場面が…

リアルタイム性重視なので、厳密な精度を期待しないで使うのが良い

v1.9を使っていても動作が不安定な時がある。締め切りに追われている時には向かないかもしれない

今後(v2.2~)、物理シミュレーションエンジンの選択肢が広がるので、改善の希望はあります

Page 13: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

まとめ

今後はStandalone版が主流です

向き不向きがあるので、用途と性能を考慮して使うのが吉です

今後の改善次第で対応用途は広がるかも?

Page 14: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

ROSとの連携

Page 15: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

GazeboとROSとの連携機構の再整備

Standalone版では長らく公式なROSとの連携機構がなかった

Standalone版1.3~から対応し始め1.9でほぼ安定

ROSはHydroからこちらの仕組みに準拠

Groovyではあちこち不整合が出ます

Page 16: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

SDFgzserver

gzclient (GUI)

プラグイン

モデル

Load

プラグイン

Simulation World

メッセージ通信

制御処理など

連携システムのアーキテクチャ

URDF

変換

ROS controller managerroscpp

ROSノードROSノード

Controller プラグイン

モデル

Controller プラグイン

roscpp roscppROS メッセージ等

Page 17: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

モデルを制御したい場合gazebo_pluginsにある既成プラグインを使う

Gazeboプラグインとして開発する

モデルに紐づいて、Gazebo APIを利用

roscppを使って他のROSノードと通信

ros-controlsのControllerManagerに対応したControllerプラグインとして開発する

ros-controlsはPR2のリアルタイム制御レイヤーの一般化版

実機用制御プログラムと、Controllerを共有できる

Page 18: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

gazebo_pluginsのプラグインCamera Multicamera Depth Camera Openni Kinect GPU Laser Laser Block Laser F3D (Force Feedback Ground Truth) Force IMU Joint Pose Trajectory P3D (3D Position Interface for Ground Truth) Projector Prosilica Camera Bumper Differential Drive Skid Steering Drive Video Plugin Planar Move Plugin

Page 19: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

まとめしばらくはGazebo1.9 + ROS Hydroの組み合わせが安定だと思われます

異なるバージョンを組み合わせると、追跡が難しいエラーが出たりします

モデルを制御するなら将来的にはros-controls経由か?

ros-controls自体はまだ成熟しきっていない

今は使い分けが必要

Page 20: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

すぐ試せるパッケージ

Page 21: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

ROS HydroでリリースされているGazeboシミュレーションPKG発表者調べなので、抜け/漏れなど多数あると思われます

Turtlebot2/Kobuki

Husky

Grizzly

youBot

Segbot

UR5/10

Hector Quadcoptor

Page 22: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

Turtlebot2/Kobukiインストール

$ apt-get install ros-hydro-turtlebot-simulator 実行

$ roslaunch turtlebot_gazebo turtlebot_empty_world.launch !

Page 23: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

Huskyインストール

$ apt-get install ros-hydro-husky-simulator 実行

$ roslaunch husky_gazebo husky_empty_world.launch

Page 24: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

Grizzlyインストール

$ apt-get install ros-hydro-grizzly-simulator 実行

$ roslaunch grizzly_gazebo grizzly_empty_world.launch

Page 25: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

youBotインストール

$ apt-get install ros-hydro-youbot-simulation 実行

$ roslaunch youbot_gazebo_robot youbot_dual_arm.launch

Page 26: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

Segbotインストール $ apt-get install ros-hydro-segbot-simulator 実行 $ roslaunch segbot_gazebo segbot_test_world.launch (別の端末)$ roslaunch segbot_gazebo segbot_mobile_base.launch

Page 27: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

UR5/10(Universal Robots)インストール $ apt-get install ros-hydro-ur-gazebo 実行 (UR5)$ roslaunch ur_gazebo ur5.launch (UR10)$ roslaunch ur_gazebo ur10.launch

アームだけなので、好きな台車にくっつけよう

Page 28: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

テキスト

Hector Quadrotorインストール $ apt-get install ros-hydro-hector-quadrotor-gazebo 実行 $ roslaunch hector_quadrotor_gazebo quadrotor_empty_world.launch

Page 29: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

まとめ

ROS Hydroならすぐ試せるシミュレータモデル多数

基本的に標準的なインターフェースに準拠しているので、他のROSフレームワーク(MoveIt!など)とも比較的容易のはず

Page 30: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

自分のモデルを作ってみよう (サンプルコードで学ぶ編)

Page 31: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

参考になる資料

公式のROS連携チュートリアル

http://gazebosim.org/wiki/Tutorials#ROS_Integration

上記チュートリアルのサンプルコード

https://github.com/ros-simulation/gazebo_ros_demos

Page 32: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

今回の例題

公式チュートリアル例題を参考により簡略化

1軸回転関節を持つ

アーム先端にはカメラ

Xacro無しで書く

Page 33: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

必要なパッケージ

ros-hydro-gazebo-ros-pkgs

ros-hydro-gazebo-ros-control

ros-hydro-ros-controllers

確認用

ros-hydro-image-view2

Page 34: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

サンプルコード

sudo apt-get install git

Catkinのワークスペースを作って、srcディレクトリにclone してください。

git clone https://github.com/akio/myrobot_demo.git

Page 35: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

ファイルの説明myrobot_demo

myrobot_gazebo

package.xml  👈 普通

CMakeLists.txt 👈 普通

myrobot.launch 👈 全部入りLaunch

myrobot.urdf  👈 モデルの定義

Page 36: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

解説付きコードで説明

Page 37: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

モデルを書く時の注意点URDFからSDFへの変換プログラムや、Gazeboサーバーのエラーや警告が発展途上。

結果、エラーが起きても原因不明ということがよくあります

場合によっては意図しない結果が出ていてもエラーにならないこともあります

そんなときは変換ステップを一つ一つ分解して確認すると良いです(体験談)

Page 38: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

まとめ基本はURDFなので、Jointとリンクの繰り返しでロボットを組み立てる

必要な部分に、Gazebo用の設定を追加するイメージ

Gazeboプラグイン、ROS Controllersプラグインともに豊富に準備されているので、自分の使いたい機能をよく探しましょう

複雑なロボットはとても記述が長くなるので、Xacroを使って記述を減らしたり、ファイル分割するテクニックが必要

Page 39: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

全体のまとめ

Page 40: 第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション

全体のまとめ

同じGazeboでも色々あるので、要注意

しばらくはGazebo1.9 + Hydroが安定

すぐに使えるロボットモデルの配布が始まっている

要領がわかれば、自分でロボットモデルや新しいプラグインを開発できる