FabForward · Cobot Studio
同じレシピ・3タスク

同じFR5、同じ学習レシピで、難易度の異なる3つのピックを習得。

静止ワークのピックから、3クラス仕分け、そして本命:ベルトを流れてくる丸ワークを動きながら掴む「コンベア追従」まで — すべて同一の実証済み強化学習レシピで。

3
難易度の異なるピックタスク — モード1(ピック)は86.8%・本番稼働中、モード2(仕分け)、モード3(コンベア追従=御社の本命)。
86.8%
モード1 ピック(達成・稼働中)
89.9%
モード2 仕分け 成功率
92.6% (Isaac)
モード3 コンベア追従 成功率
100 mm/s
ベルト速度(追従対象)

構築したもの1つのレシピで、3つの段階的に難しいタスク

私たちは、FR5アームが自ら掴んで置くことを学習するシステムを構築しました — リアルな物理シミュレーション内で数千回練習し、成功するたびに報酬を得ます。最初の静止ピックで86.8%(目標85%以上)を達成し本番稼働中。同じ学習レシピを、より難しい2つのタスク — 3クラス仕分けと、御社が本当に求めているコンベア上の動くワークの追従把持 — へ拡張しています。アルゴリズムを作り直すのではなく、同じ実証済みレシピを難しい環境に適用するのが要点です。

🎯

学習するロボット

従来は人がすべての動作を手で教示します。FR5は報酬と罰によって、検出した物体を掴み正しく置くことを自ら学習 — 1台のGPUで訓練し、実機を駆動するために書き出します。

🧠

1つの勝ちレシピ

手書きエキスパートを模倣し、強化学習で教師を超え、ドメインランダム化で実機に頑健化。同じレシピがピック・仕分け・コンベアの3つすべてに適用されます。

🌐

動作する場所

訓練済みポリシーは公開ブラウザデモで今まさにライブ動作中。デモのシナリオ切替でピック / 仕分け / コンベアを選んで見られます。

3つのモード同じロボット、段階的に難しくなるピック

下記はすべて同じFR5・同じ学習レシピ。違いはタスクの難しさだけです。モード3が御社の本命(流れてくる丸ワークの追従把持)です。

モード1 ・ ピック(静止)

静止ワークを掴んで置く

86.8%
Isaacシミュレーション成功率
基準タスク。静止した1個の丸ワーク → ビン。すでに目標の85%以上を達成し、公開デモで本番稼働中。以降の2タスクはこのレシピをそのまま流用します。
✓ 達成・ライブ稼働中
モード2 ・ 仕分け(3クラス)

クラス別に色付きビンへ振り分け

89.9%
正解仕分け成功率
ランダムなクラス{0,1,2}の1個 → 対応する色のビン。クラスラベル(マルチクラスのカメラ/YOLOが供給する情報)でルーティングします。観測は34次元(ピックの29次元 + クラスone-hot 3次元 + 位相認識2次元)。
◐ シミュレーションで構築済み
モード3 ・ コンベア追従

動くワークを掴む(御社の本命)

92.6% (Isaac)
追従把持の成功率
コイン大の丸ワークがベルトを100 mm/sで流れてきます。ロボットは既知のベルト速度を使って動きを「先読み」し、移動中に把持して(速度補正で追従)、ビンへ置きます。2次元ピッキングの本命タスク。
◐ シミュレーション環境を構築・訓練中

なぜコンベア追従が難しいのか動く標的・狭い把持の窓・先読み

静止ピックと違い、コンベア追従は動く標的を相手にします。ワークは止まってくれません。だからこそ「速度補正で追従」が必要です。

🎯

標的が動き続ける

ワークは100 mm/sで流れ続けます。把持点は固定されておらず、ロボットが手を伸ばしている間にも移動します。静止ピックの「その場に降りて掴む」は通用しません。

⏱️

把持の窓が狭い

ワークが手の届く範囲に居る時間は限られています。早すぎても遅すぎても掴めず、ベルトの端を通り過ぎると「ミス」として失敗になります。タイミングが厳しい。

🧭

「先読み」が必要

