Skip to content
Published on

ロボティクス開発 ROS 2 2026 — Nav2 / MoveIt / Gazebo / Isaac Sim / MuJoCo / LeRobot / GR00T 徹底ガイド

Authors

プロローグ — ロボティクスの「ChatGPTモーメント」は本物だった

2022年11月にChatGPTが世に出たとき、多くのロボティクス研究者が同じ問いを口にした。「私たちのChatGPTモーメントはいつ来るのか?」 LLMがテキストでやったことをロボットが物理世界でやるには、データ・シミュレーション・ハードウェア・モデルの4軸が揃う必要があった。

2026年5月現在、その整合がほぼ完了している。

  • データ — Hugging Face LeRobotデータセットハブが2024年10月にオープンし、1年半で数千のロボットデータセットが集まった。Open X-Embodimentコンソーシアムは22のロボットプラットフォーム、527スキル、100万件以上の軌跡を収集した。
  • シミュレーション — NVIDIA Isaac Sim 5.0がOmniverse上でGPU加速の物理・レンダリングを提供し、MuJoCoがGoogle DeepMind買収後に完全オープンソース化され、Gazebo HarmonicがClassicの後を継いだ。
  • ハードウェア — Tesla Optimus・Figure 02・1X NEO Beta・Unitree G1・Apptronik Apollo・Sanctuary Phoenixといったヒューマノイドが1~2万ドル帯で量産を始めた。
  • モデル — Google RT-2(2023)、OpenVLA(2024)、Physical Intelligence π0(2024)、NVIDIA GR00T N1(2025)が次々に登場し、VLA(Vision-Language-Action)モデルという新カテゴリが定着した。

そしてその上に ROS 2 が乗る。ROS 1は2025年5月にNoeticがEOLを迎えて事実上死に、ROS 2 Jazzy Jalisco(2024.05)、Kilted Kaiju(2025.05)、Lyrical Luth(2026.05予定)が年次LTSのリズムを確立した。

本稿は2026年5月時点のロボティクス開発スタックを — ROS 2からNav2・MoveIt 2・Gazebo・Isaac Sim・MuJoCo・LeRobot・GR00T・VLA・Foxgloveまで — 一息で整理する。


1章 · 2026年ロボティクスの地図 — ヒューマノイド・ブームとLLM+ロボット

まず全体像。2026年のロボティクスには4つの大きな潮流が同時に流れている。

1.1 ヒューマノイド・ブーム

2024〜2025年が「デモの年」だったとすれば、2026年は「量産の年」だ。

  • Tesla Optimus — 2025年末ベータ出荷、2026年Q3に外部販売開始を目標。自社FSDチップで動作。
  • Figure 02 — OpenAIと協業し、BMWスパルタンバーグ工場に100台配備。
  • 1X NEO Beta — 2024年発表、2026年に家庭向け出荷を開始。価格約2万ドル。
  • Boston Dynamics Atlas (Electric) — 2024年4月に油圧式Atlas引退、電動式Atlas登場。現代自動車に買収され、Hyundai Motor Groupのデータ・組立ラインで学習。
  • Unitree G1 — 中国Unitree、1.6万ドル。オープンAPIを提供。
  • Apptronik Apollo — Mercedes-Benz工場に配備。
  • Sanctuary Phoenix — カナダ、産業用ヒューマノイド第7世代。

1.2 シミュレーション優先学習(Sim-to-Real)

ヒューマノイドの最大の問題は データ不足 だ。人間が一生で見聞きするデータはペタバイト級だが、ヒューマノイドが集めたデータはテラバイト級にとどまる。そこで登場したのが シミュレーション優先学習 である。

NVIDIAのスローガンは「3 Computers」 — 学習コンピュータ(DGX)、シミュレーションコンピュータ(Omniverse/Isaac Sim)、実行コンピュータ(Jetson Thor)。Isaac Simで毎秒数千の並列環境を回し、強化学習で方策を学習し、その方策を実機に移す(sim-to-real)。

1.3 VLA — ロボットのGPTモーメント

2023年7月のGoogle DeepMind発表 RT-2(Robotic Transformer 2) が最初のシグナルだった。VLM(PaLI-X)を持ってきてアクション・トークンを出力するように微調整したところ、「絶滅した動物を拾え」のような自然言語命令に対し、未知のオブジェクトでも汎化した。

2024年6月にはスタンフォードの OpenVLA(7B) がオープンソースで登場し、2024年10月にはPhysical Intelligenceが π0(パイ・ゼロ) — Flow Matching ベースの7B VLA — を発表して、衣類を畳む・食器を洗うといった器用さ(dexterity)のデモを見せた。NVIDIAの GR00T N1(2025) はヒューマノイド専用に学習された17Bモデルである。

1.4 データの民主化 — Hugging Face LeRobot

2024年10月にHugging Faceが LeRobot を発表し、ロボティクスMLがChatGPT以前のNLPのような「秘密の花園」からGitHub水準まで開かれた。事前学習モデル、データセット、チュートリアル、SO-100/SO-101のような200ドル台の学習用ロボットアーム・キットまで一括で提供する。

2026 ロボティクス 4スタック

[ モデル層 ]   RT-2 / OpenVLA / π0 / GR00T N1 / Helix
                       |
[ 学習層   ]   LeRobot / Open X-Embodiment / RoboHive
                       |
[ シム層   ]   Isaac Sim 5.0 / MuJoCo / Gazebo Harmonic / Webots
                       |
[ ミドル層 ]   ROS 2 Jazzy/Kilted/Lyrical + Nav2 + MoveIt 2
                       |
[ ハード層 ]   Optimus / Figure / 1X / Atlas / G1 / Apollo / Phoenix
                       |
[ 可視化   ]   Foxglove Studio / RViz2 / PlotJuggler

各層を順にみていく。


2章 · ROS 2 Jazzy → Kilted → Lyrical — 1年に一度のLTS

2.1 ROS 1からROS 2へ — なぜ移ったか

