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
4
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
150
CoRL2021論文読み会
ry0_ka
0
4
myCobotがある生活
ry0_ka
0
3
MoveItの新機能、OMPL Constrained Planningを試してみた
ry0_ka
0
3
MoveItの新機能、 pilz industrial motionを試してみた
ry0_ka
0
6
MoveIt Day 2019 TrajOpt
ry0_ka
0
6
MoveItで実装されているプランニングアルゴリズムについて
ry0_ka
0
4
Other Decks in Science
See All in Science
事業会社における 機械学習・推薦システム技術の活用事例と必要な能力 / ml-recsys-in-layerx-wantedly-2024
yuya4
3
220
小杉考司(専修大学)
kosugitti
2
550
(Forkwell Library #48)『詳解 インシデントレスポンス』で学び倒すブルーチーム技術
scientia
2
1.4k
Lyme Disease
uni_of_nomi
0
130
All-in-One Bioinformatics Platform Realized with Snowflake ~ From In Silico Drug Discovery, Disease Variant Analysis, to Single-Cell RNA-seq
ktatsuya
0
230
As We May Interact: Challenges and Opportunities for Next-Generation Human-Information Interaction
signer
PRO
0
150
Machine Learning for Materials (Lecture 8)
aronwalsh
0
410
Direct Preference Optimization
zchenry
0
280
深層学習を利用して 大豆の外部欠陥を判別した研究事例の紹介
kentaitakura
0
220
最適化超入門
tkm2261
14
3.3k
Spectral Sparsification of Hypergraphs
tasusu
0
170
ABEMAの効果検証事例〜効果の異質性を考える〜
s1ok69oo
4
2k
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Designing Experiences People Love
moore
138
23k
GraphQLとの向き合い方2022年版
quramy
43
13k
Six Lessons from altMBA
skipperchong
27
3.5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Building Your Own Lightsaber
phodgson
102
6.1k
A better future with KSS
kneath
238
17k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
What's in a price? How to price your products and services
michaelherold
243
12k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
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