agenticros 0.0.1 → 0.1.1

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 (330) hide show
  1. package/LICENSE +192 -0
  2. package/README.md +90 -4
  3. package/dist/commands/config.d.ts +20 -0
  4. package/dist/commands/config.d.ts.map +1 -0
  5. package/dist/commands/config.js +179 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/doctor.d.ts +33 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +232 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/down.d.ts +15 -0
  12. package/dist/commands/down.d.ts.map +1 -0
  13. package/dist/commands/down.js +91 -0
  14. package/dist/commands/down.js.map +1 -0
  15. package/dist/commands/init.d.ts +21 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +259 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/logs.d.ts +18 -0
  20. package/dist/commands/logs.d.ts.map +1 -0
  21. package/dist/commands/logs.js +67 -0
  22. package/dist/commands/logs.js.map +1 -0
  23. package/dist/commands/status.d.ts +12 -0
  24. package/dist/commands/status.d.ts.map +1 -0
  25. package/dist/commands/status.js +56 -0
  26. package/dist/commands/status.js.map +1 -0
  27. package/dist/commands/up.d.ts +20 -0
  28. package/dist/commands/up.d.ts.map +1 -0
  29. package/dist/commands/up.js +70 -0
  30. package/dist/commands/up.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +107 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/menu.d.ts +9 -0
  36. package/dist/menu.d.ts.map +1 -0
  37. package/dist/menu.js +96 -0
  38. package/dist/menu.js.map +1 -0
  39. package/dist/runners/real-robot.d.ts +15 -0
  40. package/dist/runners/real-robot.d.ts.map +1 -0
  41. package/dist/runners/real-robot.js +46 -0
  42. package/dist/runners/real-robot.js.map +1 -0
  43. package/dist/runners/sim.d.ts +19 -0
  44. package/dist/runners/sim.d.ts.map +1 -0
  45. package/dist/runners/sim.js +53 -0
  46. package/dist/runners/sim.js.map +1 -0
  47. package/dist/util/env.d.ts +24 -0
  48. package/dist/util/env.d.ts.map +1 -0
  49. package/dist/util/env.js +53 -0
  50. package/dist/util/env.js.map +1 -0
  51. package/dist/util/logger.d.ts +24 -0
  52. package/dist/util/logger.d.ts.map +1 -0
  53. package/dist/util/logger.js +62 -0
  54. package/dist/util/logger.js.map +1 -0
  55. package/dist/util/paths.d.ts +57 -0
  56. package/dist/util/paths.d.ts.map +1 -0
  57. package/dist/util/paths.js +132 -0
  58. package/dist/util/paths.js.map +1 -0
  59. package/dist/util/pidfile.d.ts +16 -0
  60. package/dist/util/pidfile.d.ts.map +1 -0
  61. package/dist/util/pidfile.js +63 -0
  62. package/dist/util/pidfile.js.map +1 -0
  63. package/dist/util/state.d.ts +26 -0
  64. package/dist/util/state.d.ts.map +1 -0
  65. package/dist/util/state.js +55 -0
  66. package/dist/util/state.js.map +1 -0
  67. package/package.json +60 -1
  68. package/runtime/BUNDLE.json +11 -0
  69. package/runtime/LICENSE +192 -0
  70. package/runtime/README.md +273 -0
  71. package/runtime/docs/architecture.md +366 -0
  72. package/runtime/docs/cli.md +140 -0
  73. package/runtime/docs/memory.md +292 -0
  74. package/runtime/docs/robot-setup.md +347 -0
  75. package/runtime/package.json +28 -0
  76. package/runtime/packages/agenticros/agenticros-agenticros-0.0.1.tgz +0 -0
  77. package/runtime/packages/agenticros/openclaw.plugin.json +451 -0
  78. package/runtime/packages/agenticros/package.json +41 -0
  79. package/runtime/packages/agenticros/src/camera-snapshot-cache.ts +59 -0
  80. package/runtime/packages/agenticros/src/camera-snapshot-routes.ts +44 -0
  81. package/runtime/packages/agenticros/src/commands/estop.ts +41 -0
  82. package/runtime/packages/agenticros/src/commands/transport.ts +195 -0
  83. package/runtime/packages/agenticros/src/config-file.ts +136 -0
  84. package/runtime/packages/agenticros/src/config-page.ts +498 -0
  85. package/runtime/packages/agenticros/src/context/robot-context.ts +373 -0
  86. package/runtime/packages/agenticros/src/depth.ts +313 -0
  87. package/runtime/packages/agenticros/src/describer.ts +157 -0
  88. package/runtime/packages/agenticros/src/image-binary-trim.ts +16 -0
  89. package/runtime/packages/agenticros/src/index.ts +85 -0
  90. package/runtime/packages/agenticros/src/landing-page.ts +38 -0
  91. package/runtime/packages/agenticros/src/memory.ts +44 -0
  92. package/runtime/packages/agenticros/src/plugin-api.ts +173 -0
  93. package/runtime/packages/agenticros/src/plugin-image-base64.ts +69 -0
  94. package/runtime/packages/agenticros/src/preflight.ts +110 -0
  95. package/runtime/packages/agenticros/src/routes.ts +328 -0
  96. package/runtime/packages/agenticros/src/safety/validator.ts +43 -0
  97. package/runtime/packages/agenticros/src/service.ts +359 -0
  98. package/runtime/packages/agenticros/src/skill-api.ts +65 -0
  99. package/runtime/packages/agenticros/src/skill-loader.ts +146 -0
  100. package/runtime/packages/agenticros/src/teleop/page.ts +498 -0
  101. package/runtime/packages/agenticros/src/teleop/routes.ts +650 -0
  102. package/runtime/packages/agenticros/src/tools/index.ts +26 -0
  103. package/runtime/packages/agenticros/src/tools/ros2-action.ts +50 -0
  104. package/runtime/packages/agenticros/src/tools/ros2-camera.ts +221 -0
  105. package/runtime/packages/agenticros/src/tools/ros2-depth-distance.ts +58 -0
  106. package/runtime/packages/agenticros/src/tools/ros2-introspect.ts +62 -0
  107. package/runtime/packages/agenticros/src/tools/ros2-memory.ts +158 -0
  108. package/runtime/packages/agenticros/src/tools/ros2-param.ts +87 -0
  109. package/runtime/packages/agenticros/src/tools/ros2-publish.ts +52 -0
  110. package/runtime/packages/agenticros/src/tools/ros2-service.ts +46 -0
  111. package/runtime/packages/agenticros/src/tools/ros2-subscribe.ts +71 -0
  112. package/runtime/packages/agenticros/tsconfig.json +9 -0
  113. package/runtime/packages/agenticros-claude-code/README.md +260 -0
  114. package/runtime/packages/agenticros-claude-code/config.example.json +9 -0
  115. package/runtime/packages/agenticros-claude-code/dist/config.d.ts +8 -0
  116. package/runtime/packages/agenticros-claude-code/dist/config.d.ts.map +1 -0
  117. package/runtime/packages/agenticros-claude-code/dist/config.js +93 -0
  118. package/runtime/packages/agenticros-claude-code/dist/config.js.map +1 -0
  119. package/runtime/packages/agenticros-claude-code/dist/depth.d.ts +20 -0
  120. package/runtime/packages/agenticros-claude-code/dist/depth.d.ts.map +1 -0
  121. package/runtime/packages/agenticros-claude-code/dist/depth.js +126 -0
  122. package/runtime/packages/agenticros-claude-code/dist/depth.js.map +1 -0
  123. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.d.ts +6 -0
  124. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.d.ts.map +1 -0
  125. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.js +36 -0
  126. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.js.map +1 -0
  127. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.d.ts +33 -0
  128. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.d.ts.map +1 -0
  129. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.js +134 -0
  130. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.js.map +1 -0
  131. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.d.ts +43 -0
  132. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.d.ts.map +1 -0
  133. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.js +73 -0
  134. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.js.map +1 -0
  135. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.d.ts +58 -0
  136. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.d.ts.map +1 -0
  137. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.js +251 -0
  138. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.js.map +1 -0
  139. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.d.ts +61 -0
  140. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.d.ts.map +1 -0
  141. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.js +268 -0
  142. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.js.map +1 -0
  143. package/runtime/packages/agenticros-claude-code/dist/index.d.ts +3 -0
  144. package/runtime/packages/agenticros-claude-code/dist/index.d.ts.map +1 -0
  145. package/runtime/packages/agenticros-claude-code/dist/index.js +111 -0
  146. package/runtime/packages/agenticros-claude-code/dist/index.js.map +1 -0
  147. package/runtime/packages/agenticros-claude-code/dist/memory.d.ts +17 -0
  148. package/runtime/packages/agenticros-claude-code/dist/memory.d.ts.map +1 -0
  149. package/runtime/packages/agenticros-claude-code/dist/memory.js +44 -0
  150. package/runtime/packages/agenticros-claude-code/dist/memory.js.map +1 -0
  151. package/runtime/packages/agenticros-claude-code/dist/safety.d.ts +10 -0
  152. package/runtime/packages/agenticros-claude-code/dist/safety.d.ts.map +1 -0
  153. package/runtime/packages/agenticros-claude-code/dist/safety.js +34 -0
  154. package/runtime/packages/agenticros-claude-code/dist/safety.js.map +1 -0
  155. package/runtime/packages/agenticros-claude-code/dist/tools.d.ts +36 -0
  156. package/runtime/packages/agenticros-claude-code/dist/tools.d.ts.map +1 -0
  157. package/runtime/packages/agenticros-claude-code/dist/tools.js +777 -0
  158. package/runtime/packages/agenticros-claude-code/dist/tools.js.map +1 -0
  159. package/runtime/packages/agenticros-claude-code/dist/transport.d.ts +17 -0
  160. package/runtime/packages/agenticros-claude-code/dist/transport.d.ts.map +1 -0
  161. package/runtime/packages/agenticros-claude-code/dist/transport.js +46 -0
  162. package/runtime/packages/agenticros-claude-code/dist/transport.js.map +1 -0
  163. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.d.ts +42 -0
  164. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.d.ts.map +1 -0
  165. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.js +114 -0
  166. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.js.map +1 -0
  167. package/runtime/packages/agenticros-claude-code/package.json +29 -0
  168. package/runtime/packages/agenticros-claude-code/src/config.ts +96 -0
  169. package/runtime/packages/agenticros-claude-code/src/depth.ts +173 -0
  170. package/runtime/packages/agenticros-claude-code/src/find-object/coco-classes.ts +38 -0
  171. package/runtime/packages/agenticros-claude-code/src/find-object/find-object.ts +190 -0
  172. package/runtime/packages/agenticros-claude-code/src/follow-me/controller.ts +109 -0
  173. package/runtime/packages/agenticros-claude-code/src/follow-me/depth-loop.ts +420 -0
  174. package/runtime/packages/agenticros-claude-code/src/follow-me/detector.ts +303 -0
  175. package/runtime/packages/agenticros-claude-code/src/follow-me/loop.ts +330 -0
  176. package/runtime/packages/agenticros-claude-code/src/index.ts +125 -0
  177. package/runtime/packages/agenticros-claude-code/src/memory.ts +51 -0
  178. package/runtime/packages/agenticros-claude-code/src/safety.ts +44 -0
  179. package/runtime/packages/agenticros-claude-code/src/tools.ts +891 -0
  180. package/runtime/packages/agenticros-claude-code/src/transport.ts +58 -0
  181. package/runtime/packages/agenticros-claude-code/src/zero-shot/detector.ts +169 -0
  182. package/runtime/packages/agenticros-claude-code/tsconfig.json +9 -0
  183. package/runtime/packages/agenticros-claude-code/yolo-debug.mjs +106 -0
  184. package/runtime/packages/agenticros-gemini/README.md +139 -0
  185. package/runtime/packages/agenticros-gemini/package.json +28 -0
  186. package/runtime/packages/agenticros-gemini/scripts/smoke-api.mjs +42 -0
  187. package/runtime/packages/agenticros-gemini/src/chat.ts +139 -0
  188. package/runtime/packages/agenticros-gemini/src/config.ts +92 -0
  189. package/runtime/packages/agenticros-gemini/src/depth.ts +173 -0
  190. package/runtime/packages/agenticros-gemini/src/index.ts +58 -0
  191. package/runtime/packages/agenticros-gemini/src/memory.ts +32 -0
  192. package/runtime/packages/agenticros-gemini/src/safety.ts +44 -0
  193. package/runtime/packages/agenticros-gemini/src/tools.ts +516 -0
  194. package/runtime/packages/agenticros-gemini/src/transport.ts +58 -0
  195. package/runtime/packages/agenticros-gemini/tsconfig.json +8 -0
  196. package/runtime/packages/core/package.json +47 -0
  197. package/runtime/packages/core/src/banner.ts +32 -0
  198. package/runtime/packages/core/src/cmd-vel-twist.ts +31 -0
  199. package/runtime/packages/core/src/config.ts +279 -0
  200. package/runtime/packages/core/src/index.ts +54 -0
  201. package/runtime/packages/core/src/memory/__tests__/factory.test.ts +70 -0
  202. package/runtime/packages/core/src/memory/__tests__/local-provider.test.ts +195 -0
  203. package/runtime/packages/core/src/memory/__tests__/mem0-provider.test.ts +192 -0
  204. package/runtime/packages/core/src/memory/__tests__/smart-defaults.test.ts +46 -0
  205. package/runtime/packages/core/src/memory/factory.ts +63 -0
  206. package/runtime/packages/core/src/memory/index.ts +10 -0
  207. package/runtime/packages/core/src/memory/local/provider.ts +229 -0
  208. package/runtime/packages/core/src/memory/mem0/provider.ts +379 -0
  209. package/runtime/packages/core/src/memory/types.ts +96 -0
  210. package/runtime/packages/core/src/topic-utils.ts +95 -0
  211. package/runtime/packages/core/src/transport/factory.ts +47 -0
  212. package/runtime/packages/core/src/transport/local/conversion.ts +333 -0
  213. package/runtime/packages/core/src/transport/local/entities.ts +129 -0
  214. package/runtime/packages/core/src/transport/local/transport.ts +406 -0
  215. package/runtime/packages/core/src/transport/rosbridge/actions.ts +81 -0
  216. package/runtime/packages/core/src/transport/rosbridge/adapter.ts +157 -0
  217. package/runtime/packages/core/src/transport/rosbridge/client.ts +438 -0
  218. package/runtime/packages/core/src/transport/rosbridge/services.ts +41 -0
  219. package/runtime/packages/core/src/transport/rosbridge/topics.ts +60 -0
  220. package/runtime/packages/core/src/transport/rosbridge/types.ts +118 -0
  221. package/runtime/packages/core/src/transport/transport.ts +77 -0
  222. package/runtime/packages/core/src/transport/types.ts +137 -0
  223. package/runtime/packages/core/src/transport/webrtc/signaling-client.ts +196 -0
  224. package/runtime/packages/core/src/transport/webrtc/signaling-types.ts +130 -0
  225. package/runtime/packages/core/src/transport/webrtc/transport.ts +516 -0
  226. package/runtime/packages/core/src/transport/zenoh/adapter.ts +357 -0
  227. package/runtime/packages/core/src/transport/zenoh/cdr.ts +183 -0
  228. package/runtime/packages/core/src/transport/zenoh/keys.ts +51 -0
  229. package/runtime/packages/core/tsconfig.json +9 -0
  230. package/runtime/packages/ros-camera/package.json +30 -0
  231. package/runtime/packages/ros-camera/src/index.ts +13 -0
  232. package/runtime/packages/ros-camera/src/snapshot.ts +372 -0
  233. package/runtime/packages/ros-camera/tsconfig.json +9 -0
  234. package/runtime/pnpm-lock.yaml +5260 -0
  235. package/runtime/pnpm-workspace.yaml +2 -0
  236. package/runtime/ros2_ws/src/agenticros_agent/agenticros_agent/__init__.py +0 -0
  237. package/runtime/ros2_ws/src/agenticros_agent/agenticros_agent/agent_node.py +561 -0
  238. package/runtime/ros2_ws/src/agenticros_agent/package.xml +25 -0
  239. package/runtime/ros2_ws/src/agenticros_agent/resource/agenticros_agent +0 -0
  240. package/runtime/ros2_ws/src/agenticros_agent/setup.cfg +4 -0
  241. package/runtime/ros2_ws/src/agenticros_agent/setup.py +25 -0
  242. package/runtime/ros2_ws/src/agenticros_bringup/README.md +128 -0
  243. package/runtime/ros2_ws/src/agenticros_bringup/agenticros_bringup/__init__.py +1 -0
  244. package/runtime/ros2_ws/src/agenticros_bringup/agenticros_bringup/cmd_vel_relay.py +33 -0
  245. package/runtime/ros2_ws/src/agenticros_bringup/launch/cmd_vel_bridge.launch.py +58 -0
  246. package/runtime/ros2_ws/src/agenticros_bringup/launch/gazebo_turtlebot3.launch.py +69 -0
  247. package/runtime/ros2_ws/src/agenticros_bringup/launch/mode_a_gazebo.launch.py +55 -0
  248. package/runtime/ros2_ws/src/agenticros_bringup/launch/mode_a_gazebo_rviz.launch.py +48 -0
  249. package/runtime/ros2_ws/src/agenticros_bringup/launch/realsense_rosbridge.launch.py +154 -0
  250. package/runtime/ros2_ws/src/agenticros_bringup/launch/rosbridge_gazebo.launch.py +54 -0
  251. package/runtime/ros2_ws/src/agenticros_bringup/launch/rviz.launch.py +38 -0
  252. package/runtime/ros2_ws/src/agenticros_bringup/launch/turtlebot3_gazebo_rviz.launch.py +42 -0
  253. package/runtime/ros2_ws/src/agenticros_bringup/package.xml +24 -0
  254. package/runtime/ros2_ws/src/agenticros_bringup/resource/agenticros_bringup +0 -0
  255. package/runtime/ros2_ws/src/agenticros_bringup/rviz/turtlebot3_agenticros.rviz +174 -0
  256. package/runtime/ros2_ws/src/agenticros_bringup/setup.cfg +4 -0
  257. package/runtime/ros2_ws/src/agenticros_bringup/setup.py +28 -0
  258. package/runtime/ros2_ws/src/agenticros_discovery/agenticros_discovery/__init__.py +0 -0
  259. package/runtime/ros2_ws/src/agenticros_discovery/agenticros_discovery/discovery_node.py +172 -0
  260. package/runtime/ros2_ws/src/agenticros_discovery/package.xml +22 -0
  261. package/runtime/ros2_ws/src/agenticros_discovery/resource/agenticros_discovery +0 -0
  262. package/runtime/ros2_ws/src/agenticros_discovery/setup.cfg +5 -0
  263. package/runtime/ros2_ws/src/agenticros_discovery/setup.py +25 -0
  264. package/runtime/ros2_ws/src/agenticros_follow_me/README.md +66 -0
  265. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/__init__.py +1 -0
  266. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/__main__.py +5 -0
  267. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/follow_me_node.py +278 -0
  268. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/follower_controller.py +631 -0
  269. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/person_tracker.py +635 -0
  270. package/runtime/ros2_ws/src/agenticros_follow_me/package.xml +22 -0
  271. package/runtime/ros2_ws/src/agenticros_follow_me/resource/agenticros_follow_me +0 -0
  272. package/runtime/ros2_ws/src/agenticros_follow_me/setup.py +25 -0
  273. package/runtime/ros2_ws/src/agenticros_msgs/CMakeLists.txt +26 -0
  274. package/runtime/ros2_ws/src/agenticros_msgs/msg/CapabilityManifest.msg +9 -0
  275. package/runtime/ros2_ws/src/agenticros_msgs/package.xml +22 -0
  276. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeGetStatus.srv +11 -0
  277. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeSetDistance.srv +4 -0
  278. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeSetTarget.srv +6 -0
  279. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeStart.srv +5 -0
  280. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeStop.srv +3 -0
  281. package/runtime/ros2_ws/src/agenticros_msgs/srv/GetCapabilities.srv +5 -0
  282. package/runtime/ros2_ws/src/agenticros_sim/CMakeLists.txt +24 -0
  283. package/runtime/ros2_ws/src/agenticros_sim/README.md +120 -0
  284. package/runtime/ros2_ws/src/agenticros_sim/config/agenticros-sim.config.json +28 -0
  285. package/runtime/ros2_ws/src/agenticros_sim/config/amr_bridge.yaml +111 -0
  286. package/runtime/ros2_ws/src/agenticros_sim/config/amr_view.rviz +172 -0
  287. package/runtime/ros2_ws/src/agenticros_sim/env-hooks/gz_resource_path.dsv.in +3 -0
  288. package/runtime/ros2_ws/src/agenticros_sim/env-hooks/gz_resource_path.sh.in +7 -0
  289. package/runtime/ros2_ws/src/agenticros_sim/launch/sim_amr.launch.py +159 -0
  290. package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.config +17 -0
  291. package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.sdf +244 -0
  292. package/runtime/ros2_ws/src/agenticros_sim/package.xml +27 -0
  293. package/runtime/ros2_ws/src/agenticros_sim/worlds/agenticros_indoor.sdf +183 -0
  294. package/runtime/scripts/activate_workspace.sh +285 -0
  295. package/runtime/scripts/agenticros-describer.policy.yaml +96 -0
  296. package/runtime/scripts/agenticros-proxy.cjs +99 -0
  297. package/runtime/scripts/agenticros-rosbridge.policy.yaml +62 -0
  298. package/runtime/scripts/check-cli-tarball-size.mjs +42 -0
  299. package/runtime/scripts/configure_agenticros.sh +200 -0
  300. package/runtime/scripts/configure_for_sim.sh +64 -0
  301. package/runtime/scripts/fix-openclaw-control-ui-path.sh +20 -0
  302. package/runtime/scripts/install_cli.sh +94 -0
  303. package/runtime/scripts/install_rosbridge_from_source.sh +67 -0
  304. package/runtime/scripts/lib/agenticros-banner.sh +28 -0
  305. package/runtime/scripts/onboard_robot.sh +75 -0
  306. package/runtime/scripts/openai.policy.yaml +77 -0
  307. package/runtime/scripts/openclaw-dashboard-url.cjs +49 -0
  308. package/runtime/scripts/pack-runtime.mjs +245 -0
  309. package/runtime/scripts/run_demo_native.sh +43 -0
  310. package/runtime/scripts/run_nemoclaw_host_stack.sh +91 -0
  311. package/runtime/scripts/run_robot_rosbridge.sh +36 -0
  312. package/runtime/scripts/sandbox_rosbridge_relay.py +137 -0
  313. package/runtime/scripts/setup-openclaw-local.cjs +75 -0
  314. package/runtime/scripts/setup_gateway_plugin.sh +329 -0
  315. package/runtime/scripts/setup_robot.sh +113 -0
  316. package/runtime/scripts/setup_workspace.sh +484 -0
  317. package/runtime/scripts/sim/run_sim.sh +146 -0
  318. package/runtime/scripts/smoke_test_nemoclaw.sh +123 -0
  319. package/runtime/scripts/start_demo.sh +55 -0
  320. package/runtime/scripts/sync-skill-tools.mjs +335 -0
  321. package/runtime/scripts/test-follow-me-sim.mjs +135 -0
  322. package/runtime/scripts/test-mcp-e2e.mjs +184 -0
  323. package/runtime/scripts/test-rclnodejs.mts +129 -0
  324. package/runtime/scripts/use-openclaw-2026.2.26.sh +19 -0
  325. package/runtime/scripts/use-openclaw-2026.3.11.sh +19 -0
  326. package/runtime/scripts/zenoh-bridge-ros2dds-robot.json5 +30 -0
  327. package/runtime/scripts/zenohd-agenticros.json5 +11 -0
  328. package/runtime/scripts/zenohd-rosclaw.json5 +11 -0
  329. package/runtime/tsconfig.base.json +19 -0
  330. package/index.js +0 -6