ロボットは現在地ではなく、ワークがこれから来る位置へ手を運ばなければなりません。既知のベルト速度を観測に加えることで、ポリシーは標的を「リード(先回り)」して速度を合わせた把持を学習します。

→ 100 mm/s 流入 把持の窓(届く範囲) TCPが先回りして降下 ミス(流出)
丸ワークはベルト上流から流入し、把持の窓を通過。ロボットは既知のベルト速度で先回りして降下・把持。掴み損ねて窓を過ぎると「ミス」終了。
技術詳細 — コンベア環境の構成

コンベア環境(fr5_conveyor_env_cfg.py)はM1ピック環境をそのまま継承し、動く要素だけを足したものです。ベルトはベース座標でx=-0.42を中心に、ワークは-Y方向に100 mm/sで運ばれる運動学的キャリア(ConveyorGripperGraspAction)。ワークは上流端y=+0.16から流入し、M1の到達実証済み窓(y∈[-0.12,+0.12])を通過、y=-0.16を未把持で過ぎるとobject_missed終了(missed_penalty)。

観測は34次元 = M1の29次元 + 既知ベルト速度3次元belt_velocity_b)+ 位相認識2次元(把持状態 is_grasped + 残りホライズン)。既知速度信号でポリシーは標的を「リード」できます(速度補正による先回り把持)。位相認識の観測は「接近中」と「運搬中」を区別させ、運搬中の取りこぼし(落下)を解消する鍵でした。把持(運動学的アタッチ)・Δq行動・farm-proof報酬スタック・FR5実測ダイナミクス・DRカリキュラムはすべてM1から逐語的に再利用。ビンはM1のビン(-0.45,+0.30)です。

しくみ訓練パイプライン — 平易な言葉で

教師を観る(手書きエキスパート)

手書きの「エキスパート」スクリプトがタスクを実演します。コンベアでは、既知のベルト速度を使って動くワークへ先回りする状態機械です。ロボットはまずそれを模倣(行動クローニング)して基本動作を学びます。

練習して改善(PPO強化学習)

次にIsaac Sim内で、民生用RTX 3060 GPU 1台を使い数千の並列環境で練習し、タスク達成で報酬を得て、教師よりうまくできるよう学習します。

ONNXに書き出す

学習した「スキル」を小さな標準ファイル(ONNX、約193KB)に書き出します。これが製品です — ブラウザデモも実機も同じONNXを動かします。

ブラウザデモでライブ実行

書き出したポリシーは公開ブラウザデモで今まさにライブ動作中。インストール不要、どのブラウザでも。明日は同じONNXが実機FR5を動かします。

勝ちレシピ(3つの要点・平易に)

模倣アンカー(諦め防止)

強い恒久的な「行動クローニング・アンカー」が、訓練が崩壊して「諦めて」しまうのを防ぎます。過去の試みを退けてきた破滅的崩壊の解決策です。

📈

Reverse-KLアンカー(教師超え)

教師の安全な範囲に留めつつ、教師を超えて改善することを許します。模倣の天井を突破し、ピックを83% → 86.8%へ押し上げた要因です。

🎲

DRカリキュラム(実機頑健化)

シミュレートしたモータ物理を±20%ランダム化 — ただし確実にタスクをこなせるようになった後でのみ。これがsim-to-real(実機移行)の頑健性を生みます。

技術詳細 — アルゴリズム

訓練はNVIDIA Isaac Lab(v2.3.2)でのPPO。ウォームスタートはスクリプト化エキスパートに対する行動クローニング。完全かつ恒久的なBCアンカー--bc_floor 5.0 --bc_weight 5.0)が破滅的崩壊を排除します。鍵は、BC-MSE模倣損失をReverse-KLアンカーtrain.py --anchor reverse_kl)に置き換えたこと:reverse-KLはモード探索的なので、ポリシーは教師の良いモードに集中しつつデモを超える自由を持ちます。頑健性は成功ゲート付きDRカリキュラムevents_dr.py)から:アクチュエータ剛性/減衰のランダム化(±20%)は成功EMAが0.5を超えるまで無効で、その後ランプインします。コンベア環境はM1ピックを継承し、観測に既知ベルト速度3次元+位相認識2次元(把持状態・残りホライズン)を追加した34次元、新たなobject_missed終了を持ちます。85%超えを決めた3つのレシピ:① 位相認識の観測(接近↔運搬の混同を解消=落下の主因を除去。BCクローンを12→76%/29→78%へ)、② オフセット補正のエキスパート(運搬中のワークが正しくビン中心へ落ちるよう補正=コンベアエキスパート84.8→92.2%)、③ デモ件数の拡大(400→2000〜2400エピソード)。これらで強いクローンを作った上でreverse-KL+DRが教師を超え、コンベア92.6%/仕分け89.9%(誤仕分け0)を達成しました。評価は並列エピソードで決定論的に行います。

