agenticros 0.5.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +2 -0
  2. package/dist/commands/up.d.ts +1 -0
  3. package/dist/commands/up.d.ts.map +1 -1
  4. package/dist/commands/up.js +3 -2
  5. package/dist/commands/up.js.map +1 -1
  6. package/dist/index.js +1 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/runners/sim.d.ts +2 -0
  9. package/dist/runners/sim.d.ts.map +1 -1
  10. package/dist/runners/sim.js +7 -0
  11. package/dist/runners/sim.js.map +1 -1
  12. package/package.json +11 -12
  13. package/runtime/BUNDLE.json +1 -1
  14. package/runtime/README.md +2 -0
  15. package/runtime/docs/cli.md +4 -2
  16. package/runtime/ros2_ws/src/agenticros_sim/CMakeLists.txt +1 -0
  17. package/runtime/ros2_ws/src/agenticros_sim/README.md +13 -10
  18. package/runtime/ros2_ws/src/agenticros_sim/config/agenticros-sim.config.json +3 -2
  19. package/runtime/ros2_ws/src/agenticros_sim/config/amr_bridge.yaml +6 -4
  20. package/runtime/ros2_ws/src/agenticros_sim/config/nav2_params.yaml +320 -0
  21. package/runtime/ros2_ws/src/agenticros_sim/launch/sim_amr_nav2.launch.py +101 -0
  22. package/runtime/ros2_ws/src/agenticros_sim/maps/agenticros_indoor.pgm +0 -0
  23. package/runtime/ros2_ws/src/agenticros_sim/maps/agenticros_indoor.yaml +7 -0
  24. package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.sdf +18 -1
  25. package/runtime/ros2_ws/src/agenticros_sim/package.xml +15 -2
  26. package/runtime/ros2_ws/src/agenticros_sim/urdf/agenticros_amr.urdf.xacro +9 -0
  27. package/runtime/scripts/configure_agenticros.sh +0 -0
  28. package/runtime/scripts/configure_for_sim.sh +0 -0
  29. package/runtime/scripts/fix-openclaw-control-ui-path.sh +0 -0
  30. package/runtime/scripts/install_cli.sh +0 -0
  31. package/runtime/scripts/install_rosbridge_from_source.sh +0 -0
  32. package/runtime/scripts/onboard_robot.sh +0 -0
  33. package/runtime/scripts/pack-runtime.mjs +0 -0
  34. package/runtime/scripts/refresh-skill-deps.mjs +0 -0
  35. package/runtime/scripts/run_demo_native.sh +0 -0
  36. package/runtime/scripts/run_nemoclaw_host_stack.sh +0 -0
  37. package/runtime/scripts/run_robot_rosbridge.sh +0 -0
  38. package/runtime/scripts/setup_gateway_plugin.sh +0 -0
  39. package/runtime/scripts/setup_robot.sh +0 -0
  40. package/runtime/scripts/setup_workspace.sh +0 -0
  41. package/runtime/scripts/sim/run_sim.sh +26 -5
  42. package/runtime/scripts/smoke_test_nemoclaw.sh +0 -0
  43. package/runtime/scripts/start_demo.sh +0 -0
  44. package/runtime/scripts/test-navigate-sim.mjs +164 -0
  45. package/runtime/scripts/use-openclaw-2026.2.26.sh +0 -0
  46. package/runtime/scripts/use-openclaw-2026.3.11.sh +0 -0
package/README.md CHANGED
@@ -14,6 +14,7 @@ agenticros # interactive menu
14
14
  agenticros mcp setup # register AgenticROS MCP for Codex, Hermes, and Claude
15
15
  agenticros up real # bring up the real-robot stack
16
16
  agenticros up sim-amr # bring up a simulated 2-wheel AMR
17
+ agenticros up sim-amr --nav2 # AMR + Nav2 (map + AMCL + navigation)
17
18
  agenticros up sim-arm # bring up a simulated 6-DOF arm
18
19
  agenticros doctor # health check
19
20
  agenticros down # stop everything we started
@@ -66,6 +67,7 @@ Three ways, listed easiest first:
66
67
  | `agenticros init` | First-time setup wizard. Idempotent. |
67
68
  | `agenticros up real` | Bring up the real-robot stack (RealSense + motors + MCP). |
68
69
  | `agenticros up sim-amr` | Bring up the simulated 2-wheel AMR. |
70
+ | `agenticros up sim-amr --nav2` | Same + indoor map, AMCL, and Nav2 (`navigate_to_pose`). |
69
71
  | `agenticros up sim-arm` | Bring up the simulated 6-DOF arm (UR5e-shaped, per-joint position control). |
70
72
  | `agenticros down` | Stop everything we started. |
71
73
  | `agenticros doctor` | Coloured health-check table; `--json` for CI. |
@@ -13,6 +13,7 @@ export interface UpOptions {
13
13
  namespace?: string;
14
14
  rviz?: boolean;
15
15
  headless?: boolean;
16
+ nav2?: boolean;
16
17
  camera?: boolean;
17
18
  motors?: boolean;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC9D"}
1
+ {"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC9D"}
@@ -36,6 +36,7 @@ export async function upCommand(opts) {
36
36
  namespace: opts.namespace,
37
37
  useRviz: opts.rviz === true,
38
38
  headless: resolveHeadless(opts.headless),
39
+ nav2: opts.nav2 === true,
39
40
  });
40
41
  break;
41
42
  case "sim-arm":
@@ -134,8 +135,8 @@ async function resolveTarget(raw) {
134
135
  message: "What do you want to bring up?",
135
136
  choices: [
136
137
  { name: "Real robot (RealSense + MCP; motors if robotics CLI present)", value: "real" },
137
- { name: "Sim AMR (Gazebo + 2-wheel diff-drive)", value: "sim-amr" },
138
- { name: "Sim Arm (Gazebo + UR5e + MoveIt2)", value: "sim-arm" },
138
+ { name: "Sim AMR (Gazebo + 2-wheel diff-drive; add --nav2 for Nav2)", value: "sim-amr" },
139
+ { name: "Sim Arm (Gazebo + UR5e; MoveIt2 WIP)", value: "sim-arm" },
139
140
  ],
140
141
  default: "real",
141
142
  });