ROS 1は2007年にWillow Garageで始まり、学術・研究の事実上の標準となった。しかし限界があった。

  • シングル・マスター(roscore)依存 — マスターが死ぬとすべてのノードが切れる。
  • リアルタイム性不足 — ロボティクス制御にはミリ秒級の決定性が必要だが、ROS 1は保証しなかった。
  • セキュリティ欠如 — 誰でも任意のトピックをpublish/subscribeできた。
  • Windows・組み込みサポートの薄さ

ROS 2はこれを最初から再設計した。

  • DDS(Data Distribution Service) をミドルウェアに採用 — 産業用通信標準、マスター不要。
  • QoS(Quality of Service) ポリシー — Reliability、Durability、Historyなど細かな制御。
  • DDS-Security — 認証、暗号化、アクセス制御。
  • rclcpp/rclpy — C++17 と Python 3 ベース。

2025年5月にROS 1 NoeticがEOLを迎え、ROS 1時代は公式に終わった。

2.2 ROS 2 LTSケイデンス — メーデー・リリース

ROS 2は毎年5月(Ubuntu LTSリリース直後)に新ディストリビューションを出す。偶数年は5年LTS、奇数年は2年非LTSだ。

コードネームリリースEOLUbuntu備考
Foxy Fitzroy2020.062023.0622.04最初のLTS
Galactic Geochelone2021.052022.1220.04非LTS
Humble Hawksbill2022.052027.0522.04LTS、最も普及
Iron Irwini2023.052024.1222.04非LTS
Jazzy Jalisco2024.052029.0524.04LTS
Kilted Kaiju2025.052026.1224.04非LTS
Lyrical Luth2026.052031.0526.04(予想)LTS、まもなく

2026年5月現在は Jazzy(本番)Kilted(最新) が主力で、Lyrical Luthがまもなく登場する。新規プロジェクトはJazzyから始めるのが無難だ。

2.3 ROS 2のコア概念 — 5分の復習

# Python rclpy ノードの例
import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class HelloPublisher(Node):
    def __init__(self):
        super().__init__('hello_publisher')
        self.publisher = self.create_publisher(String, 'greetings', 10)
        self.timer = self.create_timer(1.0, self.tick)

    def tick(self):
        msg = String()
        msg.data = 'Hello, ROS 2 Jazzy'
        self.publisher.publish(msg)
        self.get_logger().info(f'Published: {msg.data}')

def main():
    rclpy.init()
    node = HelloPublisher()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

通信パターンは4つ。

  1. Topic — pub/sub、非同期ストリーム(センサデータ、画像)。
  2. Service — 同期RPC、短い要求/応答(パラメータ取得)。
  3. Action — 長時間処理、フィードバック・キャンセル可(ナビゲーション、ピックアップ)。
  4. Parameter — ノード設定、ランタイム変更可能。

2.4 ビルドシステム — colcon

ROS 2のビルドは colcon。ワークスペースの典型パターン。

# ワークスペース作成
mkdir -p ros2_ws/src
cd ros2_ws

# src にパッケージをクローン
cd src
git clone https://github.com/ros-planning/navigation2.git -b jazzy
cd ..

# 依存解決
rosdep install --from-paths src --ignore-src -r -y

# ビルド(並列、symlinkで開発反復を高速化)
colcon build --symlink-install --parallel-workers $(nproc)

# 環境ソース
source install/setup.bash

2.5 変更点 — Jazzy → Kilted → Lyrical 移行ノート

Jazzy以降の主な変化。

  • Iceoryx2ミドルウェア — Eclipse Iceoryx2がstable。共有メモリでマイクロ秒級のIPC。
  • Zenoh RMW — Eclipse ZenohがROS 2の正式ミドルウェアに採用。マルチロボット・クラウドゲートウェイに強い。
  • rcl_logging改善 — 構造化ログ、JSON出力。
  • Python 3.12 デフォルト
  • Gazebo Sim統合ros_gz パッケージが1.0に。

3章 · Nav2 (Steve Macenski) — ナビゲーションスタック

3.1 Nav2とは

Nav2(Navigation 2) はROS 1の move_base をROS 2向けに再設計したナビゲーションスタックだ。Samsung Research America出身の Steve Macenski がメンテナで、現在はOpen Navigation LLCを通じてコンサルティングを行う。

Nav2は次を一括で提供する。

  • グローバルプランナ — 出発→ゴール経路(Navfn、SmacPlanner、ThetaStar)。
  • ローカルプランナ(コントローラ) — 経路追従、障害物回避(DWB、RPP、MPPI)。
  • Recovery Behaviors — 詰まったときの後退・回転。
  • BT Navigator — Behavior Treeで全体フローを制御。
  • Costmap 2D — グローバル・ローカルのコストマップ。
  • Lifecycleノード — configure/activate/deactivate ステートマシン。

3.2 Behavior Treeでナビゲーションを定義

Nav2の最大の特徴は Behavior Tree(BT)。ナビ全体のフローをXMLで定義する。

<!-- navigate_to_pose_w_replanning_and_recovery.xml -->
<root main_tree_to_execute="MainTree">
  <BehaviorTree ID="MainTree">
    <RecoveryNode number_of_retries="6" name="NavigateRecovery">
      <PipelineSequence name="NavigateWithReplanning">
        <RateController hz="1.0">
          <RecoveryNode number_of_retries="1" name="ComputePathToPose">
            <ComputePathToPose goal="{goal}" path="{path}" planner_id="GridBased"/>
            <ReactiveFallback name="ComputePathToPoseRecoveryFallback">
              <GoalUpdated/>
              <ClearEntireCostmap name="ClearGlobalCostmap-Context" service_name="global_costmap/clear_entirely_global_costmap"/>
            </ReactiveFallback>
          </RecoveryNode>
        </RateController>
        <RecoveryNode number_of_retries="1" name="FollowPath">
          <FollowPath path="{path}" controller_id="FollowPath"/>
          <ReactiveFallback name="FollowPathRecoveryFallback">
            <GoalUpdated/>
            <ClearEntireCostmap name="ClearLocalCostmap-Context" service_name="local_costmap/clear_entirely_local_costmap"/>
          </ReactiveFallback>
        </RecoveryNode>
      </PipelineSequence>
      <ReactiveFallback name="RecoveryFallback">
        <GoalUpdated/>
        <RoundRobin name="RecoveryActions">
          <Sequence name="RecoveryActionsSequence">
            <ClearEntireCostmap name="ClearingActions" service_name="global_costmap/clear_entirely_global_costmap"/>
            <Spin spin_dist="1.57"/>
            <Wait wait_duration="5"/>
            <BackUp backup_dist="0.30" backup_speed="0.05"/>
          </Sequence>
        </RoundRobin>
      </ReactiveFallback>
    </RecoveryNode>
  </BehaviorTree>
