Upgrade to Pro — share decks privately, control downloads, hide ads and more …

論文読み勉強会 RoboGen

Avatar for Minoru Natsutani Minoru Natsutani
April 07, 2025
150

 論文読み勉強会 RoboGen

RoboGen: Towards Unleashing Infinite Data for Automated Robot Learning via Generative Simulation
の社内勉強か資料です。

Avatar for Minoru Natsutani

Minoru Natsutani

April 07, 2025
Tweet

Transcript

  1. 2 RoboGen: Towards Unleashing Infinite Data for Automated Robot Learning

    via Generative Simulation ロボットの自動学習の為に、生成モデルを使って、無限のデータを 生成するために~ https://arxiv.org/abs/2311.01455
  2. 4 Introduction 1. シミュレーション 実機より早く並列化して、探索(学習)を行える。 リアルに合わせるためには非常に手間がかかる。Sim環境と学習環境(Loss関数とか)。 2.生成シミュレーションの提案(2023年) シミュレーション環境を自動生成する。 Propose-generate-learnサイクル。 ダイナミクス(動力学)、アクチュエーション、物理に関する学習データが無かった。

    3.LLM LLMからポリシーや低レベルなアクションを直接出力させる方法があるが、この手法ではそうではない。 LLMからオブジェクトの配置、意味、タスクの知識を取り出し、シミュレーション環境を作る。さらに物理エンジンの補助 を加えることで、ロボットが物理的な相互作用を理解し、多彩なスキルを取得する。 4.結果 Robogenが自動生成するタスクとスキルの多様性は、少しのプロンプトとin-context learning exampleで、人間が作った データセットを超える。 教師ありの正 解データ
  3. 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は可能。
  4. 11 Task Proposal ロボットを選ぶ オブジェクトをランダ ムにサンプリングする オブジェクトの情報をプロンプトに与える。 1.オブジェクトのカテゴリー 2.URDF 3..可動部の情報

    (例:電子レンジなら、どのリンクがドアか) LLMの出力 1.タスク名 2.タスクの説明 3. タスクを実行するための追加情報 4.オブジェクトのジョイントや可動の情報
  5. 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)
  6. 15 Scene Generation シーンで使う関連アセット GPT-4に、オブジェクトの名前や詳細の追加の問い合わせをする。 ・部屋のマット ・テーブルの上の明かり ・本 ・椅子 こでObjaverseを使う。800kを超えるオブジェクト。

    https://github.com/allenai/objaverse-xl Gemini-Pro(VLM)で、アセットが適切か確認する。 剛体はこれでうまくいく ソフトロボティクスの場合は、Midjourneyでテキストから画像を生 成、Zero-1-to-3で画像をメッシュにする。 剛体 ソフトロボテ ィクス
  7. 16 Scene Generation 生成されたシーンの検証 Objaverseから、オブジェクトを取り出した後、Gemini-Pro(Vision-Language-Model)で画像の説明をさせる。 そのCaptionと、Taskの情報をGPT-4に入力し、オブジェクトがふさわしいかどうか判断する。 Gemini-Pro VLM GPT-4 Task

    Proposal Caption クラシックな装飾が施された木製の背もたれ付き椅子。 背面には複雑な彫刻があり、座面は緑色のクッション で覆われている。高級感のあるアンティーク調のデザ イン。
  8. 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モデルで目標のメッシュを作る。現状の形 状と目標形状のパーティクル間の距離を報酬関数として使用する。
  9. 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を使う。
  10. 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 ‘‘‘