1
DEEP LEARNING JP
[DL Papers]
http://deeplearning.jp/
Factory: Fast Contact for Robotic Assembly
Koki Ishimoto
書誌情報
• 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枚)
関連研究 Contact-rich simulation
• 従来のcontact-richなタスクを解くsimulatorは、nut-bolt taskのレンダリングにreal-time
の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 (ただしタスクが簡
単)
4
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9341644
Contact-Rich Simulation Methods
• RLタスクなどのために、十分高速に回せるcontact-richなシミュレータの開発
5
SDF Collisions
6
• SDF: 物体の表面を0として外部と内部を正負で表現した関数
• 256^3より大きい解像度のSDFを用意
• 右の画像引用元の手法で物体のcontactの初期情報を計算
• 物体間で最も近い点をSDFの勾配情報から求めていく
• M4 (径が4mm) ナットとボルトで16k個のcontactsが生成された
• Contact: 物体間に生じるinteraction, 接触力(ベクトル)
https://dl.acm.org/doi/pdf/10
.1145/3384538
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
Implementation of Contact Reduction
• 近いmesh同士でnormal vector(contact)を共有
することでcontactを減らす
1: SDF collisionを用いてcontactsの生成
2: 法線の類似度でcontactを統合
3: 割り当てられていないものについては、その中で
deepest penetrationなcontactを見つける
4: 3で見つけたcontactに、割り当てられていない
contactを統合していく
8
Implementation of Contact Reduction
• 削減されたcontact
• 300contactsの場合: contactの生成と削減に11ms, contactの制約の解決に3msかかる
9
Performance Evaluations
• さ ま ざ ま な 環 境 の rendering テ ス ト 動 画 は Project page へ
https://sites.google.com/nvidia.com/factory/
10
Robot Learning Tools
• 次に、ロボット学習環境としてIsaac Gymを使用(PhysX物理エンジンはIsaacで使用可能)
• RobotとしてPanda Frankaのロボットアームを使用
• NIST boardの60個のアセット
• Robot assembly 環境3つ
• FrankaNutBoltEnv
• FrankaInsertionEnv
• FrankaGearsEnv
• Robotコントローラ7種類
11
Robot Learning Tools
• NIST boardの60個のアセット
• NISTの公開されているアセットは、正確なシミュレーションを行
う上では精度が不十分
• 電気コネクターなどはCADがピッタリ噛み合わなかったり、手作業で計測
されてたりする
• 自作の、より精度の高いCADファイルを作成
12
Scenes
• Robot assembly 環境3つ
• FrankaNutBoltEnv
• ナットとボルトの嵌め込み
• M4,M8,M12,M16,M20(使 用 し た
ボルトのサイズ)
• FrankaInsertionEnv
• 丸 型 ま た は 正 方 形 型 の pegs-
and-holes/コネクタ類の差し込
み
• FrankaGearsEnv
• ギア3つとマウンタ1つの嵌め
込み
13
Controllers
• Robotコントローラ7種類
• IK(inverse kinematics)
• ID(inverse dynamics)
• インピーダンス制御
• Operational-space motion controller
• 慣性モーメント・重力補償付きのID
• 開ループ力制御
• 閉ループ位置制御
• Hybrid force-motion controller
• Motion controllerとforce controllerの組み合わせ(軸によって使い分ける)
14
Reinforcement Learning
• タスクを三つに分解
• Pick
• Place
• Screw
• Pick&Placeタスク自体は古典的
• 特にContact-RichなScrewタスクに注目
15
Shared Framework: Pick, Place, Screw
• PPOのハイパラは共通(右表)
• 3-4個のpolicyはRTX 3090で同時にバッジ学習
• それぞれのpolicyで128個のsimulation環境を使用
• 各バッジ1024 policy updateに 1-1.5 h
• 行動空間
• 開ループ制御と閉ループ制御は3次元力ベクトル
• それ以外のコントローラはハンドの相対姿勢(6DoF)
16
各SubpolicyのRandomized Initial States
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
SubPolicy: Screw
• Screw
• 観測:複数で比較
• 行動空間:複数で比較
• Dense Reward: ボルトとナット、ナットとハンドのキーポイントの距離の和
• Success: ナットとボルトが最後まで回りきったら成功(最後から1巻以内なら成功)
• ハンドの関節角を無限回転と仮定(Frankaは本来無限回転しない)
• ハンドをナットから離さずに回すため
• さまざまな失敗軌道も見られた
• ボルトとの衝突、ナットとボルトが接触した際のroll-pitch軸のずれ、回している際のジャミング、歳差運動に
よるハンドとナットのスリップ
• ⇨観測・行動空間の比較、baseline_rewardの追加
18
SubPolicy: Screw
• コントローラ・ゲインの探索
• OSC motionを使って P Motion Gainが小さい時(0.1)に最も成功確率が高かった。
19
SubPolicy: Screw
• 観測の探索
• Pose+ velocityが最も成功率が高かった(Poseのみとそこまで変わらな
い)
• 行動空間の探索
• 6自由度を全て使うより、z方向とyaw軸の2自由度で回した方が成功
率が高い
20
SubPolicy: Screw
• Baseline_rewardの探索
• Linearを使用した場合が最も成功率が高かった
• d: キーポイント間の距離
21
Sequential Policy Execution
• Multi-task learning的な話
• Pick, Place, Screwをend-to-endで学習させると72.9%まで成功率が低下
• Subpolicyを学習するときに、ひとつ前のSubpolicyの最終状態の分布をカバーする様にするなどの工夫をした
• バラバラに学習させた場合は合わせて90%
22
各SubpolicyのRandomized Initial States
Contact Forces
• Screwタスク時のジョイントトルクの分布
• Daily Interactive Manipulation datasetのボルト+レンチタスクと比較
• Real Fasten Nutの分布内にSim Fasten Nutが収まっている
• Real Fasten Nutの方が分散が大きいのは、人間の締め方の多様性の問題と推測
23
Limitations
• 要改善点
• SDFの衝突スキーム
• 薄い素材でできたボトルや箱の衝突をロバストに処理する機能
• Mesh1つあたりが大きい場合の処理の改善
• Meshひとつごとに一つの接触が生成されるため、平坦で大きい表面の衝突がうまく表現できていない
• Sparse SDF representationを用いたメモリの削減
• Deformable objectsのFEMベースのサポート(コネクタケーブルなど)
24
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

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

  • 1.
    1 DEEP LEARNING JP [DLPapers] http://deeplearning.jp/ Factory: Fast Contact for Robotic Assembly Koki Ishimoto
  • 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.
    概要 3 • Contact-Richなシミュレーションをreal-timeに動かすことに成功した • 高品質なCADファイルとメモリ消費を抑えた接触シミュレーション手法により、A50001枚で 1000個のボルトScrew環境を作成可能にした。 •従来手法に比べて2桁早い • 並列化でシングルスレッドのreal-time計算に比べて3桁の高速化 • AssemblyタスクのBenchmarkを提供した • 4つのpolicyを1-1.5hで学習可能(RTX 3090 1枚)
  • 4.
    関連研究 Contact-rich simulation •従来のcontact-richなタスクを解くsimulatorは、nut-bolt taskのレンダリングにreal-time の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 (ただしタスクが簡 単) 4 https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9341644
  • 5.
    Contact-Rich Simulation Methods •RLタスクなどのために、十分高速に回せるcontact-richなシミュレータの開発 5
  • 6.
    SDF Collisions 6 • SDF:物体の表面を0として外部と内部を正負で表現した関数 • 256^3より大きい解像度のSDFを用意 • 右の画像引用元の手法で物体のcontactの初期情報を計算 • 物体間で最も近い点をSDFの勾配情報から求めていく • M4 (径が4mm) ナットとボルトで16k個のcontactsが生成された • Contact: 物体間に生じるinteraction, 接触力(ベクトル) https://dl.acm.org/doi/pdf/10 .1145/3384538
  • 7.
    Contact Reduction andSolver 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 ContactReduction • 近いmesh同士でnormal vector(contact)を共有 することでcontactを減らす 1: SDF collisionを用いてcontactsの生成 2: 法線の類似度でcontactを統合 3: 割り当てられていないものについては、その中で deepest penetrationなcontactを見つける 4: 3で見つけたcontactに、割り当てられていない contactを統合していく 8
  • 9.
    Implementation of ContactReduction • 削減された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 • 丸 型 ま た は 正 方 形 型 の pegs- and-holes/コネクタ類の差し込 み • FrankaGearsEnv • ギア3つとマウンタ1つの嵌め 込み 13
  • 14.
    Controllers • Robotコントローラ7種類 • IK(inversekinematics) • 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) 16 各SubpolicyのRandomized Initial States
  • 17.
    Subpolicy: Pick andPlace • 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% 22 各SubpolicyのRandomized Initial States
  • 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