</root>

BTの利点はコードを変えずXMLだけで行動を再構成できること。デバッグも可視化しやすい(Grootなど)。

3.3 MPPIコントローラ — 2024年の標準

Nav2のローカルコントローラは複数あるが、2024年以降事実上標準になったのが MPPI(Model Predictive Path Integral)コントローラ だ。サンプリングベースMPCで、数千の軌跡を並列にシミュレートして最低コストを選ぶ。

# nav2_params.yaml(MPPI部)
controller_server:
  ros__parameters:
    controller_plugins: ["FollowPath"]
    FollowPath:
      plugin: "nav2_mppi_controller::MPPIController"
      time_steps: 56
      model_dt: 0.05
      batch_size: 2000
      vx_std: 0.2
      vy_std: 0.2
      wz_std: 0.4
      vx_max: 0.5
      vx_min: -0.35
      vy_max: 0.5
      wz_max: 1.9
      iteration_count: 1
      prune_distance: 1.7
      transform_tolerance: 0.1
      temperature: 0.3
      gamma: 0.015
      motion_model: "DiffDrive"
      visualize: false
      critics:
        - "ConstraintCritic"
        - "ObstaclesCritic"
        - "GoalCritic"
        - "GoalAngleCritic"
        - "PathAlignCritic"
        - "PathFollowCritic"
        - "PathAngleCritic"
        - "PreferForwardCritic"

DWBやRegulated Pure Pursuitより回避・コーナリングが自然で、GPU加速でさらに高速化する。難点はチューニングパラメータが多いこと。

3.4 SLAM — Nav2と組み合わせる二択

地図のない環境ではSLAMを併走させる。

  • SLAM Toolbox(Steve Macenski) — 2D LiDARベース、ライフロング・マッピング・ローカライズ。最も使われる。
  • RTAB-Map — RGB-Dカメラベースの3D SLAM。ROS 2対応。
# SLAM Toolboxを非同期モードで起動(マッピング)
ros2 launch slam_toolbox online_async_launch.py \
  params_file:=./config/mapper_params_online_async.yaml \
  use_sim_time:=true

# 地図を保存
ros2 service call /slam_toolbox/save_map slam_toolbox/srv/SaveMap "{name: {data: 'my_map'}}"

4章 · MoveIt 2 — モーションプランニング

4.1 MoveItが何をするか

MoveIt はロボットアーム(マニピュレータ)向けのモーションプランニング・フレームワークだ。入力は「エンドエフェクタを (x, y, z, roll, pitch, yaw) に送れ」のような目標で、出力は衝突なしにその姿勢に到達する関節軌跡。

内部では次を行う。

  1. IK(逆運動学) — 目標姿勢から関節角を解く。
  2. 衝突チェック — 自己衝突 + 環境衝突。
  3. 軌跡計画 — OMPL / STOMP / CHOMP / Pilz などのアルゴリズム。
  4. 軌跡実行ros2_control 上のコントローラに送信。

4.2 MoveIt Setup Assistant

新しいロボットをMoveItに繋ぐ出発点は Setup Assistant のGUIだ。

ros2 launch moveit_setup_assistant setup_assistant.launch.py

URDF / Xacroを読み込むと、GUIで以下が可能。

  • 自己衝突行列(Self-Collision Matrix)の自動生成。
  • Planning Groupの定義(例:arm + gripper)。
  • 事前定義姿勢の登録(home、ready)。
  • エンドエフェクタの指定。
  • コントローラ・センサ設定。

結果として moveit_config パッケージが生成される。

4.3 MoveIt 2 コード例 — pick and place

# Python MoveIt 2 (moveit_py)
import rclpy
from moveit.planning import MoveItPy
from geometry_msgs.msg import PoseStamped

def main():
    rclpy.init()
    moveit = MoveItPy(node_name="moveit_py_demo")
    arm = moveit.get_planning_component("manipulator")

    target_pose = PoseStamped()
    target_pose.header.frame_id = "base_link"
    target_pose.pose.position.x = 0.4
    target_pose.pose.position.y = 0.1
    target_pose.pose.position.z = 0.5
    target_pose.pose.orientation.w = 1.0

    arm.set_start_state_to_current_state()
    arm.set_goal_state(pose_stamped_msg=target_pose, pose_link="tool0")
    plan_result = arm.plan()

    if plan_result:
        robot_trajectory = plan_result.trajectory
        moveit.execute(robot_trajectory, controllers=[])
    else:
        print("Planning failed")

    moveit.shutdown()
    rclpy.shutdown()

if __name__ == "__main__":
    main()

C++ APIでは MoveGroupInterface が最も一般的。どちらも同じバックエンド(OMPL)を呼ぶ。

4.4 OMPL vs STOMP vs Pilz

プランナ種類長所短所
OMPL(RRTConnect、PRM)サンプリング高次元に強い経路がガタつく、後処理必要
STOMP最適化滑らかな経路初期解が必要、遅い
CHOMP最適化滑らか局所解
Pilz Industrial Motion Planner決定論的LIN/CIRC/PTP、産業用一般動作には不向き

既定はRRTConnectで始め、産業用反復動作にはPilzを使う。

4.5 ros2_controlとの接続

MoveIt 2は計画だけを行い、実行は ros2_control が担当する。両者の標準インターフェースが JointTrajectoryController だ。

# controller_manager 設定
controller_manager:
  ros__parameters:
    update_rate: 100
    joint_trajectory_controller:
      type: joint_trajectory_controller/JointTrajectoryController

