Install
openclaw skills install @ceoifung/xrrobot-ros2openclaw skills install @ceoifung/xrrobot-ros2控制默认 ROS 2 工作区 ~/colcon_ws 中的 XRRobot。源码包默认位于 ~/colcon_ws/src。
{baseDir}/data/user_waypoints.yaml,仅用于保存用户明确授权记录的自定义导航点。除这个文件外,不得写入 skills/xrrobot-ros2、工作区源码目录或其他任意路径。apply_patch、重定向覆盖、脚本批量改写、格式化器自动写回、sed -i、tee、编辑器命令或任何其他会写入文件的方式。需要提出代码修复建议时,只能在回复中说明,不能直接落盘。{baseDir}/data/user_waypoints.yaml,其余文件仍保持只读,并要求用户单独授权修改后再继续。/cmd_vel 发布者。导航、自动驾驶、车道保持或跟随控制运行时,不得启动手动运动。/cmd_vel。有限时长的运动命令失败或被中断后,立即发送停止命令。{baseDir}/scripts/check-navigation-ready;校验通过时不要重复询问初始位置,校验失败时才要求用户设置。ros2kill、切换模式或终止现有控制器,除非用户请求切换或明确同意中断当前任务。通过包装脚本执行 ROS 命令,确保加载 Jazzy 和项目工作区环境:
{baseDir}/scripts/rosx ros2 node list
仅使用 {baseDir}/scripts/xr-call 已定义的子命令:
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call capture --timeout 2.0
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call scan --timeout 1.0
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call move --direction forward --duration-sec 2 --speed-mps 0.3
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call turn --direction left --duration-sec 1
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call stop
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call list-waypoints
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call navigate --waypoint A
{baseDir}/scripts/rosx {baseDir}/scripts/check-navigation-ready
获取当前位置优先使用 ROS 2 命令行,不额外编写或运行项目代码:
# 首选:直接读取定位输出
{baseDir}/scripts/rosx ros2 topic echo /amcl_pose --once
# 只看位置字段
{baseDir}/scripts/rosx ros2 topic echo /amcl_pose --once --field pose.pose.position
# 备选:读取 TF(避免长时间阻塞时加 timeout)
timeout 2s {baseDir}/scripts/rosx ros2 run tf2_ros tf2_echo map base_link
检查摄像头是否可用时,读取 references/camera.md,按其中“命令行检查优先、拍照验证兜底”的顺序执行。
xrmode status、ros2 node list 以及相关 topic、service、action 列表检查当前状态。{baseDir}/data/user_waypoints.yaml 可以在符合规则时写入。xrmode 管理。等待 stage=ready;running 仅表示进程已启动,不代表系统就绪。/amcl_pose;若该话题不可用,再使用 tf2_echo map base_link 作为回退。references/camera.md 并按其中的命令顺序检查 /camera/color/image_raw;只有命令行检查通过后,才执行 xr-call capture。{baseDir}/data/user_waypoints.yaml,不要改动任何源码或包配置。{baseDir}/data/user_waypoints.yaml。/amcl_pose;若该话题不可用,再读取 map -> base_link TF。定位未就绪时不得盲存。id、display_name、frame_id、pose.position、pose.orientation、saved_at,必要时可附加 aliases。id 使用稳定标识,限制为英文字母、数字、下划线和连字符;display_name 保留用户原始称呼,例如“商店”。{baseDir}/data/user_waypoints.yaml 中的 display_name、id 和 aliases。xr-call navigate --waypoint ... 的不存在点位;应直接使用保存的 pose 向 Nav2 发送 NavigateToPose 目标。id 的记录,不得顺带改写其他点位。{baseDir}/data/user_waypoints.yaml 中对应记录,不得影响代码内置点位。{baseDir}/scripts/rosx ros2 topic echo /amcl_pose --once
{baseDir}/scripts/rosx ros2 topic echo /amcl_pose --once --field pose.pose.position
/amcl_pose 没有消息或定位链路不是 AMCL,再回退到:timeout 2s {baseDir}/scripts/rosx ros2 run tf2_ros tf2_echo map base_link
frame_id、x、y 和朝向信息;若只能拿到四元数,也要原样报告,不要编造 yaw。{baseDir}/scripts/rosx ros2 topic info /camera/color/image_raw
timeout 2s {baseDir}/scripts/rosx ros2 topic echo /camera/color/image_raw --once
{baseDir}/scripts/rosx {baseDir}/scripts/xr-call capture --timeout 2.0
references/operations.mdreferences/orchestration.mdreferences/base.mdreferences/mapping.md、references/navigation.mdreferences/camera.md、references/lidar.mdreferences/grasp.md、references/task_orchestrator.mdreferences/yolo.md、references/vision.mdreferences/autopilot.md、references/lanekeeping.md、references/follower.md、references/guard.mdreferences/voice.md所有相对路径都以 {baseDir} 为基准解析。不要加载与当前任务无关的参考文件。