Slide 1

Slide 1 text

論文読み勉強会 Robogen 2025.4.10 @natsutan 1

Slide 2

Slide 2 text

2 RoboGen: Towards Unleashing Infinite Data for Automated Robot Learning via Generative Simulation ロボットの自動学習の為に、生成モデルを使って、無限のデータを 生成するために~ https://arxiv.org/abs/2311.01455

Slide 3

Slide 3 text

3 Abstract RobotGenは生成シミュレーションを使って、自動で学習する生成ロボットエージェント。 基盤モデルと生成モデルを使う。 ポリシーや低レベルなアクションではなく、多様化したタスク、シーン、教師情報を自動生成する。 この手法が、ロボットにPropose-generate-learnサイクルを与える。 ・Propose:エージェントが興味深いタスクとスキルを開発する。 ・Generate:アセットを適切に配置して、シミュレーション環境を作る ・Learn:タスクをサブタスクに分割し、最適な学習アプローチを選び、必要な教師情報を作り、スキルを取得するための ポリシーを学ぶ。 エージェント、タスク、シ ーン、ポリシーは強化 学習の用語

Slide 4

Slide 4 text

4 Introduction 1. シミュレーション 実機より早く並列化して、探索(学習)を行える。 リアルに合わせるためには非常に手間がかかる。Sim環境と学習環境(Loss関数とか)。 2.生成シミュレーションの提案(2023年) シミュレーション環境を自動生成する。 Propose-generate-learnサイクル。 ダイナミクス(動力学)、アクチュエーション、物理に関する学習データが無かった。 3.LLM LLMからポリシーや低レベルなアクションを直接出力させる方法があるが、この手法ではそうではない。 LLMからオブジェクトの配置、意味、タスクの知識を取り出し、シミュレーション環境を作る。さらに物理エンジンの補助 を加えることで、ロボットが物理的な相互作用を理解し、多彩なスキルを取得する。 4.結果 Robogenが自動生成するタスクとスキルの多様性は、少しのプロンプトとin-context learning exampleで、人間が作った データセットを超える。 教師ありの正 解データ

Slide 5

Slide 5 text

5 タスクの例 Figure1

Slide 6

Slide 6 text

6 Related Work 1. シミュレーターを使ったロボットのスキルラーニング 2.シミュレーション環境のスケーリング 人間が正解値を作って、強化学習をする。 3.基盤モデル、生成モデル Gensim, Gen2sim, Python code生成 OPTIMUS system. Guided Imitation of Task and Motion Planning

Slide 7

Slide 7 text

7 RoboGen Pipeline

Slide 8

Slide 8 text

8 RoboGen Pipeline

Slide 9

Slide 9 text

9 Task Proposal 初期化: 特定のロボのタイプと、定義済みのpoolからオブジェクトをランダムにサンプリングする。 これらがタスクの提案を生成するためにLLMの入力になる。seed的な扱い。 もう一つは、定義済みのタスクを使って初期化する。 Task: Pick up the hanger and place it on the clothing rack Objects: a cloth hanger, a clothing rack Task: Place the dishes and cutlery on the table in preparation for a meal Objects: a dish plate, a fork, a spoon, a steak knife LLMのバックエンドにはGPT-4を使っている。別のモデルへのUpgradeは可能。

Slide 10

Slide 10 text

10 オブジェクトのデータ PartNetMoblity https://sapien.ucsd.edu/browse RLBench https://github.com/stepjam/RLBench/tree/master https://github.com/stepjam/PyRep/tree/master

Slide 11

Slide 11 text

11 Task Proposal ロボットを選ぶ オブジェクトをランダ ムにサンプリングする オブジェクトの情報をプロンプトに与える。 1.オブジェクトのカテゴリー 2.URDF 3..可動部の情報 (例:電子レンジなら、どのリンクがドアか) LLMの出力 1.タスク名 2.タスクの説明 3. タスクを実行するための追加情報 4.オブジェクトのジョイントや可動の情報

