【DL輪読会】Factory: Fast Contact for Robotic Assembly

>100 Views

June 13, 22

スライド概要

2022/06/10
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Papers] Factory: Fast Contact for Robotic Assembly Koki Ishimoto http://deeplearning.jp/ 1

2.

書誌情報 • Title: Factory: Fast Contact for Robotic Assembly • Author: Yashraj Narang*, Kier Storey*, Iretiayo Akinola*, Miles Macklin*, Philipp Reist*, Lukasz Wawrzyniak*, Ynrong Guo*, Adam Moravanszky*, Gavriel State*, Michelle Lu*, Ankur Handa*, Dieter Fox*† • • * NVIDIA • †University of Washington Project page: https://sites.google.com/nvidia.com/factory/ 2

3.

概要 • Contact-Richなシミュレーションをreal-timeに動かすことに成功した • 高品質なCADファイルとメモリ消費を抑えた接触シミュレーション手法により、A50001枚で 1000個のボルトScrew環境を作成可能にした。 • 従来手法に比べて2桁早い • 並列化でシングルスレッドのreal-time計算に比べて3桁の高速化 • AssemblyタスクのBenchmarkを提供した • 4つのpolicyを1-1.5hで学習可能(RTX 3090 1枚) 3

4.

関連研究 Contact-rich simulation • 従来のcontact-richなタスクを解くsimulator は、nut-bolt taskのレンダリングにrealtimeの20倍以上の時間がかかることが多い • Implicit Multibody Penalty-BasedDistributed Contact (2014): 1/460 real-time • Intersection-free rigid body dynamics(2021): 1/350 real-time • Sim-to-Real Transfer of Bolting Tasks with Tight Tolerance(2020): 4* real-time (ただしタ スクが簡単) https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9341644 4

5.

Contact-Rich Simulation Methods • RLタスクなどのために、十分高速に回せるcontact-richなシミュレータの開発 5

6.

SDF Collisions • SDF: 物体の表面を0として外部と内部を正負で表現した関数 • 256^3より大きい解像度のSDFを用意 • 右の画像引用元の手法で物体のcontactの初期情報を計算 • 物体間で最も近い点をSDFの勾配情報から求めていく • M4 (径が4mm) ナットとボルトで16k個のcontactsが生成された • Contact: 物体間に生じるinteraction, 接触力(ベクトル) https://dl.acm.org/doi/pdf/10 .1145/3384538 6

7.

Contact Reduction and Solver Selection • 処理の高速化のために、GPUメモリの節約を考える • Contact生成において、各contactに必要なのは7つのfloat(point, normal vector, distance)と2つ のinteters(rigid body indices) 合わせて36bytes • およそ160bytesをcontactとその制約に必要なメモリ量として見積もる • M4 ナットとボルト(16k contacts)で約2.5MB/timestep • Jacobi solver(Δt=1/60)の条件で、, 8 sub-steps と 64 iterationsが安定的なシミュレーションの ために必要 • 上記の設定で、メモリバンド幅はおよそ1.28GB/frame, 76.8GB/s • もしContactsを16k → 300に減らせたら、1つ当たり24MB/frame, 1.4GB/sでシミュレーション 可能。 • A5000を使った場合、最大1100個のナット・ボルトアセンブリをsimulationできるはず • Contactsが300程度なら、Gauss-Seidel solverを使用できる(1 substepと16 iterationsで安定 的なシミュレーションが可能) 7

8.

Implementation of Contact Reduction • 近いmesh同士でnormal vector(contact)を共有 することでcontactを減らす 1: SDF collisionを用いてcontactsの生成 2: 法線の類似度でcontactを統合 3: 割り当てられていないものについては、その中で deepest penetrationなcontactを見つける 4: 3で見つ けた contactに、 割り当 てられて いな い contactを統合していく 8

9.

Implementation of Contact Reduction • 削減されたcontact • 300contactsの場合: contactの生成と削減に11ms, contactの制約の解決に3msかかる 9

10.

Performance Evaluations • さ ま ざ ま な 環 境 の rendering テ ス ト 動 画 は Project page へ https://sites.google.com/nvidia.com/factory/ 10

11.

Robot Learning Tools • 次に、ロボット学習環境としてIsaac Gymを使用(PhysX物理エンジンはIsaacで使用可能) • RobotとしてPanda Frankaのロボットアームを使用 • NIST boardの60個のアセット • Robot assembly 環境3つ • • FrankaNutBoltEnv • FrankaInsertionEnv • FrankaGearsEnv Robotコントローラ7種類 11

12.

Robot Learning Tools • NIST boardの60個のアセット • NISTの公開されているアセットは、正確なシミュレーションを行 う上では精度が不十分 • 電気コネクターなどはCADがピッタリ噛み合わなかったり、手作業で計測 されてたりする • 自作の、より精度の高いCADファイルを作成 12

13.