@@ -1 +1 @@
1
- {"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -61,6 +61,7 @@ program
61
61
  .option("--rviz", "Open RViz alongside the sim (sim targets only)", false)
62
62
  .option("--headless", "Run gz-sim with no GUI (auto-enabled on Jetson or when $DISPLAY is unset)")
63
63
  .option("--no-headless", "Force gz-sim GUI on (override Jetson auto-headless)")
64
+ .option("--nav2", "sim-amr only: also launch Nav2 (map + AMCL + navigation)", false)
64
65
  .option("--no-camera", "Skip starting the RealSense camera (real target only)")
65
66
  .option("--no-motors", "Skip starting the motor controller (real target only)")
66
67
  .action(async (target, opts) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;GAIG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,mCAAmC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAE5E,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAE9B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,gGAAgG,CACjG;KACA,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,kCAAkC,CAAC;KACrE,kBAAkB,CAAC,qDAAqD,CAAC,CAAC;AAE7E,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CACV,8EAA8E,CAC/E;KACA,MAAM,CAAC,uBAAuB,EAAE,yCAAyC,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;KACtD,MAAM,CAAC,QAAQ,EAAE,gDAAgD,EAAE,KAAK,CAAC;KACzE,MAAM,CAAC,YAAY,EAAE,2EAA2E,CAAC;KACjG,MAAM,CAAC,eAAe,EAAE,qDAAqD,CAAC;KAC9E,MAAM,CAAC,QAAQ,EAAE,0DAA0D,EAAE,KAAK,CAAC;KACnF,MAAM,CAAC,aAAa,EAAE,uDAAuD,CAAC;KAC9E,MAAM,CAAC,aAAa,EAAE,uDAAuD,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAI,EAAE,EAAE;IACjD,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CACV,0GAA0G,CAC3G;KACA,MAAM,CAAC,eAAe,EAAE,oCAAoC,EAAE,KAAK,CAAC;KACpE,MAAM,CAAC,gBAAgB,EAAE,mEAAmE,EAAE,KAAK,CAAC;KACpG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CACV,mGAAmG,CACpG;KACA,MAAM,CAAC,SAAS,EAAE,2CAA2C,EAAE,KAAK,CAAC;KACrE,MAAM,CACL,sBAAsB,EACtB,sFAAsF,CACvF;KACA,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,QAAQ,EAAE,sDAAsD,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACV,8EAA8E,CAC/E;KACA,MAAM,CAAC,QAAQ,EAAE,uCAAuC,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CACV,mFAAmF,CACpF;KACA,MAAM,CAAC,cAAc,EAAE,gEAAgE,EAAE,KAAK,CAAC;KAC/F,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,EAAE,KAAK,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,IAAI,EAAE,EAAE;IACjD,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,4BAA4B,CAAC;KACrC,WAAW,CACV,yFAAyF,CAC1F;KACA,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,QAA4B,EAAE,EAAE;IACzE,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,6DAA6D;AAC7D,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CACV,yHAAyH,CAC1H;KACA,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,EAAE;IAC3C,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,mBAAmB,EAAE,2DAA2D,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA2B,EAAE,EAAE;IAC1D,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yFAAyF,CAAC;KACtG,MAAM,CAAC,YAAY,EAAE,2DAA2D,EAAE,KAAK,CAAC;KACxF,MAAM,CAAC,WAAW,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,IAA2C,EAAE,EAAE;IAC5D,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CACV,4HAA4H,CAC7H;KACA,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;KACnF,MAAM,CAAC,YAAY,EAAE,kDAAkD,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,yCAAyC,EAAE,KAAK,CAAC;KAClE,MAAM,CAAC,cAAc,EAAE,4DAA4D,EAAE,KAAK,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,GAAuB,EAAE,IAAI,EAAE,EAAE;IAC1E,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,mEAAmE,CAAC,CAAC;AAEpF,MAAM;KACH,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CACV,oFAAoF,CACrF;KACA,MAAM,CAAC,OAAO,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACtD,MAAM,CAAC,SAAS,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACvE,MAAM,CAAC,UAAU,EAAE,+CAA+C,EAAE,KAAK,CAAC;KAC1E,MAAM,CAAC,UAAU,EAAE,qDAAqD,EAAE,KAAK,CAAC;KAChF,MAAM,CAAC,WAAW,EAAE,mEAAmE,EAAE,KAAK,CAAC;KAC/F,MAAM,CAAC,WAAW,EAAE,4CAA4C,EAAE,KAAK,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,IAOd,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC3D,MAAM,kBAAkB,CAAC;QACvB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;QACjC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC;KAC5C,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,KAAK,CAAC;KAC9C,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,KAAK,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,IAKd,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0EAA0E,CAAC,CAAC;AAE3F,SAAS;KACN,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,WAAW,EAAE,gDAAgD,EAAE,KAAK,CAAC;KAC5E,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,IAA8C,EAAE,EAAE;IAC/D,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,MAAM,QAAQ,GAAG,OAAO;KACrB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8DAA8D,CAAC,CAAC;AAE/E,QAAQ;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,MAAM,CAAC,WAAW,EAAE,4EAA4E,EAAE,KAAK,CAAC;KACxG,MAAM,CAAC,KAAK,EAAE,IAA2B,EAAE,EAAE;IAC5C,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0DAA0D,CAAC,CAAC;AAE3E,SAAS;KACN,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,kBAAkB,EAAE,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;IACzC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CACV,yLAAyL,CAC1L;KACA,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,4CAA4C,CAAC;KACxE,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,8CAA8C,EAAE,KAAK,CAAC;KAC1E,MAAM,CACL,eAAe,EACf,yHAAyH,CAC1H;KACA,MAAM,CACL,kBAAkB,EAClB,+JAA+J,CAChK;KACA,MAAM,CACL,uBAAuB,EACvB,qMAAqM,CACtM;KACA,MAAM,CACL,yBAAyB,EACzB,8IAA8I,CAC/I;KACA,MAAM,CACL,yBAAyB,EACzB,0KAA0K,CAC3K;KACA,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,GAAuB,EAAE,IAAI,EAAE,EAAE;IAC1E,MAAM,aAAa,CAAC;QAClB,MAAM;QACN,GAAG;QACH,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,IAAI;IACjB,8DAA8D;IAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
@@ -13,6 +13,8 @@ export interface SimRunOptions {
13
13
  useRviz?: boolean;
14
14
  /** True = headless gz (-s --headless-rendering). Auto-detected from $DISPLAY upstream. */
15
15
  headless?: boolean;
16
+ /** AMR only: launch Nav2 (map + AMCL + navigation) via sim_amr_nav2.launch.py. */
17
+ nav2?: boolean;
16
18
  }
17
19
  export declare function runSimAmr(opts: SimRunOptions): Promise<void>;
18
20
  export declare function runSimArm(opts: SimRunOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"sim.d.ts","sourceRoot":"","sources":["../../src/runners/sim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoCD,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
1
+ {"version":3,"file":"sim.d.ts","sourceRoot":"","sources":["../../src/runners/sim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA2CD,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
@@ -32,6 +32,13 @@ async function runSim(robot, opts) {
32
32
  args.push("--rviz");
33
33
  if (opts.headless)
34
34
  args.push("--no-gui");
35
+ if (opts.nav2) {
36
+ if (robot !== "amr") {
37
+ err("--nav2 is only supported with sim-amr.");
38
+ process.exit(2);
39
+ }
40
+ args.push("--nav2");
41
+ }
35
42
  info(`Invoking ${script} ${args.join(" ")}…`);
36
43
  try {
37
44
  await execa("bash", [script, ...args], {
@@ -1 +1 @@
1
- {"version":3,"file":"sim.js","sourceRoot":"","sources":["../../src/runners/sim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,KAAK,UAAU,MAAM,CAAC,KAAoB,EAAE,IAAmB;IAC7D,MAAM,CAAC,oBAAoB,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,IAAI,CACF,uCAAuC,MAAM,KAAK;YAChD,6EAA6E;YAC7E,4EAA4E;YAC5E,8CAA8C,CACjD,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC;IACzC,UAAU,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;YACrC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE;YACvD,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"sim.js","sourceRoot":"","sources":["../../src/runners/sim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW9C,KAAK,UAAU,MAAM,CAAC,KAAoB,EAAE,IAAmB;IAC7D,MAAM,CAAC,oBAAoB,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,IAAI,CACF,uCAAuC,MAAM,KAAK;YAChD,6EAA6E;YAC7E,4EAA4E;YAC5E,8CAA8C,CACjD,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC;IACzC,UAAU,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,YAAY,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;YACrC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE;YACvD,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agenticros",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "type": "module",
5
5
  "description": "AgenticROS - agentic AI for ROS-powered robots. Single CLI to launch real-robot or simulated demos, manage configuration, and inspect status.",
6
6
  "keywords": [
@@ -35,16 +35,6 @@
35
35
  "engines": {
36
36
  "node": ">=20.0.0"
37
37
  },
38
- "scripts": {
39
- "build": "tsc",
40
- "typecheck": "tsc --noEmit",
41
- "test": "node --test --test-force-exit \"dist/__tests__/*.test.js\"",
42
- "clean": "rm -rf dist runtime tsconfig.tsbuildinfo",
43
- "pack:runtime": "node ../../scripts/pack-runtime.mjs",
44
- "size:check": "node ../../scripts/check-cli-tarball-size.mjs",
45
- "tarball:check": "node ../../scripts/check-cli-tarball-install.mjs",
46
- "prepublishOnly": "pnpm run clean && pnpm run build && pnpm run pack:runtime && pnpm run size:check && pnpm run tarball:check"
47
- },
48
38
  "dependencies": {
49
39
  "@agenticros/core": "^0.8.1",
50
40
  "@inquirer/prompts": "^7.0.0",
@@ -64,5 +54,14 @@
64
54
  "type": "git",
65
55
  "url": "git+https://github.com/agenticros/agenticros.git",
66
56
  "directory": "packages/agenticros-cli"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc",
60
+ "typecheck": "tsc --noEmit",
61
+ "test": "node --test --test-force-exit \"dist/__tests__/*.test.js\"",
62
+ "clean": "rm -rf dist runtime tsconfig.tsbuildinfo",
63
+ "pack:runtime": "node ../../scripts/pack-runtime.mjs",
64
+ "size:check": "node ../../scripts/check-cli-tarball-size.mjs",
65
+ "tarball:check": "node ../../scripts/check-cli-tarball-install.mjs"
67
66
  }
68
- }
67
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "packedAt": "2026-07-09T23:38:28.747Z",
2
+ "packedAt": "2026-07-13T21:57:44.063Z",
3
3
  "repo": "https://github.com/PlaiPin/agenticros",
4
4
  "note": "This directory is a snapshot of the agenticros monorepo source. `agenticros init` will copy it to ~/agenticros and run pnpm install + colcon build there.",
5
5
  "layout": {
package/runtime/README.md CHANGED
@@ -195,6 +195,8 @@ agenticros hermes setup # register AgenticROS MCP for Hermes Agent
195
195
  agenticros hermes doctor # validate ~/.hermes/config.yaml
196
196
  agenticros up real # real robot stack
197
197
  agenticros up sim-amr # simulated AMR (Gazebo + RViz, headless on Jetson)
198
+ agenticros up sim-amr --nav2 # AMR + Nav2 for navigate_to missions
199
+ agenticros up sim-arm # simulated 6-DOF arm (per-joint; MoveIt WIP)
198
200
  agenticros up sim-arm # simulated 6-DOF arm
199
201
  agenticros mode <real|sim> # swap the active config profile (namespace, transport)
200
202
  agenticros robots # list / add / remove robots in the fleet (kind, sensors, capabilities)
@@ -38,13 +38,15 @@ Bring up a robot stack. Targets:
38
38
  | Target | What it does |
39
39
  |-----------|-----|
40
40
  | `real` | Runs `scripts/start_demo.sh`: RealSense camera (unless `--no-camera`), MCP build, and motor controller only when the `robotics` CLI is installed (or unless `--no-motors`). |
41
- | `sim-amr` | Launches the simulated 2-wheel AMR (Phase 2 - WIP). |
42
- | `sim-arm` | Launches the simulated UR5e arm + MoveIt2 (Phase 3 - WIP). |
41
+ | `sim-amr` | Launches the simulated 2-wheel AMR (`scripts/sim/run_sim.sh`). Add `--nav2` for map + AMCL + Nav2. |
42
+ | `sim-arm` | Launches the simulated UR5e-shaped arm (per-joint position control; MoveIt2 WIP). |
43
43
 
44
44
  Flags:
45
45
  - `--ros-distro humble|jazzy|…` override ROS distro detection
46
46
  - `--namespace <ns>` override the robot namespace
47
47
  - `--rviz` open RViz alongside the sim
48
+ - `--headless` / `--no-headless` control gz GUI (auto-headless on Jetson / no `$DISPLAY`)
49
+ - `--nav2` sim-amr only: also launch Nav2 (`sim_amr_nav2.launch.py`)
48
50
  - `--no-camera` skip starting the RealSense camera (real target)
49
51
  - `--no-motors` skip starting the motor controller (real target)
50
52
 
@@ -13,6 +13,7 @@ install(DIRECTORY
13
13
  models
14
14
  config
15
15
  urdf
16
+ maps
16
17
  DESTINATION share/${PROJECT_NAME}/
17
18
  )
18
19
 
@@ -11,20 +11,23 @@ names the real-robot plugin already expects.
11
11
  agenticros_sim/
12
12
  ├── worlds/agenticros_indoor.sdf 12 x 12 m indoor room with obstacles
13
13
  │ and one "person" target for follow-me
14
+ ├── maps/agenticros_indoor.{yaml,pgm} Occupancy grid for Nav2 / AMCL
14
15
  ├── models/
15
16
  │ ├── agenticros_amr/ 2-wheel diff-drive AMR with sensors
16
17
  │ └── agenticros_arm/ 6-DOF UR5e-shaped robotic arm
17
18
  ├── urdf/
18
- │ ├── agenticros_amr.urdf.xacro URDF mirror for RViz (AMR)
19
+ │ ├── agenticros_amr.urdf.xacro URDF mirror for RViz (AMR; base_footprint)
19
20
  │ └── agenticros_arm.urdf.xacro URDF mirror for RViz (arm)
20
21
  ├── config/
21
22
  │ ├── amr_bridge.yaml gz <-> ROS topic mapping (AMR)
23
+ │ ├── nav2_params.yaml Nav2 / AMCL params for the AMR
22
24
  │ ├── amr_view.rviz RViz config: camera, scan, TF
23
25
  │ ├── arm_bridge.yaml gz <-> ROS topic mapping (arm)
24
26
  │ └── arm_view.rviz RViz config: RobotModel + TF
25
27
  ├── launch/
26
- │ ├── sim_amr.launch.py One-stop launcher (AMR)
27
- └── sim_arm.launch.py One-stop launcher (arm)
28
+ │ ├── sim_amr.launch.py Gazebo AMR + bridge
29
+ ├── sim_amr_nav2.launch.py Gazebo AMR + Nav2 (map + AMCL)
30
+ │ └── sim_arm.launch.py Gazebo arm
28
31
  ├── env-hooks/ Add the package's share/ to GZ_SIM_RESOURCE_PATH
29
32
  └── CMakeLists.txt + package.xml Standard ament_cmake skeleton
30
33
  ```
@@ -35,6 +38,8 @@ agenticros_sim/
35
38
  # Easiest: use the agenticros CLI (handles ROS sourcing + workspace build).
36
39
  agenticros up sim-amr # AMR: GUI
37
40
  agenticros up sim-amr --rviz # AMR: GUI + RViz panel
41
+ agenticros up sim-amr --nav2 # AMR + Nav2 (map + AMCL + navigation)
42
+ agenticros up sim-amr --nav2 --headless
38
43
  agenticros up sim-arm # Arm: GUI
39
44
  agenticros up sim-arm --rviz # Arm: GUI + RViz (RobotModel + TF)
40
45
 
@@ -42,12 +47,15 @@ agenticros up sim-arm --rviz # Arm: GUI + RViz (RobotModel + TF)
42
47
  cd ros2_ws && colcon build --symlink-install --packages-select agenticros_sim
43
48
  source install/setup.bash
44
49
  ros2 launch agenticros_sim sim_amr.launch.py
50
+ ros2 launch agenticros_sim sim_amr_nav2.launch.py gui:=false
45
51
  ros2 launch agenticros_sim sim_amr.launch.py use_rviz:=true
46
52
  ros2 launch agenticros_sim sim_amr.launch.py gui:=false # headless
47
53
  ros2 launch agenticros_sim sim_arm.launch.py
48
54
  ros2 launch agenticros_sim sim_arm.launch.py use_rviz:=true
49
55
  ```
50
56
 
57
+ Nav2 requires `ros-$ROS_DISTRO-nav2-bringup`. After `--nav2`, install
58
+ `@agenticros/navigate-to` and call `run_mission` with `navigate_to`.
51
59
  ## Arm topic layout
52
60
 
53
61
  The arm exposes one position-command topic per joint plus the usual
@@ -133,13 +141,8 @@ works against sim without configuration changes.
133
141
 
134
142
  These are non-fatal but worth knowing as you build sim demos:
135
143
 
136
- 1. **`/odom` does not flow through the bridge.** The gz-sim diff-drive plugin
137
- publishes `gz.msgs.Odometry` to `/odometry`, but `ros_gz_bridge` on Humble
138
- appears to expect `gz.msgs.OdometryWithCovariance` for the
139
- `nav_msgs/msg/Odometry` mapping. The other transforms (`/tf`, `/tf_static`)
140
- work and are usually enough for navigation demos. Fix candidates:
141
- add an `<odom_publisher_topic>` for `_with_covariance` in the diff-drive
142
- config, or write a tiny relay node. Tracked for Phase 4 polish.
144
+ 1. **`/odom` flows through the bridge** via `gz.msgs.OdometryWithCovariance`
145
+ from the OdometryPublisher system (DiffDrive still owns `/tf`).
143
146
  2. **`/camera/camera/color/image_raw` is silent in headless mode** on this
144
147
  Jetson (`libEGL: failed to create dri2 screen`). Depth, lidar, IMU, and
145
148
  joint_states all stream correctly regardless. With `gui:=true` (a real
@@ -1,5 +1,5 @@
1
1
  {
2
- "$comment": "AgenticROS config template tuned for sim-amr. Drop this in ~/.agenticros/config.json (or run `agenticros init` and answer 'simulation') to point the MCP server + OpenClaw plugin at the sim's topics. All values match agenticros_sim/config/amr_bridge.yaml. NOTE: robot.namespace is intentionally empty - the sim bridge publishes /cmd_vel, /scan, /imu/data, etc. at the graph root (no robot prefix), so AgenticROS must NOT namespace topics. For multi-robot sim, prefix the topics in amr_bridge.yaml and set namespace here to match.",
2
+ "$comment": "AgenticROS config template tuned for sim-amr. Drop this in ~/.agenticros/config.json (or run `agenticros init` and answer 'simulation') to point the MCP server + OpenClaw plugin at the sim's topics. All values match agenticros_sim/config/amr_bridge.yaml. NOTE: robot.namespace is intentionally empty - the sim bridge publishes /cmd_vel, /scan, /imu/data, etc. at the graph root (no robot prefix), so AgenticROS must NOT namespace topics. For multi-robot sim, prefix the topics in amr_bridge.yaml and set namespace here to match. For Nav2 demos: `agenticros up sim-amr --nav2` then install @agenticros/navigate-to (or pin skillRefs below).",
3
3
  "transport": {
4
4
  "mode": "local"
5
5
  },
@@ -24,5 +24,6 @@
24
24
  "followme": {
25
25
  "depthTopic": "/camera/camera/depth/image_rect_raw"
26
26
  }
27
- }
27
+ },
28
+ "skillRefs": []
28
29
  }
@@ -23,12 +23,14 @@
23
23
  direction: ROS_TO_GZ
24
24
 
25
25
  # ---------------- odometry (GZ -> ROS) ----------------
26
- # Note: the gz-sim diff-drive system publishes <odom_topic> as a bare topic
27
- # (no /model/<name>/ prefix), unlike <topic> which DOES get prefixed.
26
+ # Prefer OdometryWithCovariance from the OdometryPublisher system (see
27
+ # model.sdf). Humble ros_gz_bridge historically failed to convert bare
28
+ # gz.msgs.Odometry from DiffDrive; covariance messages map cleanly to
29
+ # nav_msgs/Odometry. DiffDrive still publishes /odometry + /tf for TF.
28
30
  - ros_topic_name: "/odom"
29
- gz_topic_name: "/odometry"
31
+ gz_topic_name: "/odometry_with_covariance"
30
32
  ros_type_name: "nav_msgs/msg/Odometry"
31
- gz_type_name: "gz.msgs.Odometry"
33
+ gz_type_name: "gz.msgs.OdometryWithCovariance"
32
34
  direction: GZ_TO_ROS
33
35
 
34
36
  # ---------------- /tf (GZ -> ROS) ----------------
@@ -0,0 +1,320 @@
1
+ # Nav2 parameters for agenticros_amr in Gazebo (agenticros_indoor world).
2
+ # Tuned for a ~0.40 x 0.30 m diff-drive footprint, /scan lidar, /cmd_vel,
3
+ # and use_sim_time. Used by launch/sim_amr_nav2.launch.py.
4
+
5
+ amcl:
6
+ ros__parameters:
7
+ use_sim_time: true
8
+ alpha1: 0.2
9
+ alpha2: 0.2
10
+ alpha3: 0.2
11
+ alpha4: 0.2
12
+ alpha5: 0.2
13
+ base_frame_id: base_footprint
14
+ beam_skip_distance: 0.5
15
+ beam_skip_error_threshold: 0.9
16
+ beam_skip_threshold: 0.3
17
+ do_beamskip: false
18
+ global_frame_id: map
19
+ lambda_short: 0.1
20
+ laser_likelihood_max_dist: 2.0
21
+ laser_max_range: 12.0
22
+ laser_min_range: 0.12
23
+ laser_model_type: likelihood_field
24
+ max_beams: 60
25
+ max_particles: 2000
26
+ min_particles: 500
27
+ odom_frame_id: odom
28
+ pf_err: 0.05
29
+ pf_z: 0.99
30
+ recovery_alpha_fast: 0.0
31
+ recovery_alpha_slow: 0.0
32
+ resample_interval: 1
33
+ robot_model_type: nav2_amcl::DifferentialMotionModel
34
+ save_pose_rate: 0.5
35
+ sigma_hit: 0.2
36
+ tf_broadcast: true
37
+ transform_tolerance: 1.0
38
+ update_min_a: 0.2
39
+ update_min_d: 0.25
40
+ z_hit: 0.5
41
+ z_max: 0.05
42
+ z_rand: 0.5
43
+ z_short: 0.05
44
+ scan_topic: scan
45
+ set_initial_pose: true
46
+ initial_pose:
47
+ x: 0.0
48
+ y: 0.0
49
+ z: 0.0
50
+ yaw: 0.0
51
+
52
+ bt_navigator:
53
+ ros__parameters:
54
+ use_sim_time: true
55
+ global_frame: map
56
+ robot_base_frame: base_footprint
57
+ odom_topic: /odom
58
+ bt_loop_duration: 10
59
+ default_server_timeout: 20
60
+ wait_for_service_timeout: 1000
61
+ plugin_lib_names:
62
+ - nav2_compute_path_to_pose_action_bt_node
63
+ - nav2_compute_path_through_poses_action_bt_node
64
+ - nav2_smooth_path_action_bt_node
65
+ - nav2_follow_path_action_bt_node
66
+ - nav2_spin_action_bt_node
67
+ - nav2_wait_action_bt_node
68
+ - nav2_assisted_teleop_action_bt_node
69
+ - nav2_back_up_action_bt_node
70
+ - nav2_drive_on_heading_bt_node
71
+ - nav2_clear_costmap_service_bt_node
72
+ - nav2_is_stuck_condition_bt_node
73
+ - nav2_goal_reached_condition_bt_node
74
+ - nav2_goal_updated_condition_bt_node
75
+ - nav2_globally_updated_goal_condition_bt_node
76
+ - nav2_is_path_valid_condition_bt_node
77
+ - nav2_initial_pose_received_condition_bt_node
78
+ - nav2_reinitialize_global_localization_service_bt_node
79
+ - nav2_rate_controller_bt_node
80
+ - nav2_distance_controller_bt_node
81
+ - nav2_speed_controller_bt_node
82
+ - nav2_truncate_path_action_bt_node
83
+ - nav2_truncate_path_local_action_bt_node
84
+ - nav2_goal_updater_node_bt_node
85
+ - nav2_recovery_node_bt_node
86
+ - nav2_pipeline_sequence_bt_node
87
+ - nav2_round_robin_node_bt_node
88
+ - nav2_transform_available_condition_bt_node
89
+ - nav2_time_expired_condition_bt_node
90
+ - nav2_path_expiring_timer_condition
91
+ - nav2_distance_traveled_condition_bt_node
92
+ - nav2_single_trigger_bt_node
93
+ - nav2_goal_updated_controller_bt_node
94
+ - nav2_is_battery_low_condition_bt_node
95
+ - nav2_navigate_through_poses_action_bt_node
96
+ - nav2_navigate_to_pose_action_bt_node
97
+ - nav2_remove_passed_goals_action_bt_node
98
+ - nav2_planner_selector_bt_node
99
+ - nav2_controller_selector_bt_node
100
+ - nav2_goal_checker_selector_bt_node
101
+ - nav2_controller_cancel_bt_node
102
+ - nav2_path_longer_on_approach_bt_node
103
+ - nav2_wait_cancel_bt_node
104
+ - nav2_spin_cancel_bt_node
105
+ - nav2_back_up_cancel_bt_node
106
+ - nav2_assisted_teleop_cancel_bt_node
107
+ - nav2_drive_on_heading_cancel_bt_node
108
+ - nav2_is_battery_charging_condition_bt_node
109
+
110
+ bt_navigator_navigate_through_poses_rclcpp_node:
111
+ ros__parameters:
112
+ use_sim_time: true
113
+
114
+ bt_navigator_navigate_to_pose_rclcpp_node:
115
+ ros__parameters:
116
+ use_sim_time: true
117
+
118
+ controller_server:
119
+ ros__parameters:
120
+ use_sim_time: true
121
+ controller_frequency: 20.0
122
+ min_x_velocity_threshold: 0.001
123
+ min_y_velocity_threshold: 0.5
124
+ min_theta_velocity_threshold: 0.001
125
+ failure_tolerance: 0.3
126
+ progress_checker_plugin: progress_checker
127
+ goal_checker_plugins: [general_goal_checker]
128
+ controller_plugins: [FollowPath]
129
+ progress_checker:
130
+ plugin: nav2_controller::SimpleProgressChecker
131
+ required_movement_radius: 0.5
132
+ movement_time_allowance: 10.0
133
+ general_goal_checker:
134
+ stateful: true
135
+ plugin: nav2_controller::SimpleGoalChecker
136
+ xy_goal_tolerance: 0.25
137
+ yaw_goal_tolerance: 0.25
138
+ FollowPath:
139
+ plugin: nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController
140
+ desired_linear_vel: 0.35
141
+ lookahead_dist: 0.6
142
+ min_lookahead_dist: 0.3
143
+ max_lookahead_dist: 0.9
144
+ lookahead_time: 1.5
145
+ rotate_to_heading_angular_vel: 1.0
146
+ transform_tolerance: 0.1
147
+ use_velocity_scaled_lookahead_dist: false
148
+ min_approach_linear_velocity: 0.05
149
+ approach_velocity_scaling_dist: 0.6
150
+ use_collision_detection: true
151
+ max_allowed_time_to_collision_up_to_carrot: 1.0
152
+ use_regulated_linear_velocity_scaling: true
153
+ use_cost_regulated_linear_velocity_scaling: false
154
+ regulated_linear_scaling_min_radius: 0.9
155
+ regulated_linear_scaling_min_speed: 0.1
156
+ allow_reversing: false
157
+ use_rotate_to_heading: true
158
+ rotate_to_heading_min_angular_vel: 0.3
159
+ max_angular_accel: 2.0
160
+ max_robot_pose_search_dist: 10.0
161
+
162
+ local_costmap:
163
+ local_costmap:
164
+ ros__parameters:
165
+ use_sim_time: true
166
+ update_frequency: 5.0
167
+ publish_frequency: 2.0
168
+ global_frame: odom
169
+ robot_base_frame: base_footprint
170
+ rolling_window: true
171
+ width: 3
172
+ height: 3
173
+ resolution: 0.05
174
+ robot_radius: 0.28
175
+ plugins: [voxel_layer, inflation_layer]
176
+ inflation_layer:
177
+ plugin: nav2_costmap_2d::InflationLayer
178
+ cost_scaling_factor: 3.0
179
+ inflation_radius: 0.55
180
+ voxel_layer:
181
+ plugin: nav2_costmap_2d::VoxelLayer
182
+ enabled: true
183
+ publish_voxel_map: false
184
+ origin_z: 0.0
185
+ z_resolution: 0.05
186
+ z_voxels: 16
187
+ max_obstacle_height: 2.0
188
+ mark_threshold: 0
189
+ observation_sources: scan
190
+ scan:
191
+ topic: /scan
192
+ max_obstacle_height: 2.0
193
+ clearing: true
194
+ marking: true
195
+ data_type: LaserScan
196
+ raytrace_max_range: 3.0
197
+ raytrace_min_range: 0.0
198
+ obstacle_max_range: 2.5
199
+ obstacle_min_range: 0.0
200
+ always_send_full_costmap: true
201
+
202
+ global_costmap:
203
+ global_costmap:
204
+ ros__parameters:
205
+ use_sim_time: true
206
+ update_frequency: 1.0
207
+ publish_frequency: 1.0
208
+ global_frame: map
209
+ robot_base_frame: base_footprint
210
+ robot_radius: 0.28
211
+ resolution: 0.05
212
+ track_unknown_space: true
213
+ plugins: [static_layer, obstacle_layer, inflation_layer]
214
+ obstacle_layer:
215
+ plugin: nav2_costmap_2d::ObstacleLayer
216
+ enabled: true
217
+ observation_sources: scan
218
+ scan:
219
+ topic: /scan
220
+ max_obstacle_height: 2.0
221
+ clearing: true
222
+ marking: true
223
+ data_type: LaserScan
224
+ raytrace_max_range: 3.0
225
+ raytrace_min_range: 0.0
226
+ obstacle_max_range: 2.5
227
+ obstacle_min_range: 0.0
228
+ static_layer:
229
+ plugin: nav2_costmap_2d::StaticLayer
230
+ map_subscribe_transient_local: true
231
+ inflation_layer:
232
+ plugin: nav2_costmap_2d::InflationLayer
233
+ cost_scaling_factor: 3.0
234
+ inflation_radius: 0.55
235
+ always_send_full_costmap: true
236
+
237
+ map_server:
238
+ ros__parameters:
239
+ use_sim_time: true
240
+ yaml_filename: ""
241
+
242
+ map_saver:
243
+ ros__parameters:
244
+ use_sim_time: true
245
+ save_map_timeout: 5.0
246
+ free_thresh_default: 0.25
247
+ occupied_thresh_default: 0.65
248
+ map_subscribe_transient_local: true
249
+
250
+ planner_server:
251
+ ros__parameters:
252
+ use_sim_time: true
253
+ expected_planner_frequency: 20.0
254
+ planner_plugins: [GridBased]
255
+ GridBased:
256
+ plugin: nav2_navfn_planner/NavfnPlanner
257
+ tolerance: 0.5
258
+ use_astar: false
259
+ allow_unknown: true
260
+
261
+ smoother_server:
262
+ ros__parameters:
263
+ use_sim_time: true
264
+ smoother_plugins: [simple_smoother]
265
+ simple_smoother:
266
+ plugin: nav2_smoother::SimpleSmoother
267
+ tolerance: 1.0e-10
268
+ max_its: 1000
269
+ do_refinement: true
270
+
271
+ behavior_server:
272
+ ros__parameters:
273
+ use_sim_time: true
274
+ costmap_topic: local_costmap/costmap_raw
275
+ footprint_topic: local_costmap/published_footprint
276
+ cycle_frequency: 10.0
277
+ behavior_plugins: [spin, backup, drive_on_heading, assisted_teleop, wait]
278
+ spin:
279
+ plugin: nav2_behaviors/Spin
280
+ backup:
281
+ plugin: nav2_behaviors/BackUp
282
+ drive_on_heading:
283
+ plugin: nav2_behaviors/DriveOnHeading
284
+ wait:
285
+ plugin: nav2_behaviors/Wait
286
+ assisted_teleop:
287
+ plugin: nav2_behaviors/AssistedTeleop
288
+ global_frame: odom
289
+ robot_base_frame: base_footprint
290
+ transform_tolerance: 0.1
291
+ simulate_ahead_time: 2.0
292
+ max_rotational_vel: 1.0
293
+ min_rotational_vel: 0.4
294
+ rotational_acc_lim: 3.2
295
+
296
+ waypoint_follower:
297
+ ros__parameters:
298
+ use_sim_time: true
299
+ loop_rate: 20
300
+ stop_on_failure: false
301
+ waypoint_task_executor_plugin: wait_at_waypoint
302
+ wait_at_waypoint:
303
+ plugin: nav2_waypoint_follower::WaitAtWaypoint
304
+ enabled: true
305
+ waypoint_pause_duration: 200
306
+
307
+ velocity_smoother:
308
+ ros__parameters:
309
+ use_sim_time: true
310
+ smoothing_frequency: 20.0
311
+ scale_velocities: false
312
+ feedback: OPEN_LOOP
313
+ max_velocity: [0.5, 0.0, 1.5]
314
+ min_velocity: [-0.5, 0.0, -1.5]
315
+ max_accel: [1.0, 0.0, 2.0]
316
+ max_decel: [-1.0, 0.0, -2.0]
317
+ odom_topic: odom
318
+ odom_duration: 0.1
319
+ deadband_velocity: [0.0, 0.0, 0.0]
320
+ velocity_timeout: 1.0
@@ -0,0 +1,101 @@
1
+ """sim_amr_nav2.launch.py
2
+
3
+ Bring up Gazebo AMR sim + Nav2 (static map + AMCL + navigation stack).
4
+
5
+ Includes:
6
+ * agenticros_sim/sim_amr.launch.py (gz + bridge + robot_state_publisher)
7
+ * nav2_bringup/bringup_launch.py (map_server + amcl + controller/planner/bt)
8
+
9
+ Launch args (forwarded to sim_amr where applicable):
10
+ gui, use_rviz, use_sim_time, x, y, z, yaw
11
+ map — occupancy grid YAML (default: maps/agenticros_indoor.yaml)
12
+ params_file — Nav2 params (default: config/nav2_params.yaml)
13
+ autostart — lifecycle autostart (default true)
14
+
15
+ Examples:
16
+ ros2 launch agenticros_sim sim_amr_nav2.launch.py gui:=false
17
+ ros2 launch agenticros_sim sim_amr_nav2.launch.py use_rviz:=true
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import os
23
+
24
+ from ament_index_python.packages import get_package_share_directory
25
+ from launch import LaunchDescription
26
+ from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
27
+ from launch.launch_description_sources import PythonLaunchDescriptionSource
28
+ from launch.substitutions import LaunchConfiguration
29
+
30
+
31
+ PKG_NAME = "agenticros_sim"
32
+
33
+
34
+ def generate_launch_description() -> LaunchDescription:
35
+ pkg_share = get_package_share_directory(PKG_NAME)
36
+ default_map = os.path.join(pkg_share, "maps", "agenticros_indoor.yaml")
37
+ default_params = os.path.join(pkg_share, "config", "nav2_params.yaml")
38
+ sim_amr_launch = os.path.join(pkg_share, "launch", "sim_amr.launch.py")
39
+ nav2_bringup = get_package_share_directory("nav2_bringup")
40
+ bringup_launch = os.path.join(nav2_bringup, "launch", "bringup_launch.py")
41
+
42
+ gui_arg = DeclareLaunchArgument("gui", default_value="true")
43
+ use_rviz_arg = DeclareLaunchArgument("use_rviz", default_value="false")
44
+ use_sim_time_arg = DeclareLaunchArgument("use_sim_time", default_value="true")
45
+ x_arg = DeclareLaunchArgument("x", default_value="0.0")
46
+ y_arg = DeclareLaunchArgument("y", default_value="0.0")
47
+ z_arg = DeclareLaunchArgument("z", default_value="0.1")
48
+ yaw_arg = DeclareLaunchArgument("yaw", default_value="0.0")
49
+ map_arg = DeclareLaunchArgument("map", default_value=default_map)
50
+ params_arg = DeclareLaunchArgument("params_file", default_value=default_params)
51
+ autostart_arg = DeclareLaunchArgument("autostart", default_value="true")
52
+
53
+ sim = IncludeLaunchDescription(
54
+ PythonLaunchDescriptionSource(sim_amr_launch),
55
+ launch_arguments={
56
+ "gui": LaunchConfiguration("gui"),
57
+ "use_rviz": LaunchConfiguration("use_rviz"),
58
+ "use_sim_time": LaunchConfiguration("use_sim_time"),
59
+ "x": LaunchConfiguration("x"),
60
+ "y": LaunchConfiguration("y"),
61
+ "z": LaunchConfiguration("z"),
62
+ "yaw": LaunchConfiguration("yaw"),
63
+ }.items(),
64
+ )
65
+
66
+ # slam:=False → localization_launch (map_server + amcl) + navigation_launch
67
+ nav2 = IncludeLaunchDescription(
68
+ PythonLaunchDescriptionSource(bringup_launch),
69
+ launch_arguments={
70
+ "slam": "False",
71
+ "map": LaunchConfiguration("map"),
72
+ "use_sim_time": LaunchConfiguration("use_sim_time"),
73
+ "params_file": LaunchConfiguration("params_file"),
74
+ "autostart": LaunchConfiguration("autostart"),
75
+ "use_composition": "False",
76
+ "use_respawn": "False",
77
+ }.items(),
78
+ )
79
+
80
+ # Remap Nav2's default cmd_vel if velocity_smoother is in the graph —
81
+ # our bridge listens on /cmd_vel. bringup already uses /cmd_vel by default
82
+ # for the controller; keep a no-op note via a tiny static transform wait
83
+ # is unnecessary. Publish map→odom is AMCL's job once initial pose is set
84
+ # (set_initial_pose: true in nav2_params.yaml).
85
+
86
+ return LaunchDescription(
87
+ [
88
+ gui_arg,
89
+ use_rviz_arg,
90
+ use_sim_time_arg,
91
+ x_arg,
92
+ y_arg,
93
+ z_arg,
94
+ yaw_arg,
95
+ map_arg,
96
+ params_arg,
97
+ autostart_arg,
98
+ sim,
99
+ nav2,
100
+ ]
101
+ )
@@ -0,0 +1,7 @@
1
+ image: agenticros_indoor.pgm
2
+ mode: trinary
3
+ resolution: 0.05
4
+ origin: [-6.0, -6.0, 0.0]
5
+ negate: 0
6
+ occupied_thresh: 0.65
7
+ free_thresh: 0.25
@@ -221,11 +221,28 @@
221
221
  <odom_topic>odometry</odom_topic>
222
222
  <tf_topic>tf</tf_topic>
223
223
  <frame_id>odom</frame_id>
224
- <child_frame_id>base_link</child_frame_id>
224
+ <child_frame_id>base_footprint</child_frame_id>
225
225
  <max_linear_acceleration>1.0</max_linear_acceleration>
226
226
  <max_angular_acceleration>2.0</max_angular_acceleration>
227
227
  </plugin>
228
228
 
229
+ <!--
230
+ Odometry with covariance for ros_gz_bridge on Humble/Jazzy.
231
+ DiffDrive publishes bare gz.msgs.Odometry on /odometry; some Humble
232
+ bridge builds only convert OdometryWithCovariance reliably to
233
+ nav_msgs/Odometry. TF stays on DiffDrive (tf_topic below is unused).
234
+ -->
235
+ <plugin
236
+ filename="gz-sim-odometry-publisher-system"
237
+ name="gz::sim::systems::OdometryPublisher">
238
+ <odom_frame>odom</odom_frame>
239
+ <robot_base_frame>base_footprint</robot_base_frame>
240
+ <odom_topic>odometry</odom_topic>
241
+ <odom_covariance_topic>odometry_with_covariance</odom_covariance_topic>
242
+ <tf_topic>odometry_publisher_tf_unused</tf_topic>
243
+ <dimensions>2</dimensions>
244
+ </plugin>
245
+
229
246
  <plugin filename="gz-sim-joint-state-publisher-system" name="gz::sim::systems::JointStatePublisher">
230
247
  <topic>joint_states</topic>
231
248
  </plugin>
@@ -6,8 +6,9 @@
6
6
  <description>
7
7
  AgenticROS Gazebo Harmonic simulation assets: indoor world, 2-wheel AMR
8
8
  model (depth camera + GPU lidar + IMU), ros_gz_bridge config that exposes
9
- topics on AgenticROS' real-robot topic names, and a launch file that wires
10
- it all together. Use with the agenticros CLI: agenticros up sim-amr.
9
+ topics on AgenticROS real-robot topic names, Nav2 bringup for the indoor
10
+ map (sim_amr_nav2.launch.py), and launch files that wire it all together.
11
+ Use with the agenticros CLI: agenticros up sim-amr [--nav2].
11
12
  </description>
12
13
  <maintainer email="hello@plaipin.com">PlaiPin</maintainer>
13
14
  <license>Apache-2.0</license>
@@ -20,6 +21,18 @@
20
21
  <exec_depend>robot_state_publisher</exec_depend>
21
22
  <exec_depend>xacro</exec_depend>
22
23
  <exec_depend>rviz2</exec_depend>
24
+ <!-- Optional Nav2 stack (sim_amr_nav2.launch.py / agenticros up sim-amr with nav2) -->
25
+ <exec_depend>nav2_bringup</exec_depend>
26
+ <exec_depend>nav2_bt_navigator</exec_depend>
27
+ <exec_depend>nav2_amcl</exec_depend>
28
+ <exec_depend>nav2_map_server</exec_depend>
29
+ <exec_depend>nav2_controller</exec_depend>
30
+ <exec_depend>nav2_planner</exec_depend>
31
+ <exec_depend>nav2_behaviors</exec_depend>
32
+ <exec_depend>nav2_smoother</exec_depend>
33
+ <exec_depend>nav2_waypoint_follower</exec_depend>
34
+ <exec_depend>nav2_velocity_smoother</exec_depend>
35
+ <exec_depend>nav2_lifecycle_manager</exec_depend>
23
36
 
24
37
  <export>
25
38
  <build_type>ament_cmake</build_type>
@@ -19,6 +19,15 @@
19
19
  -->
20
20
  <robot name="agenticros_amr" xmlns:xacro="http://www.ros.org/wiki/xacro">
21
21
 
22
+ <!-- ===================== base_footprint (Nav2 / costmap convention) ===================== -->
23
+ <link name="base_footprint"/>
24
+ <joint name="base_footprint_joint" type="fixed">
25
+ <parent link="base_footprint"/>
26
+ <child link="base_link"/>
27
+ <!-- base_link visual origin is chassis center ~0.10 m above ground -->
28
+ <origin xyz="0 0 0.10" rpy="0 0 0"/>
29
+ </joint>
30
+
22
31
  <!-- ===================== base_link ===================== -->
23
32
  <link name="base_link">
24
33
  <visual>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -7,13 +7,14 @@
7
7
  # tees output to /tmp/agenticros-sim.log so `agenticros logs sim` works.
8
8
  #
9
9
  # Usage:
10
- # run_sim.sh --robot amr [--namespace sim_robot] [--rviz] [--no-gui]
10
+ # run_sim.sh --robot amr [--namespace sim_robot] [--rviz] [--no-gui] [--nav2]
11
11
  #
12
12
  # Flags:
13
13
  # --robot amr|arm Which sim launch to start (default: amr).
14
14
  # --namespace <ns> Robot namespace; exported as AGENTICROS_ROBOT_NAMESPACE.
15
15
  # --rviz Bring up RViz alongside Gazebo.
16
16
  # --no-gui Run gz-sim headless (CI / docker).
17
+ # --nav2 AMR only: also launch Nav2 (map + AMCL + navigation).
17
18
  # --ros-distro <distro> Override ROS 2 distro (auto-detect by default).
18
19
  # --colcon-ws <path> Override the colcon workspace (default: <repo>/ros2_ws).
19
20
  # --help Print this help and exit.
@@ -34,6 +35,7 @@ ROBOT="amr"
34
35
  NAMESPACE=""
35
36
  USE_RVIZ="false"
36
37
  GUI="true"
38
+ USE_NAV2="false"
37
39
  ROS_DISTRO_OVERRIDE=""
38
40
  COLCON_WS=""
39
41
 
@@ -43,10 +45,11 @@ while [[ $# -gt 0 ]]; do
43
45
  --namespace) NAMESPACE="$2"; shift 2 ;;
44
46
  --rviz) USE_RVIZ="true"; shift ;;
45
47
  --no-gui) GUI="false"; shift ;;
48
+ --nav2) USE_NAV2="true"; shift ;;
46
49
  --ros-distro) ROS_DISTRO_OVERRIDE="$2"; shift 2 ;;
47
50
  --colcon-ws) COLCON_WS="$2"; shift 2 ;;
48
51
  -h|--help)
49
- sed -n '2,24p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
52
+ sed -n '2,26p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
50
53
  exit 0 ;;
51
54
  *) echo "Unknown arg: $1" >&2; exit 2 ;;
52
55
  esac
@@ -57,6 +60,11 @@ if [[ "$ROBOT" != "amr" && "$ROBOT" != "arm" ]]; then
57
60
  exit 2
58
61
  fi
59
62
 
63
+ if [[ "$USE_NAV2" == "true" && "$ROBOT" != "amr" ]]; then
64
+ echo "--nav2 is only supported with --robot amr" >&2
65
+ exit 2
66
+ fi
67
+
60
68
  # ---------- paths ----------
61
69
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
62
70
  REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
@@ -85,7 +93,7 @@ fi
85
93
 
86
94
  log "ROS_DISTRO=$ROS_DISTRO"
87
95
  log "COLCON_WS=$COLCON_WS"
88
- log "robot=$ROBOT namespace=${NAMESPACE:-<none>} rviz=$USE_RVIZ gui=$GUI"
96
+ log "robot=$ROBOT namespace=${NAMESPACE:-<none>} rviz=$USE_RVIZ gui=$GUI nav2=$USE_NAV2"
89
97
 
90
98
  # shellcheck disable=SC1090
91
99
  source "/opt/ros/$ROS_DISTRO/setup.bash"
@@ -145,10 +153,23 @@ LAUNCH_ARGS=(
145
153
 
146
154
  # ---------- Pick launch file ----------
147
155
  case "$ROBOT" in
148
- amr) LAUNCH_FILE="sim_amr.launch.py" ;;
149
- arm) LAUNCH_FILE="sim_arm.launch.py" ;; # Phase 3
156
+ amr)
157
+ if [[ "$USE_NAV2" == "true" ]]; then
158
+ LAUNCH_FILE="sim_amr_nav2.launch.py"
159
+ else
160
+ LAUNCH_FILE="sim_amr.launch.py"
161
+ fi
162
+ ;;
163
+ arm) LAUNCH_FILE="sim_arm.launch.py" ;;
150
164
  esac
151
165
 
166
+ if [[ "$USE_NAV2" == "true" ]]; then
167
+ if ! ros2 pkg prefix nav2_bringup >/dev/null 2>&1; then
168
+ err "nav2_bringup not found. Install: sudo apt install ros-\$ROS_DISTRO-nav2-bringup"
169
+ exit 1
170
+ fi
171
+ fi
172
+
152
173
  if ! ros2 launch --help >/dev/null 2>&1; then
153
174
  err "ros2 launch not available — is ROS sourced properly?"
154
175
  exit 1
File without changes
File without changes
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Smoke-test Nav2 against sim-amr (--nav2).
4
+ *
5
+ * Prerequisites (already running):
6
+ * agenticros up sim-amr --nav2 --headless
7
+ * npx agenticros skills install @agenticros/navigate-to
8
+ *
9
+ * Sequence:
10
+ * 1. list topics / capabilities (sanity)
11
+ * 2. run_mission navigate_to → {x: 2.0, y: 1.0} (clear of person at 2.5,0)
12
+ * 3. report success / failure
13
+ *
14
+ * Usage (from repo root, after building MCP server):
15
+ * node scripts/test-navigate-sim.mjs
16
+ */
17
+
18
+ import { spawn } from "node:child_process";
19
+ import { fileURLToPath } from "node:url";
20
+ import { dirname, join, resolve } from "node:path";
21
+
22
+ const __dirname = dirname(fileURLToPath(import.meta.url));
23
+ const repoRoot = resolve(__dirname, "..");
24
+ const serverDist = join(repoRoot, "packages/agenticros-claude-code/dist/index.js");
25
+
26
+ const GOAL = { x: 2.0, y: 1.0, yaw: 0.0 };
27
+ const MISSION_TIMEOUT_MS = 120_000;
28
+
29
+ const child = spawn(process.execPath, [serverDist], {
30
+ stdio: ["pipe", "pipe", "pipe"],
31
+ env: {
32
+ ...process.env,
33
+ // Sim publishes at graph root; empty namespace.
34
+ AGENTICROS_ROBOT_NAMESPACE: process.env.AGENTICROS_ROBOT_NAMESPACE ?? "",
35
+ AGENTICROS_USE_SIM_TIME: process.env.AGENTICROS_USE_SIM_TIME ?? "1",
36
+ },
37
+ });
38
+
39
+ child.stderr.on("data", (d) => {
40
+ process.stderr.write(`[mcp-stderr] ${d}`);
41
+ });
42
+
43
+ let nextId = 1;
44
+ const pending = new Map();
45
+ let buf = "";
46
+
47
+ child.stdout.on("data", (chunk) => {
48
+ buf += chunk.toString();
49
+ let nl;
50
+ while ((nl = buf.indexOf("\n")) !== -1) {
51
+ const line = buf.slice(0, nl).trim();
52
+ buf = buf.slice(nl + 1);
53
+ if (!line) continue;
54
+ let msg;
55
+ try {
56
+ msg = JSON.parse(line);
57
+ } catch {
58
+ continue;
59
+ }
60
+ if (msg.id !== undefined && pending.has(msg.id)) {
61
+ const { resolve: res, reject } = pending.get(msg.id);
62
+ pending.delete(msg.id);
63
+ if (msg.error) reject(new Error(msg.error.message));
64
+ else res(msg.result);
65
+ }
66
+ }
67
+ });
68
+
69
+ function rpc(method, params = {}, timeoutMs = 30000) {
70
+ const id = nextId++;
71
+ return new Promise((resolveOuter, reject) => {
72
+ const t = setTimeout(() => {
73
+ pending.delete(id);
74
+ reject(new Error(`Timeout: ${method}`));
75
+ }, timeoutMs);
76
+ pending.set(id, {
77
+ resolve: (v) => {
78
+ clearTimeout(t);
79
+ resolveOuter(v);
80
+ },
81
+ reject: (e) => {
82
+ clearTimeout(t);
83
+ reject(e);
84
+ },
85
+ });
86
+ child.stdin.write(JSON.stringify({ jsonrpc: "2.0", id, method, params }) + "\n");
87
+ });
88
+ }
89
+
90
+ function pickText(result) {
91
+ return result?.content?.map((c) => c.text ?? "").join("\n") ?? "";
92
+ }
93
+
94
+ async function main() {
95
+ console.log("=== navigate_to (sim-amr + Nav2) smoke ===");
96
+ console.log(`Goal: (${GOAL.x}, ${GOAL.y}, yaw=${GOAL.yaw})`);
97
+
98
+ await rpc("initialize", {
99
+ protocolVersion: "2024-11-05",
100
+ capabilities: { tools: {} },
101
+ clientInfo: { name: "nav-e2e", version: "0.0.1" },
102
+ });
103
+ await rpc("notifications/initialized", {}).catch(() => {});
104
+
105
+ console.log("\n-- ros2_list_topics (expect /odom, /scan, /cmd_vel) --");
106
+ const topics = await rpc("tools/call", { name: "ros2_list_topics", arguments: {} });
107
+ const topicText = pickText(topics);
108
+ console.log(topicText.slice(0, 800));
109
+ for (const t of ["/odom", "/scan", "/cmd_vel"]) {
110
+ if (!topicText.includes(t)) {
111
+ console.warn(`WARN: expected topic ${t} not listed — is sim-amr --nav2 running?`);
112
+ }
113
+ }
114
+
115
+ console.log("\n-- ros2_list_capabilities (expect navigate_to) --");
116
+ const caps = await rpc("tools/call", {
117
+ name: "ros2_list_capabilities",
118
+ arguments: {},
119
+ }).catch((e) => ({ content: [{ text: String(e) }] }));
120
+ const capText = pickText(caps);
121
+ console.log(capText.slice(0, 800));
122
+ if (!capText.includes("navigate_to")) {
123
+ console.warn(
124
+ "WARN: navigate_to not in capabilities — install @agenticros/navigate-to and restart MCP.",
125
+ );
126
+ }
127
+
128
+ console.log("\n-- run_mission navigate_to --");
129
+ const mission = await rpc(
130
+ "tools/call",
131
+ {
132
+ name: "run_mission",
133
+ arguments: {
134
+ steps: [
135
+ {
136
+ capability: "navigate_to",
137
+ inputs: GOAL,
138
+ },
139
+ ],
140
+ },
141
+ },
142
+ MISSION_TIMEOUT_MS,
143
+ );
144
+ const missionText = pickText(mission);
145
+ console.log(missionText);
146
+
147
+ const ok =
148
+ /succeed|completed|status["']?\s*[:=]\s*["']?succeeded/i.test(missionText) &&
149
+ !/fail|error|abort/i.test(missionText.split("\n").slice(-5).join("\n"));
150
+
151
+ child.kill("SIGTERM");
152
+ if (ok) {
153
+ console.log("\n=== PASS ===");
154
+ process.exit(0);
155
+ }
156
+ console.error("\n=== FAIL (inspect mission output above) ===");
157
+ process.exit(1);
158
+ }
159
+
160
+ main().catch((e) => {
161
+ console.error("Failed:", e);
162
+ child.kill("SIGKILL");
163
+ process.exit(1);
164
+ });
File without changes
File without changes