Slide 12

Slide 12 text

12 Task Proposal 電子レンジがオブジェクトとしてサンプルされたときのLLMの出力例 タスク名: heat up a bowl of soup タスクの説明: The robot arm places a bowl of soup inside the microwave, closes the door and sets the microwave timer for an appropriate heating duration(日本語訳:ロボットアームがスープの入ったボウルを電子レンジ内に入れ、ドアを閉め、適切な 加熱時間にタイマーを設定する) 追加情報: A bowl of soup オブジェクトの情報: joint 0 (for opening the microwave door), joint 1 (for setting the timer), link 0 (the door), link 1 (the timer knob)

Slide 13

Slide 13 text

13 RoboGen Pipeline

Slide 14

Slide 14 text

14 Scene Generation LLMが生成したタスクから、対応するシーンを生成する。 4つの情報が必要 ・シーンで使う関連アセット ・アセットの大きさ ・アセットの初期コンフィグレーション ・シーンの初期コンフィグレーション

Slide 15

Slide 15 text

15 Scene Generation シーンで使う関連アセット GPT-4に、オブジェクトの名前や詳細の追加の問い合わせをする。 ・部屋のマット ・テーブルの上の明かり ・本 ・椅子 こでObjaverseを使う。800kを超えるオブジェクト。 https://github.com/allenai/objaverse-xl Gemini-Pro(VLM)で、アセットが適切か確認する。 剛体はこれでうまくいく ソフトロボティクスの場合は、Midjourneyでテキストから画像を生 成、Zero-1-to-3で画像をメッシュにする。 剛体 ソフトロボテ ィクス

Slide 16

Slide 16 text

16 Scene Generation 生成されたシーンの検証 Objaverseから、オブジェクトを取り出した後、Gemini-Pro(Vision-Language-Model)で画像の説明をさせる。 そのCaptionと、Taskの情報をGPT-4に入力し、オブジェクトがふさわしいかどうか判断する。 Gemini-Pro VLM GPT-4 Task Proposal Caption クラシックな装飾が施された木製の背もたれ付き椅子。 背面には複雑な彫刻があり、座面は緑色のクッション で覆われている。高級感のあるアンティーク調のデザ イン。

Slide 17

Slide 17 text

17 Scene Generation ソフトロボティクス用のMeshモデルの作り方 MidJourneyに「背景を白にして、正面もしくは上からの画像」というプ ロンプトを与える。四枚生成されるのでランダムに一枚を選ぶ。 生成された画像をZero-1-to-3にいれて、3Dオブジェクトにする。 それをさらにDMTNetを使って形を良くする DMTNet https://research.nvidia.com/labs/toronto-ai/DMTet/ 変換例

Slide 18

Slide 18 text

18 Scene Generation アセットのサイズ: 実物に近いサイズであるか、タスクが実行可能かをGPT-4に確認する。 例:おもちゃを箱に入れるなら、箱よりおもちゃが小さくないと駄目 アセットの初期コンフィグレーション: GPT-4にタスクが実行可能な状態か初期値を確認。 例:ドアを開けるタスクであれば、初期状態はドアが閉まっている必要がある。 シーンの初期配置: GPT-4にTask Proposalに基づいた空間的な配置を問い合わせる。 例:おもちゃを箱の中に入れるなら、おもちゃは箱の外にないと駄目

Slide 19

Slide 19 text

19 RoboGen Pipeline

Slide 20

Slide 20 text