動作を見るブラウザでシナリオを切り替える

公開デモの「RL Demo(policy in browser)」パネルにはシナリオ選択があり、ピック / 仕分け / コンベアを切り替えて、それぞれの訓練済みニューラルポリシーがシミュレートされたFR5をリアルタイムで駆動する様子を見られます — インストール不要、どのブラウザでも。

ブラウザ内のFR5 RLピックデモ
「ピック」シナリオ — ニューラルポリシーがブラウザ内のFR5を駆動。
FR5 RL 3クラス仕分けデモ
「仕分け」シナリオ — 同じ手法を3クラス仕分けへ拡張。

📺 ブラウザの見え方について(揺れ/なめらかさ)

コンベアシナリオは、Isaac Sim上での実際のロボット軌道をそのまま再生しています — 物理シミュレーションを通った本物の動きなので、なめらかに動作中ピックします(92.6%ポリシーの実挙動)。

一方ピック/仕分けはブラウザ内の簡易キネマティクスでその場に再シミュレーションしているため、アームがわずかに小刻みに揺れることがあります。これは「不具合」ではなく表示上の現象です:強化学習ポリシーは50Hzで毎ステップごくわずかに異なる角度指令(Δθ)を出力し(PPO特有の性質)、キネマティクス表示はそれをほぼ即時に反映するためです。

Isaac Sim と実機ではなめらかに見えます。実際のモータはPD制御+アームの慣性・減衰を通して動くため、高周波の指令揺れは物理的にローパス(平滑化)されます。実機FAIRINOコントローラはさらに関節目標を補間し、機械的な慣性・摩擦が揺れを吸収します。ポリシー自体は同一で、揺れは「慣性のないプレビュー」特有の見え方です。(ブラウザ側にも表示専用の平滑化を適用しています。)

▶ ライブデモを開く(RL Demoパネル → シナリオ選択)

エンジニアリングの厳密さ残したもの — そして捨てたもの

研究の推奨事項を意図的に現実に照らして検証し、通用しなかったものは捨てました。この厳密さこそが価値です — 最終的な数字が信頼できる理由です。同じ厳密さでコンベア追従にも臨みます。

✓ 通用した — 採用
  • 強力な恒久模倣アンカー → 破滅的な訓練崩壊を排除(私たち自身の発見)。
  • Reverse-KLアンカー → 模倣の天井を突破;85%以上の実現要因。
  • 段階的ドメインランダム化カリキュラム → 安定性に加え実世界での頑健性。
  • 自作のデバッグ用ハーネス(自動崩壊検出、30秒のプリフライトチェック、即時の実行サマリ) → 手探りの試行錯誤ループを高速なものに変えました。
✕ 検証して却下 — データ付きで
  • ステップ毎の配置報酬ボーナス/ペナルティ(研究の推奨) → 報酬「ファーミング」による訓練崩壊を招きました。メカニズムを診断し差し戻し。
  • より長い価値推定窓num_steps=200、研究の推奨) → 結果が悪化(74% 対 83%);価値推定はそもそもボトルネックではありませんでした。差し戻し。

正直なスコープ役割分担 — 誇張しないために

🧠 Isaac Sim が物理とRLを担う

NVIDIA Isaac SimがGPU上で数千体のロボットを並列に動かし、強化学習でポリシーを訓練します。学習はすべてここ(シミュレーション内)で行われます。