joint_trajectory_controller:
  ros__parameters:
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint
    command_interfaces:
      - position
    state_interfaces:
      - position
      - velocity

5章 · Gazebo Harmonic — シミュレータの標準

5.1 Gazebo Classicの終焉とNew Gazeboの誕生

ROSユーザにとってお馴染みの「Gazebo」は2つの異なるソフトウェアだ。

  • Gazebo Classic(gazebo7〜gazebo11) — 2002年開始、2025年1月EOL。
  • New Gazebo(Citadel、Edifice、Fortress、Garden、Harmonic) — Ignition Roboticsが一から書き直したもの。2022年にIgnitionブランドを捨て、Gazeboの名前を取り戻した。

2026年現在、新規プロジェクトは無条件で New Gazebo Harmonic(2023.09 LTS、2028までサポート) を選ぶ。

5.2 Gazebo Harmonicの特徴

  • gz-sim — シミュレーション・エンジン、ECS(Entity-Component-System)ベース。
  • DART がデフォルト物理エンジン(Bullet・ODEも選択可)。
  • OGRE 2 レンダラ — Metal / Vulkan / OpenGL。
  • SDFormat 1.10 — ワールド・ロボット記述フォーマット。
  • GUI — Qtベース、プラグインで拡張。
  • ROS 2連携ros_gz_bridge でトピックをマッピング。

5.3 SDFワールド例

<?xml version="1.0"?>
<sdf version="1.10">
  <world name="warehouse">
    <physics name="1ms" type="ignored">
      <max_step_size>0.001</max_step_size>
      <real_time_factor>1.0</real_time_factor>
    </physics>

    <plugin filename="gz-sim-physics-system" name="gz::sim::systems::Physics"/>
    <plugin filename="gz-sim-sensors-system" name="gz::sim::systems::Sensors">
      <render_engine>ogre2</render_engine>
    </plugin>
    <plugin filename="gz-sim-scene-broadcaster-system" name="gz::sim::systems::SceneBroadcaster"/>

    <include>
      <uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun</uri>
    </include>
    <include>
      <uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Ground Plane</uri>
    </include>

    <include>
      <name>turtlebot</name>
      <pose>0 0 0.1 0 0 0</pose>
      <uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Turtlebot4</uri>
    </include>
  </world>
</sdf>

5.4 ros_gz_bridgeでROS 2トピックを連結

GazeboのトピックはGazebo Transport(別ミドルウェア)を使い、ROS 2はDDSを使う。両者を繋ぐのが ros_gz_bridge だ。

