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
46
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Unity道場 ロボティクス 秋のLT祭り 2021
21:17-21:29 LT6 UnityとROSの連携について
Ryo Kabutan
October 19, 2021
More Decks by Ryo Kabutan
See All by Ryo Kabutan
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
390
MoveItを使った産業用ロボット向け動作作成方法の紹介 / Introduction to creating motion for industrial robots using MoveIt
ry0_ka
0
1k
CoRL2021論文読み会
ry0_ka
0
47
myCobotがある生活
ry0_ka
0
94
MoveItの新機能、OMPL Constrained Planningを試してみた
ry0_ka
0
190
MoveItの新機能、 pilz industrial motionを試してみた
ry0_ka
0
110
MoveIt Day 2019 TrajOpt
ry0_ka
0
120
MoveItで実装されているプランニングアルゴリズムについて
ry0_ka
0
140
Other Decks in Science
See All in Science
第67回コンピュータビジョン勉強会論文紹介「RoboWheel: A Data Engine from Real-World Human Demonstrations for Cross-Embodiment Robotic Learning」
x_ttyszk
0
190
Van Dare naar Durf
voginip
0
300
JSAI2026企画セッションKS-14 インタビュー集『⼈⼯知能と哲学と四つの問い』が提起する⼈⼯知能のこれからの課題 趣旨説明 / JSAI2026 Special Session: A Collection of Interviews, “Artificial Intelligence, Philosophy, and Four Questions”
ykiyota
0
450
機械学習 - DBSCAN
trycycle
PRO
0
2.1k
データベース14: B+木 & ハッシュ索引
trycycle
PRO
0
910
J-STAGE全文XML登載必須化について
xspa2012
0
1.5k
機械学習 - K近傍法 & 機械学習のお作法
trycycle
PRO
1
1.6k
Conversation is the New Dashboard: 属人性を排除する第4世代BIツールの勢力図
shomaekawa
1
650
AlgorithAlgorihms for Decision Making
mickey_kubo
0
140
明治薬科大学講義_ビッグデータ解析を支えるデータベース技術とクラウドコンピューティング
ktatsuya
1
170
データベース08: 実体関連モデルとは?
trycycle
PRO
0
1.6k
知能とはなにか -ヒトとAIのあいだ-
tagtag
PRO
0
180
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Being A Developer After 40
akosma
91
590k
Typedesign – Prime Four
hannesfritz
42
3.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
330
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
We Are The Robots
honzajavorek
0
340
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.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