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
10
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
290
CoRL2021論文読み会
ry0_ka
0
7
myCobotがある生活
ry0_ka
0
13
MoveItの新機能、OMPL Constrained Planningを試してみた
ry0_ka
0
24
MoveItの新機能、 pilz industrial motionを試してみた
ry0_ka
0
24
MoveIt Day 2019 TrajOpt
ry0_ka
0
19
MoveItで実装されているプランニングアルゴリズムについて
ry0_ka
0
18
Other Decks in Science
See All in Science
化学におけるAI・シミュレーション活用のトレンドと 汎用原子レベルシミュレーター: Matlantisを使った素材開発
matlantis
0
430
Planted Clique Conjectures are Equivalent
nobushimi
0
110
03_草原和博_広島大学大学院人間社会科学研究科教授_デジタル_シティズンシップシティで_新たな_学び__をつくる.pdf
sip3ristex
0
100
テンソル分解を用いた教師なし学習による変数選択法のシングルセルマルチオミックスデータ解析への応用
tagtag
1
120
学術講演会中央大学学員会大分支部
tagtag
0
120
240510 COGNAC LabChat
kazh
0
180
解説!データ基盤の進化を後押しする手順とタイミング
shomaekawa
1
390
05_山中真也_室蘭工業大学大学院工学研究科教授_だてプロの挑戦.pdf
sip3ristex
0
110
創薬における機械学習技術について
kanojikajino
16
4.9k
白金鉱業Meetup Vol.16_数理最適化案件のはじめかた・すすめかた
brainpadpr
3
1.3k
ACL読み会2024@名大 REANO: Optimising Retrieval-Augmented Reader Models through Knowledge Graph Generation
takuma_matsubara
0
140
白金鉱業Meetup Vol.15 DMLによる条件付処置効果の推定_sotaroIZUMI_20240919
brainpadpr
2
670
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Side Projects
sachag
452
42k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Code Review Best Practice
trishagee
66
17k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
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