# /cmd_vel を双方向にマップ
ros2 run ros_gz_bridge parameter_bridge \
  /cmd_vel@geometry_msgs/msg/Twist@gz.msgs.Twist \
  /odom@nav_msgs/msg/Odometry[gz.msgs.Odometry \
  /scan@sensor_msgs/msg/LaserScan[gz.msgs.LaserScan

5.5 限界 — なぜIsaac Simが同時に登場したか

Gazebo Harmonicは優秀だが、限界がある。

  • GPU活用 — レンダリングはGPUだが、物理は依然CPU。数十〜数百の並列環境は難しい。
  • フォトリアル・レンダリング — ビジョン学習用合成データには不足。
  • ソフトボディ・流体 — 限定的。

ここをNVIDIA Isaac Simが埋める。


6章 · Isaac Sim 5.0 (NVIDIA Omniverse) + Isaac ROS

6.1 Isaac Simの何が違うか

NVIDIA Isaac Sim はOmniverse上に作られたロボットシミュレータだ。2026年1月に Isaac Sim 5.0 がリリースされ、コア特徴は次の通り。

  • PhysX 5 — GPU加速物理、数千の並列環境を実行。
  • RTXパストレーシング — フォトリアル・レンダリング、ML学習用合成データに最適。
  • OpenUSD ベースのシーングラフ — Pixar / Apple / Adobeが共同で推す標準。
  • Isaac Lab — 強化学習フレームワーク、Gym互換。
  • GR00T統合 — ヒューマノイド・ファウンデーションモデルのデータ生成。

6.2 Isaac Lab強化学習コード(簡易例)

# Isaac LabでCartpole RL環境を作る(概念コード)
from omni.isaac.lab.envs import ManagerBasedRLEnv
from omni.isaac.lab.scene import InteractiveSceneCfg
from omni.isaac.lab.assets import ArticulationCfg
from omni.isaac.lab.terrains import TerrainImporterCfg

class CartpoleSceneCfg(InteractiveSceneCfg):
    cartpole = ArticulationCfg(
        prim_path="/World/envs/env_.*/Cartpole",
        usd_path="omniverse://localhost/NVIDIA/Assets/Robots/Cartpole/cartpole.usd",
    )

env_cfg = ManagerBasedRLEnvCfg(
    scene=CartpoleSceneCfg(num_envs=4096, env_spacing=4.0),
    sim={"dt": 1/120, "device": "cuda:0"},
)

env = ManagerBasedRLEnv(cfg=env_cfg)

# PPOで学習
from skrl.agents.torch.ppo import PPO
agent = PPO(models=..., memory=..., cfg={"learning_epochs": 8})
agent.train(env, timesteps=1_000_000)

4096個の並列環境をRTX 4090一枚で回せば、数日で方策が収束する。同じことをGazeboでやるには数十台のCPUサーバが必要だ。

6.3 Isaac ROS — NVIDIAのROS 2アクセラレータ

Isaac ROS はIsaac Simとは別に、NVIDIAがROS 2パッケージをCUDA加速したコレクションである。

パッケージ機能加速
isaac_ros_visual_slamRGB-DビジュアルSLAMGPU
isaac_ros_nvblox3D再構成・占有グリッドGPU
isaac_ros_apriltagAprilTag検出GPU
isaac_ros_centerpose6DOF姿勢推定TensorRT
isaac_ros_dnn_image_encoderカメラ→ML前処理GPU

Jetson Orin・Thorボードに最適化されており、同じ知覚パイプラインがCPU比10〜30倍高速。

6.4 OpenUSDがロボティクスに入ってきた

OpenUSD(Universal Scene Description) はピクサーが作り、2023年にAOUSD(Alliance for OpenUSD)として標準化されたシーン記述フォーマットだ。映画・ゲーム発祥だが、NVIDIAがロボティクスの標準として推進している。

  • シーン・アセット・マテリアル・物理を 単一のグラフ で表現。
  • レイヤリング(ベース + 差分) — 複数チームが同じシーンを同時に編集。
  • Python API。
  • Isaac Sim・Blender・Maya・Houdiniすべてが対応。

URDF / SDFはロボット1台を定義するには十分だが、工場や都市のような大規模環境を表現するには弱い。USDがそれを代替する可能性が高い。


7章 · MuJoCo (DeepMind) — 物理シミュレーション

7.1 MuJoCoの歴史 — Roboti LLC → DeepMind買収 → オープンソース化

MuJoCo(Multi-Joint dynamics with Contact) はEmo Todorovが2010年代初頭に作った物理エンジンだ。当初は有料の商用ソフトウェア(Roboti LLC)で、OpenAI Gymの一部環境(Humanoid、HalfCheetah)がMuJoCo上で動いていた。学生ライセンスはあったが商用は高価だった。

2021年10月、Google DeepMindがMuJoCoを買収し、完全無料/オープンソース(Apache 2.0) にした。これが強化学習・ロボティクス研究の参入障壁を大きく下げた。

7.2 MuJoCoの強み

  • 接触動力学 — 摩擦・衝撃が他のエンジンより正確で安定。
  • 高速 — 並列シミュレーションに最適化、GPUバックエンド(MJX)あり。
  • 決定性 — 同じ入力に同じ出力(RLの再現性に重要)。
  • MJCF — XMLベースのモデル記述、URDFより簡潔。

7.3 MJCFの例(humanoid)

<mujoco model="humanoid">
  <option timestep="0.005" gravity="0 0 -9.81"/>

  <default>
    <joint armature="1" damping="1" limited="true"/>
    <geom contype="0" conaffinity="0" friction="1 0.1 0.1" rgba="0.7 0.5 0.3 1"/>
  </default>

  <worldbody>
    <light pos="0 0 3" dir="0 0 -1" diffuse="0.7 0.7 0.7"/>
    <geom name="floor" pos="0 0 0" size="10 10 0.1" type="plane" rgba="0.9 0.9 0.9 1"/>

    <body name="torso" pos="0 0 1.4">
      <joint name="root" type="free"/>
      <geom name="torso_geom" type="capsule" fromto="0 -.07 0 0 .07 0" size=".07"/>

      <body name="head" pos="0 0 .19">
        <geom name="head_geom" type="sphere" size=".09"/>
      </body>

      <body name="right_thigh" pos="0 -.1 -.04">
        <joint name="right_hip" type="ball"/>
        <geom name="right_thigh_geom" type="capsule" fromto="0 0 0 0 .01 -.34" size=".06"/>

        <body name="right_shin" pos="0 .01 -.403">
          <joint name="right_knee" type="hinge" axis="0 -1 0" range="-160 -2"/>
          <geom name="right_shin_geom" type="capsule" fromto="0 0 0 0 0 -.3" size=".049"/>
        </body>
      </body>
      <!-- 左側も同様 -->
    </body>
  </worldbody>

  <actuator>
    <motor name="right_knee" joint="right_knee" gear="200"/>
  </actuator>
</mujoco>

7.4 MJX — JAXバックエンドでGPU加速

2024年に登場した MJX はJAXベースのMuJoCoで、GPU/TPU上で数万の環境を同時にシミュレートできる。Brax(Google)やIsaacGymと同カテゴリ。

import jax
import mujoco
from mujoco import mjx

mj_model = mujoco.MjModel.from_xml_path("humanoid.xml")
mjx_model = mjx.put_model(mj_model)

# 4096個の環境を並列シミュレーション
batch_size = 4096
keys = jax.random.split(jax.random.PRNGKey(0), batch_size)

@jax.jit
@jax.vmap
def reset(key):
    data = mjx.make_data(mjx_model)
    return data

@jax.jit
@jax.vmap
def step(data, action):
    data = data.replace(ctrl=action)
    data = mjx.step(mjx_model, data)
    return data

batch_data = reset(keys)
actions = jax.numpy.zeros((batch_size, mj_model.nu))

for _ in range(1000):
    batch_data = step(batch_data, actions)

7.5 MuJoCo Menagerie — 公式ロボット集

DeepMindがメンテする MuJoCo Menagerie リポには産業用ロボットの検証済みMJCFがある。

  • Unitree H1、G1、Go2
  • Boston Dynamics Spot
  • Franka Emika Panda
  • KUKA iiwa14
  • Shadow Dexterous Hand
  • Anybotics Anymal C
  • Universal Robots UR5e / UR10e

これをそのまま強化学習や模倣学習のシミュレーションに投入できる。


8章 · Webots (Cyberbotics) — 軽量な選択肢

8.1 Webotsの位置

Webots はスイスのCyberbotics社が1996年から開発してきたロボットシミュレータ。2018年にApache 2.0でオープンソース化された。

Gazebo・Isaac Sim・MuJoCoがあるのに、なぜWebotsを使うのか。

  • 軽量 — Gazebo Harmonicですらインストールが面倒だが、Webotsは単一パッケージで済む。
  • 教育用途 — RoboCup・DARPA Subterranean・DJI RoboMasterなどの大会で標準。
  • 豊富な組み込みロボット — 100種以上のロボットモデルが標準提供(e-puck、NAO、Pioneer、TurtleBot)。
  • C / C++ / Python / Java / MATLAB / ROS / ROS 2 すべて対応。

8.2 Webotsコントローラの例

# Webots Python コントローラ
from controller import Robot

TIME_STEP = 32
MAX_SPEED = 6.28

robot = Robot()
left_motor = robot.getDevice("left wheel motor")
right_motor = robot.getDevice("right wheel motor")
left_motor.setPosition(float('inf'))
right_motor.setPosition(float('inf'))

ds_left = robot.getDevice("ds_left")
ds_right = robot.getDevice("ds_right")
ds_left.enable(TIME_STEP)
ds_right.enable(TIME_STEP)

while robot.step(TIME_STEP) != -1:
    left = ds_left.getValue()
    right = ds_right.getValue()
    if left < 100:
        left_motor.setVelocity(-MAX_SPEED * 0.5)
        right_motor.setVelocity(MAX_SPEED * 0.5)
    elif right < 100:
        left_motor.setVelocity(MAX_SPEED * 0.5)
        right_motor.setVelocity(-MAX_SPEED * 0.5)
    else:
        left_motor.setVelocity(MAX_SPEED)
        right_motor.setVelocity(MAX_SPEED)

8.3 どこで何を使うか

用途おすすめ
学習・チュートリアル・教育Webots
産業用モバイルロボット(ROS 2統合)Gazebo Harmonic
強化学習・ヒューマノイド・合成データIsaac Sim 5.0
マニピュレーション・器用さ・接触多めの作業MuJoCo
高速並列RLMJX または Isaac Lab
マルチロボット・ドローン群Gazebo + Zenoh

9章 · Hugging Face LeRobot (2024.10) — ロボティクスMLの民主化

9.1 LeRobot登場の背景

2024年10月、Hugging Faceが LeRobot を発表した。キャッチフレーズは「Robotics for everyone」。コアは次を一括で提供することだ。

  • 事前学習モデル — π0、ACT、Diffusion Policy、TDMPCなど。
  • データセットハブ — Open X-Embodiment・BridgeData V2・DROIDがhf-datasets形式で。
  • 安価なハードキット — SO-100(200ドル台)、SO-101、Koch v1.1、Stanford Mobile Aloha クローン。
  • チュートリアル — Colabで30分以内に模倣学習を一周。

ポイントは PyTorch + Hugging Faceエコシステムとの完全統合。NLPでTransformersがやったことを、ロボティクスでやろうとしている。

9.2 LeRobotデータパイプライン

# LeRobotデータセットの読み込み
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset

dataset = LeRobotDataset("lerobot/aloha_static_coffee")
print(dataset.meta.info)

# エピソードを1つ取得
episode = dataset[0]
print(episode["observation.image.cam_high"].shape)
print(episode["action"].shape)

9.3 ACT模倣学習

ACT(Action Chunking Transformer)はStanford Mobile Alohaチームが作った模倣学習ベースライン。LeRobot内でそのまま学習可能。

# SO-100アームでデータ収集
python lerobot/scripts/control_robot.py record \
  --robot.type=so100 \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=youngju/so100_pick_and_place \
  --control.num_episodes=50 \
  --control.warmup_time_s=5 \
  --control.episode_time_s=30 \
  --control.push_to_hub=true

# ACT 方策を学習
python lerobot/scripts/train.py \
  policy=act \
  dataset_repo_id=youngju/so100_pick_and_place \
  env=so100 \
  training.offline_steps=80_000 \
  training.batch_size=32 \
  training.lr=1e-4

# 実機で評価
python lerobot/scripts/eval.py \
  -p youngju/so100_pick_and_place_act \
  eval.n_episodes=10

9.4 SO-100 — 200ドル台で始めるロボット学習

SO-100(オリジナル設計はThe Robot Studio)は5DOFのデスクトップアームで、部品コストは200〜300ドル台。3Dプリント可能な部品 + Dynamixel(Robotis)またはFeetechサーボで構成される。LeRobotにSO-100/101のドライバが標準搭載されており、データ収集→学習→実行のサイクルを家庭で回せる。

これがLeRobotの真のインパクト。NLPがChatGPT API以前は高価で難解だったように、ロボティクスも5万ドルの産業用アームの上でしか研究できなかった。それが今や300ドルに下がった。


10章 · NVIDIA GR00T — ヒューマノイド・ファウンデーションモデル

10.1 Project GR00Tの始まり

2024年3月のGTCでJensen Huangが発表した Project GR00T(Generalist Robot 00 Technology) は、NVIDIAのヒューマノイド・ファウンデーションモデル・プロジェクトだ。一言で言えば「ヒューマノイドのGPT」。

このプロジェクトは3つを束ねる。

  1. GR00T N1(2025.03) — 17BパラメータVLA、初の公開重みモデル。
  2. Isaac Lab + Cosmos — シミュレーション・合成データ生成。
  3. Jetson Thor — ヒューマノイド搭載用推論SoC、2025年出荷。

10.2 GR00T N1アーキテクチャ

GR00T N1のコアは System 1 / System 2 デュアルモード(カーネマンの概念を直接借用)。

  • System 1(高速) — Diffusion Transformer、100Hzでアクション出力。反射的運動制御。
  • System 2(低速) — VLM(NVILA)、1〜10Hzで推論・計画。環境理解。

両者はトークン・クロスアテンションで接続される。人間がボールをキャッチする際の「ボールが落ちる → 手を伸ばす」という遅い計画(System 2)と、指の微調整(System 1)が同時に動くのと同じ構造。

10.3 GR00Tデータ・ピラミッド

NVIDIAのデータ戦略。

        実機デモ(数十〜数百時間)
            up   (最少、最高コスト)
            |
        テレオペ(Apple Vision ProのようなVR)
            |
        シミュレーション(Isaac Sim並列環境)
            |
        Cosmos合成動画(数百万時間)
            |   (最多、最低コスト)
        インターネット動画・ドキュメント

上から下へ進むほど量が増え、品質は下がる。GR00Tはインターネット動画で事前学習し、Cosmosで合成データを増強し、Isaac SimでRL微調整し、最後に実機デモでfinetuneする。

10.4 GR00T推論コード(概念)

# GR00T推論(概念的インターフェース)
from gr00t import GR00TPolicy

policy = GR00TPolicy.from_pretrained("nvidia/gr00t-n1")

observation = {
    "video.image_left": ...,    # 左カメラ
    "video.image_right": ...,   # 右カメラ
    "state.joint_pos": ...,     # 28 DOFヒューマノイド
    "language.instruction": "Pick up the red block and place it on the shelf"
}

# System 2が5Hzで計画、System 1が50Hzでアクション
for t in range(simulation_steps):
    action = policy.predict(observation)  # 28次元アクションベクトル
    new_observation = robot.step(action)
    observation = new_observation

10.5 他のヒューマノイド・ファウンデーションモデル

  • Figure Helix(2025.02) — Figure AIがOpenAIから独立後に自社開発。
  • 1X World Model — 家庭用ロボット向けの動画予測モデル。
  • Tesla Optimus FSD — 自動運転スタックをヒューマノイドに移植。
  • Physical Intelligence π0 — 次世代π0.5を開発中。

11章 · VLAモデル — RT-2、OpenVLA、π0

11.1 VLAとは

VLA(Vision-Language-Action) モデルは、入力に画像(V)+ 言語命令(L)を受け取り、出力にアクション(A)トークンを返すモデルだ。LLMのnext-token predictionパターンをそのままアクションに適用したもの。

[ 画像フレーム ] -> vision encoder ----+
[ "Pick up apple" ] -> tokenizer ------+-> Transformer -> [ アクション・トークン ]
[ ロボット状態 ] -> projector ---------+                          |
                                                                  v
                                                  [ dx, dy, dz, gripper ]

11.2 RT-2(2023.07) — 最初のシグナル

Google DeepMindの RT-2 はVLM(PaLI-X 55B、PaLM-E 12B)にRT-1のロボットデータを追加学習したもの。コツはアクションをトークン化してLLMの語彙に追加することだった。

  • 入力:カメラ画像 + 「Move the empty can to the apple」
  • 出力:<action>+13 +127 -3 +1 0 0 0 1</action>(6DOFデルタ + グリッパ)

衝撃的だったのは、初見のオブジェクト(絶滅動物カード)・初見の命令(「子犬の絵を移動せよ」)にも汎化したことだ。

11.3 OpenVLA(2024.06) — 初のオープンソースVLA

Stanford・UC Berkeley・Toyota Researchが OpenVLA(7B) を発表。Prismatic VLMベース。

  • Open X-Embodiment の97万トラジェクトリで学習。
  • A100 64枚で14日学習。
  • 重み・コード・データすべて公開。
  • LoRAで新ロボット・新タスクにfinetune可能。
from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch

processor = AutoProcessor.from_pretrained("openvla/openvla-7b", trust_remote_code=True)
vla = AutoModelForVision2Seq.from_pretrained(
    "openvla/openvla-7b",
    attn_implementation="flash_attention_2",
    torch_dtype=torch.bfloat16,
    trust_remote_code=True
).to("cuda:0")

image = Image.open("camera_view.png")
prompt = "In: What action should the robot take to pick up the cup?\nOut:"
inputs = processor(prompt, image).to("cuda:0", dtype=torch.bfloat16)

action = vla.predict_action(**inputs, unnorm_key="bridge_orig", do_sample=False)
print(action)  # [dx, dy, dz, droll, dpitch, dyaw, gripper]

11.4 π0(Physical Intelligence、2024.10)

Physical Intelligence(PI) はSergey Levine・Chelsea Finnらが創業したスタートアップ。π0(pi-zero) は7BパラメータのFlow Matchingベース VLA。

核心的革新は action chunking + flow matching

  • 1回の推論で50msのアクションチャンク(50ステップ)を生成。
  • diffusionではなくflow matchingで滑らかなアクション分布。
  • 衣類を畳む・食器を洗う・箱を詰めるといった器用さデモ。
# π0 推論の擬似コード
from openpi.models.pi0 import Pi0Policy

policy = Pi0Policy.from_checkpoint("pi0_base")
action_chunk = policy.sample_action(
    images={"primary": img1, "wrist": img2},
    instruction="Fold the blue shirt",
    state=robot_state,
)
# action_chunk: shape [50, action_dim]
for action in action_chunk:
    robot.execute(action)

2025年4月にPIはπ0.5とπ1を公開し、一部の重みはHugging Faceに置かれている。

11.5 VLAモデル比較

モデル開発元パラメータデータオープン
RT-2Google DeepMind55B(PaLI-X)RT-1 + Web非公開
OpenVLAStanford / Berkeley7BOXE 97万完全公開
π0Physical Intelligence7BOXE + 独自部分公開
GR00T N1NVIDIA17B合成 + 実データ重み公開
Figure HelixFigure AI非公開独自非公開
Tesla OptimusTesla非公開独自非公開

11.6 限界と次の一手

VLAがすべてを解くわけではない。2026年現在の限界は次の通り。

  1. 長期ホライズン作業 — 30秒を超える作業は難しい。計画(System 2)が弱い。
  2. データ効率 — 新規タスクに数十〜数百デモが必要。one-shotには遠い。
  3. 安全保証 — ニューラル方策の安全性を形式的に保証するのが難しい。
  4. ハードウェアとソフトウェアの結合 — 同じモデルが別ロボットでうまく動かない。

12章 · Foxglove Studio — データ可視化

12.1 RViz2の限界、Foxgloveの登場

ROS 2の基本可視化ツールは RViz2 だ。十分強力だが限界がある。

  • ROS 2に依存 — ROS以外のシステム(MAVLink、独自プロトコル)を見るのが難しい。
  • ログ(rosbag)分析が弱い。
  • 共同作業や共有が困難(スクリーンショットや動画しかない)。
  • WebやタブレットでLが見えない。

Foxglove Studio は2021年にCruise出身者が創業した会社が作ったマルチプロトコル可視化ツールだ。

  • デスクトップ + Web + クラウド を同時にサポート。
  • ROS 1、ROS 2、MCAP、MAVLink、MQTT、生WebSocket すべて対応。
  • 3D、Plot、Image、State Transitions、Map、Tab など豊富なパネル。
  • MCAP が事実上の新標準に(rosbag2の代替)。

12.2 MCAP — 新しいログ標準

MCAP(Message Capture) はFoxgloveが作ったログ・コンテナフォーマット。ROS 2 Jazzy以降、rosbag2 のデフォルト保存形式がMCAPに変わった。

特徴。

  • インデックス付きでランダムアクセスが速い。
  • メッセージ定義自体を内蔵してself-describing。
  • ROS・protobuf・JSON・flatbuffersに対応。
  • Python / Go / Rust SDKあり。
# rosbag2をMCAPで録画(Jazzyの既定)
ros2 bag record -a -s mcap -o my_session

# MCAPの情報を表示
mcap info my_session/my_session_0.mcap

# 変換
mcap convert old.bag new.mcap

12.3 Foxgloveでデータを見る

# デスクトップアプリでライブROS 2トピックを見る
# - Foxglove Studio起動
# - + Add connection -> ROS 2 -> 自動検出

# またはWebアプリにMCAPファイルをドラッグアンドドロップ
# https://app.foxglove.dev

共同作業に強い点は、チームメンバーが同じMCAPを開いて、同じタイムスタンプの同じパネルレイアウトを見られること。プルリクに「このバグは t=23.4s で発生」とリンクを貼れる。

12.4 PlotJuggler — 信号分析

数値データ(センサ・コントローラ出力)の時系列分析には PlotJuggler が最も便利だ。

sudo apt install ros-jazzy-plotjuggler-ros
ros2 run plotjuggler plotjuggler

CSV・rosbag2・MCAP・ライブトピックすべてをドラッグアンドドロップでプロットでき、数式で新規チャネル作成やフィルタリングが簡単。


13章 · 韓国・日本のロボティクス — 産業強国からヒューマノイドへ

13.1 韓国 — 現代自動車のBoston Dynamicsへの賭け

2021年12月、現代自動車グループがSoftBank Groupから Boston Dynamics を11億ドルで買収した。当時は高すぎるとの評価が多かったが、ヒューマノイド・ブームと共にその意味が明確になった。

  • Atlas(Electric) — 2024年4月に油圧式Atlas引退、新型電動Atlasを公開。現代自動車のMetaplant(ジョージア州)で車両組立を学習中。
  • Spot — 4足ロボット、現代自動車・起亜の工場警備・点検に活用。
  • Stretch — 倉庫向け、箱ハンドリング。

韓国の他のプレイヤー。

  • Doosan Robotics — 協働ロボット(cobot)M シリーズ・H シリーズ。韓国式チキン揚げロボットなどの応用で有名。
  • Rainbow Robotics — KAISTのHUBO出身の創業。2024年にSamsung Electronicsが株式取得。自社ヒューマノイドRB-Y1を開発中。
  • Robotis — Dynamixelスマートアクチュエータ。LeRobot SO-100・OpenManipulator・世界のロボット教育キットの事実上の標準。
  • Yujin Robot・Robotis — モバイルロボット・教育用。

13.2 日本 — 産業用ロボットの長年の強国

日本は1980年代から産業用ロボット世界1位だ。2026年もその座は変わらない。

産業用ロボット四天王(2026)。

  • FANUC — 黄色の産業用アーム、自動車・半導体ラインの標準。
  • Yaskawa Motoman — 溶接・組立。
  • Kawasaki Robotics — 川崎重工系。
  • Mitsubishi Electric — MELFAシリーズ。

サービス・ヒューマノイド側

  • Sony AIBO — 1999年初出荷、2018年に復活(ERS-1000)。家庭用ロボットペットの象徴。
  • SoftBank Pepper — 2014年発売、2021年に生産停止。2026年では博物館でしか見かけない。
  • Honda ASIMO — 2018年に開発終了。ヒューマノイド第1世代の終わり。
  • Toyota T-HR3 / Human Support Robot(HSR) — 研究・介護用途。
  • Kawasaki Kaleido — 2022年に発表したヒューマノイド。
  • Preferred Networks — AI / ロボティクス・スタートアップ、FANUCと協業。

13.3 二国のロボティクスの違う質感

韓国日本
強みヒューマノイド(BD)、cobot(Doosan)、モーター(Robotis)産業用アーム(FANUC、Yaskawa)、精密モーター、自動車
弱み産業用標準市場への参入遅れヒューマノイド・AI統合が遅い
R&D政府主導、大企業中心企業主導、職人文化
AI統合早い(LLM・VLAを素早く採用)保守的

2026年の興味深い動向 — 現代-Boston Dynamics-Hyundai Mobis-Hyundai Wia のラインが、米国ビッグテック(Tesla、Figure)と正面から競争できるほぼ唯一の非米陣営になったこと。日本は産業用では依然として強いが、ヒューマノイド・VLA競争では追う立場だ。

13.4 学習リソース

  • 韓国 — KAIST・ソウル大学ロボティクスラボ、現代ロボティクス・アカデミー、ウアハン兄弟ロボットチーム。
  • 日本 — Preferred Networksチャレンジ、Toyota Research Institute、AIST(産業技術総合研究所)。

14章 · 参考 / References

ROS 2公式 / Nav2 / MoveIt

シミュレーション

VLA / ファウンデーションモデル

可視化 / データ

ヒューマノイド・プラットフォーム

韓国 / 日本


終わりに — ロボティクスは本当に変わりつつある

2020年のロボティクス開発は「ROS 1 + Gazebo Classic + 手書きコントローラ + 博士号」だった。参入障壁が博士号だった。

2026年のロボティクス開発は「ROS 2 Jazzy + Isaac Sim / MuJoCo + LeRobotから持ってきたVLA + 300ドルのSO-100」だ。参入障壁はノートPCと好奇心だ。

この変化を推進する3つの力。

  1. シミュレーションの成熟 — Isaac Sim・MuJoCo・Gazebo Harmonicが産業グレードの品質を無料で提供。
  2. VLAの登場 — 手で書いていた認識・計画・制御を単一モデルに統合。
  3. 民主化 — LeRobotがデータ・モデル・ハードウェアを一つのオープンパッケージで提供。

これが本当にヒューマノイドを家庭に届けるのか、それとも「5年で自動運転」のような過大宣伝の再演になるのかは、2027〜2028年が答えを示すだろう。しかし一つは確かだ — 2026年は、1年前と比べものにならない道具の山を抱えて、その答えを待つ。

ROS 2を入れ、MuJoCoで一度シミュレーションを回し、LeRobotのACTチュートリアルを一度なぞってみよう。それが2026年ロボティクスに足を踏み入れる最も軽い方法だ。