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
5
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
190
CoRL2021論文読み会
ry0_ka
0
5
myCobotがある生活
ry0_ka
0
6
MoveItの新機能、OMPL Constrained Planningを試してみた
ry0_ka
0
14
MoveItの新機能、 pilz industrial motionを試してみた
ry0_ka
0
17
MoveIt Day 2019 TrajOpt
ry0_ka
0
8
MoveItで実装されているプランニングアルゴリズムについて
ry0_ka
0
9
Other Decks in Science
See All in Science
ACL読み会2024@名大 REANO: Optimising Retrieval-Augmented Reader Models through Knowledge Graph Generation
takuma_matsubara
0
100
As We May Interact: Challenges and Opportunities for Next-Generation Human-Information Interaction
signer
PRO
0
200
Spectral Sparsification of Hypergraphs
tasusu
0
190
WCS-LA-2024
lcolladotor
0
140
理論計算機科学における 数学の応用: 擬似ランダムネス
nobushimi
1
370
機械学習を支える連続最適化
nearme_tech
PRO
1
180
(論文読み)贈り物の交換による地位の競争と社会構造の変化 - 文化人類学への統計物理学的アプローチ -
__ymgc__
1
130
(Forkwell Library #48)『詳解 インシデントレスポンス』で学び倒すブルーチーム技術
scientia
2
1.4k
白金鉱業Meetup Vol.15 DMLによる条件付処置効果の推定_sotaroIZUMI_20240919
brainpadpr
2
590
Online Feedback Optimization
floriandoerfler
0
520
【健康&筋肉と生産性向上の関連性】 【Google Cloudを企業で運用する際の知識】 をお届け
yasumuusan
0
380
大規模言語モデルの開発
chokkan
PRO
84
35k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Thoughts on Productivity
jonyablonski
67
4.4k
Building Adaptive Systems
keathley
38
2.3k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Scaling GitHub
holman
458
140k
Building Your Own Lightsaber
phodgson
103
6.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
BBQ
matthewcrist
85
9.4k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
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