Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unity道場 ロボティクス 秋のLT祭り 2021
Search
Ryo Kabutan
October 19, 2021
Science
0
27
Unity道場 ロボティクス 秋のLT祭り 2021
21:17-21:29 LT6 UnityとROSの連携について
Ryo Kabutan
October 19, 2021
Tweet
Share
More Decks by Ryo Kabutan
See All by Ryo Kabutan
MoveItを使った産業用ロボット向け動作作成方法の紹介 / Introduction to creating motion for industrial robots using MoveIt
ry0_ka
0
640
CoRL2021論文読み会
ry0_ka
0
23
myCobotがある生活
ry0_ka
0
35
MoveItの新機能、OMPL Constrained Planningを試してみた
ry0_ka
0
86
MoveItの新機能、 pilz industrial motionを試してみた
ry0_ka
0
47
MoveIt Day 2019 TrajOpt
ry0_ka
0
65
MoveItで実装されているプランニングアルゴリズムについて
ry0_ka
0
76
Other Decks in Science
See All in Science
データベース08: 実体関連モデルとは?
trycycle
PRO
0
940
[Paper Introduction] From Bytes to Ideas:Language Modeling with Autoregressive U-Nets
haruumiomoto
0
140
風の力で振れ幅が大きくなる振り子!? 〜タコマナローズ橋はなぜ落ちたのか〜
syotasasaki593876
1
100
ランサムウェア対策にも考慮したVMware、Hyper-V、Azure、AWS間のリアルタイムレプリケーション「Zerto」を徹底解説
climbteam
0
140
機械学習 - K近傍法 & 機械学習のお作法
trycycle
PRO
0
1.2k
システム数理と応用分野の未来を切り拓くロードマップ・エンターテインメント(スポーツ)への応用 / Applied mathematics for sports entertainment
konakalab
1
410
KH Coderチュートリアル(スライド版)
koichih
1
48k
Optimization of the Tournament Format for the Nationwide High School Kyudo Competition in Japan
konakalab
0
110
mathematics of indirect reciprocity
yohm
1
200
データベース05: SQL(2/3) 結合質問
trycycle
PRO
0
820
Transport information Geometry: Current and Future II
lwc2017
0
210
NASの容量不足のお悩み解決!災害対策も兼ねた「Wasabi Cloud NAS」はここがスゴイ
climbteam
1
160
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Raft: Consensus for Rubyists
vanstee
139
7.1k
Visualization
eitanlees
149
16k
RailsConf 2023
tenderlove
30
1.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
A Tale of Four Properties
chriscoyier
161
23k
Music & Morning Musume
bryan
46
6.8k
It's Worth the Effort
3n
187
28k
Transcript
1 2021.10.19 Unity道場 ロボティクス 秋のLT祭り 2021 がある生活 UnityとROS接続編 株丹 亮
Kabutan Ryo
株丹 亮 Kabutan Ryo 九州工業大学 西田研究室 - 2017 産業用ロボットのためのパスプランニングアルゴリズムの研究に従事。 株式会社
安川電機 2017 – 現在 株式会社 エイアイキューブ 出向中 個人で ROS (Robot Operating System) Japan Users Groupでたまに発表しています。 主にMoveItというロボットアーム向けライブラリの解説など。 産業用ロボットのためのプランニング技術、最適化、異常検知などの知能化技術の開発に従事。 2 今日はこの続編 上記資料のURL: https://www.slideshare.net/RyoKabutan
今日のLTの内容 • ロボット開発ではシミュレータが必須。 • ROSを使ったロボット開発をする場合、Gazeboと呼ばれるシミュレータを 使う場合が多い。 • しかしGazebo 11が最終バージョン(2025年まで)。Ignitionという新しい シミュレータに移行することになっているが、まだまだ発展途上。
日本での活用事例はあまり聞いたことがない。 3 • そこでUnityが活用できないか。myCobotを題材に説明。 NVIDIAとOpen Roboticsが連携 「Ignition Gazebo」「NVIDIA Isaac Sim」 の相互運用を目指し、ROSコミュニティのAI開発を強化 https://robotstart.info/2021/09/28/nvidia-open-robotics.html まだ何かありそう!これから楽しみ!! “
ROS (MoveIt)を使ったら何ができる? • ロボットアームの経路を自動で作ることができる。 • センサで障害物を検知しながら、複雑な障害物回避動作が生成できる。 (自動ピッキングシステム等のアプリが比較的簡単に作成できる。) 4 3次元距離センサ MoveItの画面
障害物 myCobot
Bad! 前ページのデモからわかること 5 Good! myCobotの登場により自宅でも簡単にシステムが構築できるようになった。 • それでもロボットアーム8万円、3次元センサ3万円、合計11万円。 購入するには少し勇気が必要。 Unityを使って実物のmyCobotがなくても、 MoveItで遊べるような環境を作ることが今回の目標。
• 開発途中のソフトをそのまま実機で実験するのは、少し怖い。 思わぬ動きをして机や周りの物にぶつけてヒヤヒヤ。煙は出したくない。
完成 実際に動作させた結果を紹介 実際にやってみたこと 6 STEP 3 MoveItの障害物情報をUnity上にも反映させる MoveItのplanning_sceneをUnityにpublishする。 Unity公式ツール「ROS-TCP Connector」使用。
STEP 2 ros_control経由でUnity上のmyCobotを動かす Unity用のインターフェースを作る。 Unity公式ツール「ROS-TCP Connector」使用。 STEP 1 ロボットモデルをUnity上に登場させる URDFで定義したmyCobotをUnityにインポートする。 Unity公式ツール「URDF Importer」使用。
ロボットモデルをUnity上に登場させる • ROSで使用されるロボット定義ファイル(URDF)を使って3D Objectを追加。 • URDF Importerが問題なく使用できた。 7 Good! インポートするだけで、
各リンクごとにAirticulation Body を自動で定義してくれる。
ros_control経由でUnity上のmyCobotを動かす ros_control? : ROSの制御用フレームワーク。簡単に言うと… この枠組でドライバを実装しておけば、どのロボットアームでも同じ司令で動作可能。 つまり実機用のドライバ、シミュレータ用のドライバと2つ用意しておけば、 それ以外の実装はそのまま共通で使うことができる 8 ① インターフェースを継承する
実機 myCobotの場合 myCobotはシリアル通信で制御可能。 API公開もされているので、 これを活用すれば良い。 どのようにros_control対応のドライバを書けばよいか。 まず実機の例を示す。 ② ロボット制御のための実装をする 実機 myCobot用のクラス作成。 左のコメントアウト部分に シリアル通信の命令を実装する。 • readは現在の関節角度を取る命令。 • writeは任意の関節角度に動かす命令。 ここがUnityになればよい!
ros_control経由でUnity上のmyCobotを動かす 9 ① インターフェースを継承する UnityのmyCobotの場合 ROSのTopicに乗せてUnityとROS間の 通信を行う。 ②ロボット制御のための実装をする(ROS側) UnityのmyCobot用の固有のクラス作成 左のコメントアウト部分にPub/Sub通信を
行う実装を書く。 • readはUnity側の現在関節角度を Subscribeする実装を書く。 • writeは目標の関節角度をPublishする 実装を書く。 ③ロボット制御のための実装をする(Unity側) Unity公式ツールのROS-TCP Connectorを 使う。 • 目標の関節角度を受け取り ArticulationBodyに角度を反映するノード • 現在の関節角度をPublishするノード を実装する。 完成! 実際の動きを確認 現在位置 取得 ArticulationBody に司令位置を反映 位置 司令 ros_control ArticulationBody から現在位置を取得 ②、③の接続イメージ
MoveItの障害物情報をUnityの世界にも反映させる MoveItでは障害物情報がplanning_sceneというTopicで管理されている。 10 障害物をMoveIt上から追加したあと、「Publish」ボタンを 押下すると右の情報がPublishされる。 これをUnity側でSubscribeすればUnity世界にも、 障害物を出現させることができるはず!! primitives: - type:
1 dimensions: - 0.2 - 0.2 - 0.2 primitive_poses: - position: x: 0.18 y: 0.21 z: 0.11 orientation: x: -0.04242791 y: 0.166670639 z: 0.246320621 w: 0.953806542
MoveItの障害物情報をUnity上にも反映させる • Unity側でplanning_sceneをSubscribeするscriptを作成。 • Subscribeした情報をもとにGameObject(基本モデル、Primitive)を追加する。 11 Good! ROSとUnityで座標系が異なることが悩みのタネだったが、簡単に変換できるので 実装がかなり楽だった。
実際に動作させた結果を紹介 12
まとめ ROSと連携できるシミュレータとしてUnityを活用した事例を紹介。 今後の課題 • Unity上でのセンサを用意する。例えば仮想的なRealsenseをUnity上で作成し、 MoveItの障害物情報としたい。 • ros_controlでUnityとの通信がROSのPub/Sub経由で行われているので、 余計な通信が発生している。できれば変更したい。 もし良いアプローチがありましたらコメントお願いします。
13
ご静聴ありがとうございました。 質問があれば、お気軽にどうぞ!! 14