@@ -0,0 +1,42 @@
1
+ """TurtleBot3 Gazebo world + RViz (use_sim_time:=true). For machines with a display."""
2
+
3
+ from launch import LaunchDescription
4
+ from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
5
+ from launch.launch_description_sources import PythonLaunchDescriptionSource
6
+ from launch.substitutions import LaunchConfiguration, PathJoinSubstitution
7
+ from launch_ros.substitutions import FindPackageShare
8
+
9
+
10
+ def generate_launch_description():
11
+ bringup = FindPackageShare("agenticros_bringup")
12
+ gazebo = IncludeLaunchDescription(
13
+ PythonLaunchDescriptionSource(
14
+ PathJoinSubstitution([bringup, "launch", "gazebo_turtlebot3.launch.py"])
15
+ ),
16
+ launch_arguments={
17
+ "robot_namespace": LaunchConfiguration("robot_namespace"),
18
+ "turtlebot3_model": LaunchConfiguration("turtlebot3_model"),
19
+ }.items(),
20
+ )
21
+ rviz = IncludeLaunchDescription(
22
+ PythonLaunchDescriptionSource(
23
+ PathJoinSubstitution([bringup, "launch", "rviz.launch.py"])
24
+ ),
25
+ launch_arguments={"use_sim_time": "true"}.items(),
26
+ )
27
+ return LaunchDescription(
28
+ [
29
+ DeclareLaunchArgument(
30
+ "turtlebot3_model",
31
+ default_value="burger",
32
+ description="TurtleBot3 model: burger | waffle | waffle_pi",
33
+ ),
34
+ DeclareLaunchArgument(
35
+ "robot_namespace",
36
+ default_value="",
37
+ description="Same as AgenticROS robot.namespace; enables cmd_vel relay",
38
+ ),
39
+ gazebo,
40
+ rviz,
41
+ ]
42
+ )
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0"?>
2
+ <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
3
+ <package format="3">
4
+ <name>agenticros_bringup</name>
5
+ <version>0.0.1</version>
6
+ <description>Launch files and RViz configs for TurtleBot3 Gazebo simulation and visualization aligned with AgenticROS defaults (cmd_vel, /scan, rosbridge).</description>
7
+ <maintainer email="team@plaipin.com">PlaiPin</maintainer>
8
+ <license>Apache-2.0</license>
9
+
10
+ <buildtool_depend>ament_python</buildtool_depend>
11
+
12
+ <exec_depend>ament_index_python</exec_depend>
13
+ <exec_depend>launch</exec_depend>
14
+ <exec_depend>launch_ros</exec_depend>
15
+ <exec_depend>rviz2</exec_depend>
16
+ <exec_depend>rosbridge_server</exec_depend>
17
+ <exec_depend>turtlebot3_gazebo</exec_depend>
18
+ <exec_depend>rclpy</exec_depend>
19
+ <exec_depend>geometry_msgs</exec_depend>
20
+
21
+ <export>
22
+ <build_type>ament_python</build_type>
23
+ </export>
24
+ </package>
@@ -0,0 +1,174 @@
1
+ Panels:
2
+ - Class: rviz_common/Displays
3
+ Help Height: 78
4
+ Name: Displays
5
+ Property Tree Widget:
6
+ Expanded:
7
+ - /Global Options1
8
+ - /Status1
9
+ - /RobotModel1
10
+ - /TF1
11
+ - /LaserScan1
12
+ Splitter Ratio: 0.5
13
+ Tree Height: 464
14
+ - Class: rviz_common/Selection
15
+ Name: Selection
16
+ - Class: rviz_common/Tool Properties
17
+ Expanded:
18
+ - /2D Goal Pose1
19
+ - /Publish Point1
20
+ Name: Tool Properties
21
+ Splitter Ratio: 0.588679
22
+ - Class: rviz_common/Views
23
+ Expanded:
24
+ - /Current View1
25
+ Name: Views
26
+ Splitter Ratio: 0.5
27
+ - Class: rviz_common/Time
28
+ Experimental: false
29
+ Name: Time
30
+ SyncMode: 0
31
+ SyncSource: LaserScan
32
+ Visualization Manager:
33
+ Class: ""
34
+ Displays:
35
+ - Alpha: 0.5
36
+ Cell Size: 1
37
+ Class: rviz_default_plugins/Grid
38
+ Color: 160; 160; 164
39
+ Enabled: true
40
+ Line Style:
41
+ Line Width: 0.03
42
+ Value: Lines
43
+ Name: Grid
44
+ Normal Cell Count: 0
45
+ Offset:
46
+ X: 0
47
+ Y: 0
48
+ Z: 0
49
+ Plane: XY
50
+ Plane Cell Count: 10
51
+ Reference Frame: <Fixed Frame>
52
+ Value: true
53
+ - Alpha: 1
54
+ Class: rviz_default_plugins/RobotModel
55
+ Collision Enabled: false
56
+ Description File: ""
57
+ Description Source: Topic
58
+ Description Topic:
59
+ Depth: 5
60
+ Durability Policy: Volatile
61
+ History Policy: Keep Last
62
+ Reliability Policy: Reliable
63
+ Value: /robot_description
64
+ Enabled: true
65
+ Name: RobotModel
66
+ TF Prefix: ""
67
+ Update Interval: 0
68
+ Value: true
69
+ Visual Enabled: true
70
+ - Class: rviz_default_plugins/TF
71
+ Enabled: true
72
+ Frame Timeout: 15
73
+ Marker Scale: 0.15
74
+ Name: TF
75
+ Show Arrows: true
76
+ Show Axes: true
77
+ Show Names: true
78
+ Update Interval: 0
79
+ Value: true
80
+ - Alpha: 1
81
+ Autocompute Intensity Bounds: true
82
+ Autocompute Value Bounds:
83
+ Max Value: 10
84
+ Min Value: -10
85
+ Value: true
86
+ Axis: Z
87
+ Channel Name: intensity
88
+ Class: rviz_default_plugins/LaserScan
89
+ Color: 255; 85; 0
90
+ Color Transformer: AxisColor
91
+ Decay Time: 0
92
+ Enabled: true
93
+ Invert Rainbow: false
94
+ Max Color: 255; 255; 255
95
+ Max Intensity: 4096
96
+ Min Color: 0; 0; 0
97
+ Min Intensity: 0
98
+ Name: LaserScan
99
+ Position Transformer: XYZ
100
+ Queue Size: 10
101
+ Selectable: true
102
+ Size (m): 0.04
103
+ Style: Flat Squares
104
+ Topic:
105
+ Depth: 5
106
+ Durability Policy: Volatile
107
+ History Policy: Keep Last
108
+ Reliability Policy: Best Effort
109
+ Value: /scan
110
+ Use Fixed Frame: true
111
+ Use rainbow: true
112
+ Value: true
113
+ Enabled: true
114
+ Global Options:
115
+ Background Color: 48; 48; 48
116
+ Fixed Frame: odom
117
+ Frame Rate: 30
118
+ Name: root
119
+ Tools:
120
+ - Class: rviz_default_plugins/Interact
121
+ Hide Inactive Objects: true
122
+ - Class: rviz_default_plugins/MoveCamera
123
+ - Class: rviz_default_plugins/Select
124
+ - Class: rviz_default_plugins/FocusCamera
125
+ - Class: rviz_default_plugins/Measure
126
+ - Class: rviz_default_plugins/SetInitialPose
127
+ Topic: /initialpose
128
+ - Class: rviz_default_plugins/SetGoal
129
+ Topic: /goal_pose
130
+ - Class: rviz_default_plugins/PublishPoint
131
+ Single click: true
132
+ Topic: /clicked_point
133
+ Value: true
134
+ Views:
135
+ Current:
136
+ Class: rviz_default_plugins/Orbit
137
+ Distance: 8
138
+ Enable Stereo Rendering:
139
+ Stereo Eye Separation: 0.06
140
+ Stereo Focal Distance: 1
141
+ Swap Stereo Eyes: false
142
+ Value: false
143
+ Focal Point:
144
+ X: 0
145
+ Y: 0
146
+ Z: 0
147
+ Focal Shape Fixed Size: true
148
+ Focal Shape Size: 0.05
149
+ Invert Z Axis: false
150
+ Name: Current View
151
+ Near Clip Distance: 0.01
152
+ Pitch: 0.5
153
+ Target Frame: <Fixed Frame>
154
+ Value: Orbit (rviz)
155
+ Yaw: 0.8
156
+ Saved: ~
157
+ Window Geometry:
158
+ Displays:
159
+ collapsed: false
160
+ Height: 846
161
+ Hide Left Dock: false
162
+ Hide Right Dock: false
163
+ QMainWindow State: 000000ff00000000fd00000004000000000000013c0000025ffc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c00610079007301000000410000025f000000dd00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000025ffc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a0056006900650077007301000000410000025f000000b000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000028900fffffffb0000000800540069006d00650100000000000004500000000000000000000001eb0000025f00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
164
+ Selection:
165
+ collapsed: false
166
+ Time:
167
+ collapsed: false
168
+ Tool Properties:
169
+ collapsed: false
170
+ Views:
171
+ collapsed: false
172
+ Width: 1200
173
+ X: 60
174
+ Y: 60
@@ -0,0 +1,4 @@
1
+ [develop]
2
+ script_dir=$base/lib/agenticros_bringup
3
+ [install]
4
+ install_scripts=$base/lib/agenticros_bringup
@@ -0,0 +1,28 @@
1
+ from glob import glob
2
+
3
+ from setuptools import find_packages, setup
4
+
5
+ package_name = "agenticros_bringup"
6
+
7
+ setup(
8
+ name=package_name,
9
+ version="0.0.1",
10
+ packages=find_packages(exclude=["test"]),
11
+ data_files=[
12
+ ("share/ament_index/resource_index/packages", ["resource/" + package_name]),
13
+ ("share/" + package_name, ["package.xml"]),
14
+ ("share/" + package_name + "/launch", glob("launch/*.py")),
15
+ ("share/" + package_name + "/rviz", glob("rviz/*.rviz")),
16
+ ],
17
+ install_requires=["setuptools"],
18
+ entry_points={
19
+ "console_scripts": [
20
+ "cmd_vel_relay = agenticros_bringup.cmd_vel_relay:main",
21
+ ],
22
+ },
23
+ zip_safe=True,
24
+ maintainer="PlaiPin",
25
+ maintainer_email="team@plaipin.com",
26
+ description="AgenticROS-friendly simulation and RViz bringup.",
27
+ license="Apache-2.0",
28
+ )
@@ -0,0 +1,172 @@
1
+ """
2
+ AgenticROS Discovery Node
3
+
4
+ Introspects the running ROS2 system and publishes a capability manifest
5
+ describing available topics, services, and actions. This manifest is consumed
6
+ by the AgenticROS plugin to inform the AI agent about what the robot can do.
7
+
8
+ Published topic:
9
+ /agenticros/capabilities (agenticros_msgs/msg/CapabilityManifest)
10
+
11
+ Service:
12
+ /agenticros/get_capabilities (agenticros_msgs/srv/GetCapabilities)
13
+
14
+ Parameters:
15
+ robot_name — Name of the robot (default: "Robot")
16
+ robot_namespace — Namespace filter; empty = discover all (default: "")
17
+ publish_interval — Seconds between manifest publications (default: 5.0)
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import rclpy
23
+ from rclpy.node import Node
24
+ from rclpy.qos import QoSProfile, DurabilityPolicy
25
+
26
+ from agenticros_msgs.msg import CapabilityManifest
27
+ from agenticros_msgs.srv import GetCapabilities
28
+
29
+
30
+ # Internal ROS2 topics/services that clutter the manifest
31
+ _INTERNAL_PREFIXES = (
32
+ "/rosout",
33
+ "/parameter_events",
34
+ "/agenticros/",
35
+ )
36
+
37
+
38
+ class DiscoveryNode(Node):
39
+ """Periodically discovers ROS2 capabilities and publishes a manifest."""
40
+
41
+ def __init__(self) -> None:
42
+ super().__init__("agenticros_discovery")
43
+
44
+ # Parameters
45
+ self.declare_parameter("robot_name", "Robot")
46
+ self.declare_parameter("robot_namespace", "")
47
+ self.declare_parameter("publish_interval", 5.0)
48
+
49
+ self.robot_name: str = self.get_parameter("robot_name").value
50
+ self.robot_namespace: str = self.get_parameter("robot_namespace").value
51
+ self.publish_interval: float = self.get_parameter("publish_interval").value
52
+
53
+ # Publisher — transient local so late subscribers get the last manifest
54
+ qos = QoSProfile(depth=1, durability=DurabilityPolicy.TRANSIENT_LOCAL)
55
+ self.manifest_pub = self.create_publisher(
56
+ CapabilityManifest, "/agenticros/capabilities", qos
57
+ )
58
+
59
+ # Service — on-demand query
60
+ self.get_caps_srv = self.create_service(
61
+ GetCapabilities, "/agenticros/get_capabilities", self._handle_get_capabilities
62
+ )
63
+
64
+ # Timer — periodic discovery
65
+ self.timer = self.create_timer(self.publish_interval, self._on_timer)
66
+
67
+ self.get_logger().info(
68
+ f"Discovery node started: robot={self.robot_name}, "
69
+ f"namespace='{self.robot_namespace}', interval={self.publish_interval}s"
70
+ )
71
+
72
+ def _on_timer(self) -> None:
73
+ """Discover capabilities and publish the manifest."""
74
+ manifest = self._build_manifest()
75
+ self.manifest_pub.publish(manifest)
76
+ self.get_logger().debug(
77
+ f"Published manifest: {len(manifest.topic_names)} topics, "
78
+ f"{len(manifest.service_names)} services, "
79
+ f"{len(manifest.action_names)} actions"
80
+ )
81
+
82
+ def _handle_get_capabilities(
83
+ self,
84
+ request: GetCapabilities.Request,
85
+ response: GetCapabilities.Response,
86
+ ) -> GetCapabilities.Response:
87
+ """Handle on-demand capability query."""
88
+ # Allow overriding namespace per-request
89
+ saved_ns = self.robot_namespace
90
+ if request.robot_namespace:
91
+ self.robot_namespace = request.robot_namespace
92
+
93
+ try:
94
+ response.manifest = self._build_manifest()
95
+ response.success = True
96
+ response.error_message = ""
97
+ except Exception as e:
98
+ response.success = False
99
+ response.error_message = str(e)
100
+ finally:
101
+ self.robot_namespace = saved_ns
102
+
103
+ return response
104
+
105
+ def _build_manifest(self) -> CapabilityManifest:
106
+ """Query the ROS2 graph and build a CapabilityManifest message."""
107
+ manifest = CapabilityManifest()
108
+ manifest.robot_name = self.robot_name
109
+ manifest.robot_namespace = self.robot_namespace
110
+ manifest.stamp = self.get_clock().now().to_msg()
111
+
112
+ ns_prefix = self.robot_namespace if self.robot_namespace else ""
113
+
114
+ # Discover topics
115
+ for name, types in self.get_topic_names_and_types():
116
+ if not self._should_include(name, ns_prefix):
117
+ continue
118
+ manifest.topic_names.append(name)
119
+ manifest.topic_types.append(types[0] if types else "")
120
+
121
+ # Discover services
122
+ for name, types in self.get_service_names_and_types():
123
+ if not self._should_include(name, ns_prefix):
124
+ continue
125
+ manifest.service_names.append(name)
126
+ manifest.service_types.append(types[0] if types else "")
127
+
128
+ # Discover actions — heuristic: look for */_action/feedback topics
129
+ feedback_suffix = "/_action/feedback"
130
+ for name, types in self.get_topic_names_and_types():
131
+ if name.endswith(feedback_suffix):
132
+ action_name = name[: -len(feedback_suffix)]
133
+ if not self._should_include(action_name, ns_prefix):
134
+ continue
135
+ action_type = types[0] if types else ""
136
+ # Convert feedback type to action type
137
+ if action_type.endswith("_FeedbackMessage"):
138
+ action_type = action_type[: -len("_FeedbackMessage")]
139
+ manifest.action_names.append(action_name)
140
+ manifest.action_types.append(action_type)
141
+
142
+ return manifest
143
+
144
+ def _should_include(self, name: str, ns_prefix: str) -> bool:
145
+ """Check if a topic/service/action should be included in the manifest."""
146
+ # Filter by namespace if set
147
+ if ns_prefix and not name.startswith(ns_prefix):
148
+ return False
149
+
150
+ # Exclude ROS2 internal topics
151
+ for prefix in _INTERNAL_PREFIXES:
152
+ if name.startswith(prefix):
153
+ return False
154
+
155
+ return True
156
+
157
+
158
+ def main() -> None:
159
+ """Entry point for the discovery node."""
160
+ rclpy.init()
161
+ node = DiscoveryNode()
162
+ try:
163
+ rclpy.spin(node)
164
+ except KeyboardInterrupt:
165
+ pass
166
+ finally:
167
+ node.destroy_node()
168
+ rclpy.shutdown()
169
+
170
+
171
+ if __name__ == "__main__":
172
+ main()
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0"?>
2
+ <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
3
+ <package format="3">
4
+ <name>agenticros_discovery</name>
5
+ <version>0.0.1</version>
6
+ <description>ROS2 node that introspects available topics, services, and actions and publishes a capability manifest</description>
7
+ <maintainer email="team@plaipin.com">PlaiPin</maintainer>
8
+ <license>Apache-2.0</license>
9
+
10
+ <depend>rclpy</depend>
11
+ <depend>std_msgs</depend>
12
+ <depend>agenticros_msgs</depend>
13
+
14
+ <test_depend>ament_copyright</test_depend>
15
+ <test_depend>ament_flake8</test_depend>
16
+ <test_depend>ament_pep257</test_depend>
17
+ <test_depend>python3-pytest</test_depend>
18
+
19
+ <export>
20
+ <build_type>ament_python</build_type>
21
+ </export>
22
+ </package>
@@ -0,0 +1,5 @@
1
+ [develop]
2
+ script_dir=$base/lib/agenticros_discovery
3
+
4
+ [install]
5
+ install_scripts=$base/lib/agenticros_discovery
@@ -0,0 +1,25 @@
1
+ from setuptools import find_packages, setup
2
+
3
+ package_name = "agenticros_discovery"
4
+
5
+ setup(
6
+ name=package_name,
7
+ version="0.0.1",
8
+ packages=find_packages(exclude=["test"]),
9
+ data_files=[
10
+ ("share/ament_index/resource_index/packages", ["resource/" + package_name]),
11
+ ("share/" + package_name, ["package.xml"]),
12
+ ],
13
+ install_requires=["setuptools"],
14
+ zip_safe=True,
15
+ maintainer="PlaiPin",
16
+ maintainer_email="team@plaipin.com",
17
+ description="ROS2 capability discovery node for AgenticROS",
18
+ license="Apache-2.0",
19
+ tests_require=["pytest"],
20
+ entry_points={
21
+ "console_scripts": [
22
+ "discovery_node = agenticros_discovery.discovery_node:main",
23
+ ],
24
+ },
25
+ )
@@ -0,0 +1,66 @@
1
+ # agenticros_follow_me
2
+
3
+ ROS2 node for the **Follow Me** mission: person tracking and follower control. Publishes `geometry_msgs/Twist` to `cmd_vel` and advertises ROS2 services used by the AgenticROS plugin. All Follow Me behavior is in-repo; AgenticROS does not depend on external projects for this mission.
4
+
5
+ ## Features
6
+
7
+ - Person detection via **RealSense** depth + **MediaPipe** Pose (or simple depth fallback / mock when unavailable).
8
+ - Follower controller maintains a configurable distance and publishes velocity commands to `cmd_vel`.
9
+ - ROS2 services: `follow_me/start`, `follow_me/stop`, `follow_me/set_distance`, `follow_me/get_status`, `follow_me/set_target`.
10
+
11
+ ## Dependencies
12
+
13
+ - **ROS2** (Jazzy or compatible).
14
+ - **agenticros_msgs** (from this workspace).
15
+ - Optional (for real camera + detection):
16
+ - `pyrealsense2` — RealSense SDK.
17
+ - `mediapipe` — pose detection.
18
+ - `opencv-python` — image handling.
19
+ - `numpy`
20
+
21
+ Without them, the node runs in mock mode (simulated person).
22
+
23
+ ## Build
24
+
25
+ ```bash
26
+ cd ros2_ws
27
+ colcon build --packages-select agenticros_msgs agenticros_follow_me
28
+ source install/setup.bash
29
+ ```
30
+
31
+ ## Run
32
+
33
+ ```bash
34
+ ros2 run agenticros_follow_me follow_me_node
35
+ ```
36
+
37
+ **If you get "No executable found"** (e.g. on some boards), run the node as a module instead (from the same shell where you sourced the workspace):
38
+
39
+ ```bash
40
+ source install/setup.bash
41
+ python3 -m agenticros_follow_me
42
+ ```
43
+
44
+ Parameters:
45
+
46
+ - `use_camera` (bool, default: true) — use RealSense when available; otherwise mock.
47
+ - `target_distance` (float, default: 1.0) — follow distance in meters.
48
+ - `cmd_vel_topic` (string, default: `cmd_vel`) — topic for Twist commands.
49
+
50
+ Example with custom topic (e.g. namespaced):
51
+
52
+ ```bash
53
+ ros2 run agenticros_follow_me follow_me_node --ros-args -p cmd_vel_topic:=robot_ns/cmd_vel
54
+ ```
55
+
56
+ ## Services
57
+
58
+ | Service | Type | Description |
59
+ |--------|------|-------------|
60
+ | `follow_me/start` | FollowMeStart | Start following (optional target description). |
61
+ | `follow_me/stop` | FollowMeStop | Stop following. |
62
+ | `follow_me/set_distance` | FollowMeSetDistance | Set target distance (m). |
63
+ | `follow_me/get_status` | FollowMeGetStatus | Get enabled, tracking, distances, twist. |
64
+ | `follow_me/set_target` | FollowMeSetTarget | Lock onto a person by description (closest match without VLM). |
65
+
66
+ The AgenticROS plugin uses these via the **follow_robot** tool when the user says "follow me", "stop following", etc.
@@ -0,0 +1 @@
1
+ # AgenticROS Follow Me mission
@@ -0,0 +1,5 @@
1
+ """Allow running as: python3 -m agenticros_follow_me (after sourcing install/setup.bash)."""
2
+ from .follow_me_node import main
3
+
4
+ if __name__ == "__main__":
5
+ main()