見出し画像

NVIDIA Isaac によるヘルスケアロボットの構築

以下の記事が面白かったので、簡単にまとめました。

Building a Healthcare Robot from Simulation to Deployment with NVIDIA Isaac

1. はじめに

シミュレーションは、医療画像分野におけるデータ不足を解消するための重要な基盤となってきました。しかし、医療ロボット分野においては、これまでシミュレーションは処理速度が遅く、システムが分断されていたり、実システムへの応用が困難であったりといった課題がありました。

AI医療ロボット向け開発フレームワークである「NVIDIA Isaac for Healthcare」は、統合されたデータ収集、学習、評価パイプラインを提供することで、これらの課題を解決し、医療ロボット開発者がシミュレーション環境と実機環境の両方でシームレスに開発を進められるようにします。特に、「Isaac for Healthcare v0.4」では、医療機器開発者向けにエンドツーエンドのSO-ARMベースのスターターワークフローと、手術室環境構築チュートリアルを提供しています。このSO-ARMスターターワークフローを利用することで、医療機器開発者はシミュレーションから学習・デプロイまでのワークフロー全体を体験し、実機上で自律型ロボットの構築と検証をすぐに開始できます。

2. SO-ARMスターターワークフロー

「SO-ARMスターターワークフロー」は、手術支援タスクを探求する新しい方法を提供し、開発者向けに自律型手術支援のための完全なエンドツーエンドパイプラインを提供します。

・LeRobotを使用してSO-ARMで実世界データと合成データを収集
・GR00t N1.5をファインチューニングし、IsaacLabで評価後、ハードウェアにデプロイ

このワークフローにより、開発者は手術室に移行する前に、安全で再現性の高い環境で支援スキルを学習および改良できます。

2-1. 技術実装

このワークフローは、シミュレーションと実機ハードウェアを統合する3段階のパイプラインで構成されています。

・データ収集
SO101とLeRobotを使用した、シミュレーションと実世界での遠隔操作デモンストレーションの組み合わせ

・モデルト学習
デュアルカメラビジョンを備えた複合データセットを用いたGR00T N1.5のファインチューニング

・ポリシーデプロイ
RTI DDS通信による物理ハードウェア上でのリアルタイム推論

特筆すべきは、学習に使用されたデータの93%以上がシミュレーションで合成的に生成されたものであり、ロボットデータ不足を解消する上でシミュレーションが非常に有効であることを示しています。

2-2. Sim2Real混合学習アプローチ

このワークフローは、シミュレーションデータと実世界データを組み合わせることで、実世界でのロボット学習はコストが高く制約が多い一方、純粋なシミュレーションでは実世界の複雑さを捉えきれないという根本的な課題に対処します。このアプローチでは、多様なシナリオと環境変動に対応するために約70エピソードのシミュレーションデータを使用し、さらに現実感と実世界への適用性を高めるために10~20エピソードの実世界データを組み合わせています。この混合学習により、どちらか一方のドメインだけでは実現できない汎化性能を持つポリシーが生成されます。

2-3. ハードウェア要件

このワークフローには以下のハードウェアが必要です。

・GPU
GR00TN1.5の推論には、RTコア対応アーキテクチャ(Ampere以降)で30GB以上のVRAMを搭載したGPU

・SO-ARM101フォロワー
デュアルカメラビジョン (手首と部屋) を備えた6自由度高精度マニピュレーター。SO-ARM101には、3Dプリントアダプター付きの手首搭載カメラを含むWOWROBOビジョンコンポーネントが搭載されています。

・SO-ARM101リーダー
エキスパートによるデモンストレーションデータ収集のための6自由度遠隔操作インターフェース

なお、開発者は、シミュレーション、学習、デプロイ (物理AIには3台のコンピュータが必要) のすべてを1台の「DGX Spark」で実行できます。

2-4. データ収集の実装

SO-ARM101ハードウェア、またはLeRobotでサポートされているその他のバージョンを使用して実際のデータを収集するコマンドは、次のとおりです。

python lerobot-record \ 
  --robot.type=so101_follower \ 
  --robot.port=<follower_port_id> \ 
  --robot.cameras="{wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, room: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \ 
  --robot.id=so101_follower_arm \ 
  --teleop.type=so101_leader \ 
  --teleop.port=<leader_port_id> \ 
  --teleop.id=so101_leader_arm \ 
  --dataset.repo_id=<user>/surgical_assistance/surgical_assistance \ 
  --dataset.num_episodes=15 \ 
  --dataset.single_task="Prepare and hand surgical instruments to surgeon"