Scenes • Robot assembly 環境3つ • FrankaNutBoltEnv • ナットとボルトの嵌め込み • M4,M8,M12,M16,M20(使用した ボルトのサイズ) • FrankaInsertionEnv • 丸 型 ま た は 正 方 形 型 の pegsand-holes/コネクタ類の差し込 み • FrankaGearsEnv • ギア3つとマウンタ1つの嵌め 込み 13

14.

Controllers • Robotコントローラ7種類 • IK(inverse kinematics) • ID(inverse dynamics) • インピーダンス制御 • Operational-space motion controller • 慣性モーメント・重力補償付きのID • 開ループ力制御 • 閉ループ位置制御 • Hybrid force-motion controller • Motion controllerとforce controllerの組み合わせ(軸によって使い分ける) 14

15.

Reinforcement Learning • タスクを三つに分解 • Pick • Place • Screw • Pick&Placeタスク自体は古典的 • 特にContact-RichなScrewタスクに注目 15

16.

Shared Framework: Pick, Place, Screw • PPOのハイパラは共通(右表) • 3-4個のpolicyはRTX 3090で同時にバッジ学習 • それぞれのpolicyで128個のsimulation環境を使用 • 各バッジ1024 policy updateに 1-1.5 h • 行動空間 • 開ループ制御と閉ループ制御は3次元力ベクトル • それ以外のコントローラはハンドの相対姿勢(6DoF) 各SubpolicyのRandomized Initial States 16

17.

Subpolicy: Pick and Place • Pick(成功率 100%) • 観測: ハンド・ナットの姿勢、ハンド速度・角速度 • 行動空間: IK(inverse kinematics) • Dense reward: • kn, kf: ナットの中心軸とハンドの approach axisに関する2-4個のキーポイントからなるテンソル • • Success: Pickに成功したら Place(成功率 98.4%) • 観測: ハンド・ナット・ボルトの姿勢、ハンド+ナットの速度・角速度 • 行動空間: IK • Dense reward: Placeと同様(ボルトとナットに関する距離) • Success: ボルトとナットのキーポイントが0.8mm 以内 17

18.

SubPolicy: Screw • Screw • 観測:複数で比較 • 行動空間:複数で比較 • Dense Reward: ボルトとナット、ナットとハンドのキーポイントの距離の和 • Success: ナットとボルトが最後まで回りきったら成功(最後から1巻以内なら成功) • ハンドの関節角を無限回転と仮定(Frankaは本来無限回転しない) • ハンドをナットから離さずに回すため • さまざまな失敗軌道も見られた • ボルトとの衝突、ナットとボルトが接触した際のroll-pitch軸のずれ、回している際のジャミング、歳差運動に よるハンドとナットのスリップ • ⇨観測・行動空間の比較、baseline_rewardの追加 18

19.

SubPolicy: Screw • コントローラ・ゲインの探索 • OSC motionを使って P Motion Gainが小さい時(0.1)に最も成功確率が高かった。 19

20.

SubPolicy: Screw • 観測の探索 • • Pose+ velocityが最も成功率が高かった(Poseのみとそこまで変わらな い) 行動空間の探索 • 6自由度を全て使うより、z方向とyaw軸の2自由度で回した方が成功 率が高い 20

21.

SubPolicy: Screw • Baseline_rewardの探索 • Linearを使用した場合が最も成功率が高かった • d: キーポイント間の距離 21

22.

Sequential Policy Execution • Multi-task learning的な話 • Pick, Place, Screwをend-to-endで学習させると72.9%まで成功率が低下 • Subpolicyを学習するときに、ひとつ前のSubpolicyの最終状態の分布をカバーする様にするなどの工夫をした • バラバラに学習させた場合は合わせて90% 各SubpolicyのRandomized Initial States 22

23.

Contact Forces • Screwタスク時のジョイントトルクの分布 • Daily Interactive Manipulation datasetのボルト+レンチタスクと比較 • Real Fasten Nutの分布内にSim Fasten Nutが収まっている • Real Fasten Nutの方が分散が大きいのは、人間の締め方の多様性の問題と推測 23

24.

Limitations • 要改善点 • SDFの衝突スキーム • 薄い素材でできたボトルや箱の衝突をロバストに処理する機能 • Mesh1つあたりが大きい場合の処理の改善 • Meshひとつごとに一つの接触が生成されるため、平坦で大きい表面の衝突がうまく表現できていない • Sparse SDF representationを用いたメモリの削減 • Deformable objectsのFEMベースのサポート(コネクタケーブルなど) 24

25.

Conclusion • Contact-Richなシミュレーションをreal-timeに動かすことに成功した • 高品質なCADファイルとメモリ消費を抑えた接触シミュレーション手法により、A50001枚で 1000個のボルトScrew環境などを作成可能にした。 • 従来手法に比べて2桁早い • 並列化でシングルスレッドのreal-time計算に比べて3桁の高速化 • AssemblyタスクのBenchmarkを提供した • 4つのpolicyを1-1.5hで学習可能(RTX 3090 1枚) • Screwタスクだけでなく、他のContact-Richなタスクにも応用可能性がある • 非凸形状の把持 • 不均一な屋外地形での移動 など 25