🤖 実機はFAIRINO SDKが駆動

実機FR5はFAIRINO Python SDKが駆動します。robot-guideは教示・検証・書き出し・QAを担います。実機RLは実機到着まではシミュレーションのみ(約1か月)

👁️ カメラ/YOLOが物体姿勢とクラスを供給

これらは状態ベースのポリシーです — 画素を直接見るのではなく、カメラ/YOLOが検出した物体の姿勢とクラスを観測として受け取ります。コンベアでは既知のベルト速度も観測に含みます。

正直なスコープ。 シミュレーションが物理とRLを行い、実機FR5+カメラは次フェーズです。残る作業はアルゴリズムのリスクではなく、ハードウェア統合です。コンベア追従の数字(92.6% (Isaac))はIsaacシミュレーションでの値であり、手書きエキスパート単体の成功率は92.2%です。

重要な正直さのポイント — 2つのポリシー

実機用ポリシー(ピック)
86.8%

高フィデリティシミュレーションで。完全なドメインランダム化で訓練 → 実モータダイナミクスに頑健。これがマイルストーンであり、実機FR5用のポリシーです。

デモ調整ポリシー
74%

簡略化したブラウザシミュレーションで。より滑らかな公開デモが望まれた場合の即時ロールバックとして保持。

ブラウザデモは実機には無い簡略化された瞬間移動の物理を使います。非現実的なブラウザシミュレーションで最良に見せようとすると実機では悪化するため、86.8%のポリシーは実機への正しいトレードオフを優先しています。同じ原則をコンベア追従にも適用します。

想定Q&A取締役会・顧客が問うであろうこと

3つのタスクは別々のAIなのか?
タスクごとに別のポリシー(ONNX)ですが、訓練レシピは完全に同一です。ピックで実証したレシピ(模倣アンカー + Reverse-KL + DRカリキュラム)を、観測と報酬を少し足して仕分け・コンベアにそのまま適用します。アルゴリズムを作り直すのではありません。
コンベア追従はなぜ難しいのか?
標的が動き続けるからです。ワークは100 mm/sで流れ、把持できる時間の窓が狭い。ロボットは現在地ではなくワークがこれから来る位置へ手を運ぶ「先読み」を、既知のベルト速度を使って学習する必要があります。掴み損ねて窓を過ぎると「ミス」になります。
コンベア追従は本当に動くのか?
コンベア環境(fr5_conveyor_env_cfg.py)はM1ピック環境を継承して構築済みで、シミュレーションで訓練中です。現在の成功率は 92.6% (Isaac)(手書きエキスパート単体は 92.2%)。これはIsaacシミュレーションの値で、実機検証は次フェーズです。
実機の準備はできているか?
そのために構築・検証済み(ドメインランダム化、コントローラ実測ダイナミクス、ファームウェア再生テスト済み)ですが、実機でのRLはアーム到着まではシミュレーションのみ(約1か月)。残るリスクはアルゴリズムではなく統合です。
費用はどれくらい?
民生用RTX 3060 GPU 1台、各実験は約25分;専用ハードウェア不要。費用の大半はエンジニアリングの厳密さ — 通用しなかった手法の検証と却下です。
今日、顧客に見せられるか?
はい — 公開URLの「RL Demo」パネルでシナリオ(ピック / 仕分け / コンベア)を切り替え、どのブラウザでもライブポリシーを動かせます。インストール不要です。

次のステップシミュレーションから実機へ

  • コンベア追従(M3)を仕上げる: 御社の本命。同じ勝ちレシピで成功率を引き上げ、ブラウザデモで公開。
  • 仕分け(M2)を引き上げる: ルーティングは完璧(誤仕分け0);配置精度をピックと同じ再訓練で改善。
  • ハードウェア立ち上げ: 訓練済みポリシーを実機FR5にデプロイし、実リアリティギャップを測定、ファインチューニング。実機+カメラ+ハンドは約1か月で手配。
  • ループ内ビジョン: カメラ → YOLO(物体姿勢+クラス) → ベース座標系を実機の観測に配線し、知覚 → RL ループを閉じます。