20 Training Supervision Generation 学習を上手く進めるために、RoboGenは最初にGPT-4に計画とそれを分割したサブタスクに分割するように問い合わせる。そ の次に、そのサブタスクを解くためのアルゴリズムをGPT-4に問い合わせる。 アルゴリズムは3つ ・強化学習:接触の多いタスク(歩行やオーブンのつまみを回す)に有効 ・勾配ベースの軌道最適化:ソフトボディの精密動作 ・アクションプリミティブ+モーションプランニング 障害物が無いときの軌道生成 グリッパーでなく、吸着で把持操作を簡略化している。 対象物の1点をランダムにサンプリングし、法線ベクトルを得る。モーションプランニングで法線アプローチを行い、ターゲ ットに接触するまでEEを進める。法線方向に30mm上までハンドが到着したらgripperでワークをつかむ。 強化学習については、GPT-4に報酬関数を作成させる。 剛体の操作や移動は、low-level-stateに基づいてシミュレーターAPIで報酬関数を取得する ソフトボディに関しては、GPT-4で目標形状のテキストを作り、それをtext-to-3Dモデルで目標のメッシュを作る。現状の形 状と目標形状のパーティクル間の距離を報酬関数として使用する。

Slide 21

Slide 21 text

21 Training Supervision Generation 強化学習の詳細 アルゴリズムはSAC(Soft Actor-Critic) 使うアクションは6次元 ・x,y,z 移動の目標位置か変位(Δx, Δy, Δz)は、 GPT-4は適切な方を提案する。 ・rx,ry,yz ハンドの回転 軌道はOMPLで生成する。 (Genesis勉強会を思い出してください) Actor-Critic ①Actorが方策を使って実行する。 ②Criticが環境を観測して、状態と報酬 を取得 ③Actorがその状態と報酬から方策を 更新 ソフトロボットの時は、Adam for gradient-based trajectory optimizationを使う。

Slide 22

Slide 22 text

22 RoboGen Pipeline

Slide 23

Slide 23 text

23 Skill Learning これらの情報を使ってシミュレーション環境を構築する。 ⾧いタスク(long-horizon tasks)は、各サブタスクを8回シミュレーションして一番高い報酬を得た状態を次のサブタス クの初期状態として使う。 Long Horizon Tasks subtas1 k subtask 2 subtask n ・・・ 始めのサブタスクを 8回実行する。一番 報酬が高い状態を次 のサブタスクへ渡す。 x8 x8

Slide 24

Slide 24 text

24 Skill Learning 設計の選択について ・特定のバックエンド(LLM)に依存せず、差しかえ可能にしている ・人間が設計した品質的に優れた3次元のアセットよりも、ネット上にある大量の2次元画像を有効利用出来る。 ・アセットに関しては、意図的に探索と生成の両方をサポートしている フェーズの切れ目を人力でも出来るように設計 されてる。これで作業分担が可能になる。 例:設定済みのタスク プロンプトに出力のテンプレー トを指定している。そのテンプ レートに沿って、人間が中身を 書けばここだけ検証できる。

Slide 25

Slide 25 text

25 LLMのプロンプト例 後ろには実際に使われたプロンプトが大量にあるので気になる人は参考にしてください A robotic arm is trying to manipulate some objects to learn corresponding skills in a simulator. However, the size of the objects might be wrong. Your task is to adjust the size of the objects, such that they match each other when interact with each other; and the size should also match what is commonly seen in everyday life, in household scenarios. Now I will give you the name of the task, the object and their sizes, please correct any unreasonable sizes. Objects are represented using a mesh file, you can think of size as the longest dimension of the object. I will write in the following format: ‘‘‘ Task: task description obj1, mesh, size obj2, mesh, size ‘‘‘ Please reply in the following format: explanations of why some size is not reasonable. ‘‘‘yaml obj1, mesh, corrected_size obj2, mesh, corrected_radius ‘‘‘ Here is an example: Input: ‘‘‘ Task: The robotic arm lowers the toilet seat from an up position to a down position Toilet, mesh, 0.2 ‘‘‘ Output: A toilet is usually 0.6 - 0.8m in its back height, so the size is not reasonable -- it is a bit too small. Below is the corrected size. ‘‘‘yaml Toilet, mesh, 0.7 ‘‘‘

Slide 26

Slide 26 text

26 さいごに ご静聴有り難うございました