シミュレーションに基づいたデータ収集するコマンドは、次のとおりです。

# With keyboard teleoperation
python -m simulation.environments.teleoperation_record \ 
  --enable_cameras \ 
  --record \ 
  --dataset_path=/path/to/save/dataset.hdf5 \ 
  --teleop_device=keyboard

# With SO-ARM101 leader arm 
python -m simulation.environments.teleoperation_record \ 
  --port=<your_leader_arm_port_id> \ 
  --enable_cameras \ 
  --record \ 
  --dataset_path=/path/to/save/dataset.hdf5

2-5. シミュレーションによる遠隔操作コントロール

SO-ARM101の実機ハードウェアをお持ちでないユーザー向けに、このワークフローでは、以下の関節制御機能を備えたキーボードベースの遠隔操作を提供します。

・ジョイント1 (肩関節パン):Qキー (+) / Uキー (-)
・ジョイント2 (肩関節リフト):Wキー (+) / Iキー (-)
・ジョイント3 (肘関節屈曲):Eキー (+) / Oキー (-)
・ジョイント4 (手首関節屈曲):Aキー (+) / Jキー (-)
・ジョイント5 (手首関節ロール):Sキー (+) / Kキー (-)
・ジョイント6 (グリッパー):Dキー (+) / Lキー (-)
・Rキー:記録環境をリセット
・Nキー:エピソードを成功としてマーク

2-6. モデル学習パイプライン

シミュレーションデータと実世界データの両方を収集した後、学習用にデータセットを変換および結合します。

# シミュレーションデータをLeRobot形式に変換
python -m training.hdf5_to_lerobot \ 
  --repo_id=surgical_assistance_dataset \ 
  --hdf5_path=/path/to/your/sim_dataset.hdf5 \ 
  --task_description="Autonomous surgical instrument handling and preparation" 

# 混合データセットでGR00T N1.5をファインチューニング
python -m training.gr00t_n1_5.train \ 
  --dataset_path /path/to/your/surgical_assistance_dataset \ 
  --output_dir /path/to/surgical_checkpoints \ 
  --data_config so100_dualcam

学習済みのモデルは、「外科医のためにメスを準備してください」や「鉗子を渡してください」といった自然言語の指示を処理し、対応するロボット動作を実行します。LeRobotの最新リリース (バージョン0.4.0) では、Gr00t N1.5をLeRobot内でネイティブにファインチューニングできるようになります。

3. End-to-Endのシミュレーション

シミュレーションは、データ収集→学習→評価→デプロイ というループの一部として機能するときに最も効果を発揮します。

v0.3では、IsaacLabはこの完全なパイプラインをサポートしています。

3-1. シミュレーションで合成データを生成

・キーボードまたはハードウェアコントローラーを使用してロボットを遠隔操作
・マルチカメラによる観測データ、ロボットの状態、およびアクションをキャプチャ
・実際の環境では安全に収集できないエッジケースを含む多様なデータセットを作成

3-2. ポリシーの学習と評価

・Isaac Labの強化学習フレームワークと緊密に連携し、PPOによる学習をサポート
・並列環境(数千ものシミュレーションを同時に実行)
・組み込みの軌道分析機能と成功指標
・様々なシナリオにおける統計的検証

3-3. モデルをTensorRTに変換

・本番環境へのデプロイメントに向けた自動最適化
・動的な形状とマルチカメラ推論をサポート
・リアルタイムパフォーマンスを検証するためのベンチマークツール

これにより、実験からデプロイメントまでの時間を短縮し、シミュレーションから実環境への移行を日常的な開発プロセスの一部として実現します。

4. はじめる

SO-ARMスターターワークフローを開始する手順は、次のとおりです。

(1) リポジトリをクローン。

git clone https://github.com/isaac-for-healthcare/i4h-workflows.git

(2) ワークフローを選択。
手術支援用のSO-ARMスターターワークフローから始めるか、他のワークフローを試してみてください。

(3) セットアップを実行。
各ワークフローには自動セットアップスクリプトが含まれています。
(例:tools/env_setup_so_arm_starter.sh)

5. リソース

GitHubリポジトリ:完全なワークフロー実装
ドキュメント:セットアップおよび使用ガイド
GR00Tモデル:事前学習済み基盤モデル
ハードウェアガイド:SO-ARM101セットアップ手順
LeRobotリポジトリ:エンドツーエンドのロボティクス学習



いいなと思ったら応援しよう!