Skip to content

十分钟只读闭环

本章节主要介绍按固定顺序完成网络、版本、ROS 2、Topic 数量、电量及关节状态六项基础判据的校验,并支持可选生成整机只读健康快照。

提醒

完成六项基础校验(网络、版本、ROS 2、Topic 数量、电量及关节状态)即表示通过十分钟只读闭环测试。本闭环流程满足零运动控制、零数据写盘及零配置修改的安全原则,不包含头部小幅运动、MCAP 录制、服务停止或系统调优等操作。

提醒

  • 适用版本:RealBot01_RX75;软件版本:V1.1.1-dl / V1.2.9;硬件版本:1.2
  • 风险等级:只读。
  • 前置条件:开发电脑已连接路由器 LAN 接口;机器人已正常完成开机;可通过 SSH 交互登录。
  • 安全停止机制:本章节所有指令均不下发任何运动控制或系统状态变更。指令等待过程中可随时按 Ctrl+C 强行终止,无需后续复位操作。

说明

本页面引用的 examples/ 脚本请通过正式交付渠道提供的交付包获取,并使用与软件版本匹配的交付包版本;文档中的路径仅用于说明脚本结构。

网络连通

  • Shell 归属: 本地开发电脑。
  • 风险等级: 只读。
bash
export ROBOT_IP=192.168.127.10
ping -c 2 "$ROBOT_IP"
  • 成功判据: 收到回复且丢包率为 0%。
  • 排障处理: 停止闭环,检查 LAN 口、网线、本机网段和现场 IP。

版本查询

  • Shell 归属: 本地开发电脑。
  • 风险等级: 只读。
bash
curl --connect-timeout 3 --max-time 10 --fail-with-body \
  -X POST "http://${ROBOT_IP}:9091/robot/version" \
  -H 'Content-Type: application/json' \
  -d '{}'
  • 成功判据: 响应返回 "code":200product_version 字段,并准确记录返回的软件版本、硬件版本及设备型号。

  • 排障处理: 请参阅验证 REST 版本接口进行排查;未取得版本前不沿用本手册的已验证标记。

  • 在本地开发电脑中运行如下脚本,可一次性完成网络连通版本查询校验:

    examples/01_quick_start/quick_readonly.sh

    提醒

    • 脚本执行前需显式设置 ROBOT_IP
    • 本机需安装并满足 bashpingcurlpython3 依赖。
    • python3 仅用于从标准输入严格解析 REST JSON,过程数据不进行任何落盘操作。

加载 ROS2 环境

  • Shell 归属: 机器人端(需先在本地开发电脑执行 ssh "${ROBOT_USER}@${ROBOT_IP}"ROBOT_USER 为交付渠道提供的机器人登录用户名)。
  • 风险等级: 只读。
bash
source /opt/ros/humble/setup.bash
source /home/realman/workspace/rm_robot_ws/install/setup.bash
  • 成功判据: 两条 source 命令退出码均返回 0,且当前 Shell 环境可正常识别并调用 ros2
  • 排障处理: 请先确认是否已成功进入机器人端 Shell,随后核对上述两条路径及执行先后顺序。

Topic 数量

  • Shell 归属: 机器人端。
  • 风险等级: 只读。
bash
ros2 topic list | wc -l
ros2 topic list | grep -E '^/robot_driver/battery_state$|^/robot_slave/states$'
  • 成功判据: Topic 统计总数大于 0,且上述两个关键 Topic 各出现一次。

    说明

    历史记录和当前运行态的总数可不同,故不以单一的统计总数作为通用判定阈值。

  • 排障处理:
    • 若统计总数为 0:重新执行加载 ROS2 环境步骤;
    • 若缺失关键 Topic:请保存当前完整的 Topic 列表输出及版本信息以协助定位排查,严禁自行重启服务

读取电量

  • Shell 归属: 机器人端。
  • 风险等级: 只读。
bash
timeout 10s ros2 topic echo --once /robot_driver/battery_state
  • 成功判据: 10 秒内正常接收到一条 rm_robot_interfaces/msg/RobotPower 消息,且命令退出码返回 0。

    说明

    有关数据字段的具体语义与物理单位,请参阅状态与传感器数据与消息定义中的相关内容;本章节严禁仅凭字段名称主观推算或臆测电压换算关系。

  • 排障处理: 若命令退出码为 124,表示接收超时。超时时请先执行 ros2 topic info /robot_driver/battery_state 检查发布者状态与数据类型,保存结果后停止闭环。

读取关节状态

  • Shell 归属: 机器人端。
  • 风险等级: 只读。
bash
timeout 10s ros2 topic echo --once --full-length /robot_slave/states
  • 成功判据: 10 秒内正常接收到一条 std_msgs/msg/String 消息,解析出的 JSON 数据中包含当前实机发布的双臂、头部或腰部关节状态数据。

    说明

    当前基线版本中记录的 position 单位为 0.001°;若使用其他软件版本,须重新核对。

  • 排障处理:
    • 若退出码为 124:执行 ros2 topic info /robot_slave/states 检查发布者状态。
    • 若接收到的数据包内容显示不完整:请确认已保留 --full-length 参数。

    说明

    严禁为了获取数据而发布任何运动命令。

生成机器人端只读健康快照

  • Shell 归属: 客户开发电脑,当前目录为交付包根目录;脚本通过 SSH 标准输入在机器人端执行。
  • 风险等级: 只读。
    • 脚本不发布 Topic、不调用 Service、不开始录制、不修改参数、不重启业务服务。
    • 首次运行 ROS2 CLI 时,系统可能会自动启动临时 daemon 或产生框架日志,但这不会改变机器人业务配置或执行器状态。
bash
ssh "${ROBOT_USER}@${ROBOT_IP}" 'bash -s' \
  < examples/01_quick_start/robot_health_snapshot.sh
  • 状态检查: 脚本会逐项检查并实时输出 PASSWARNFAIL

    • PASS 表示该项满足脚本的只读判据;
    • WARN 表示能力或关键 Topic 数据存在缺失、超时或调试工具不可用,但无明确证据表明整机服务失效;
    • FAIL 表示 ROS 2 运行环境、核心主服务、ROS 节点图或录制盘独立块设备挂载等基础依赖条件不满足。

    说明

    最终结论采用最严重等级,不以节点、Topic 或 Service 的历史固定总数作为硬性门槛。

  • 报告生成:

    • 脚本默认只输出到终端;如需生成技术支持诊断报告,须显式指定机器人端的报告输出目录:
    bash
    ssh "${ROBOT_USER}@${ROBOT_IP}" 'bash -s -- --report-dir "$HOME/realbot-health-reports"' \
      < examples/01_quick_start/robot_health_snapshot.sh
    • 仅在显式使用 --report-dir 时,脚本才会排他创建权限为 0600 的:
    text
    robot-health-{UTC}-{unique}.txt

    其中 unique 是自动生成的唯一后缀;同秒内重复触发不会覆盖历史报告,且不写入录制 SSD。

提醒

脚本本身不读取凭据文件,也不请求输入密码、token、Authorization 头或私钥;但 journal 和 Topic 内容仍可能间接包含未知格式的敏感信息。常见模式脱敏不是完整保证,提交前必须人工检查并删除序列号、客户网络信息、业务数据和凭据

  • 脚本默认仅通过 findmnt、块设备检查及 df 验证录制盘,不递归扫描数据。只有确认没有正在录制、上传或执行关键实时任务时,才可增加 --include-directory-usage;该选项执行最长 10 秒的 du -sh,可能增加磁盘 I/O。

  • 成功判据: 脚本退出码为 0 且最终状态为 PASS

    • 若输出 WARN:须先评估该风险项是否对本次开发任务产生直接影响;
    • 若输出 FAIL:必须立即停止后续写盘步骤。
    • 特别说明:对于依赖雷达数据的任务,必须单独确认 /scan 正频率和有效 ranges
  • 排障处理: 请完整保存终端全部输出日志,严禁盲目自动重跑脚本或强制重启 realman.service 服务。应优先针对失败项目定位环境变量加载、SSD 挂载状态、关键 Topic 数据和系统日志,必要时联系技术支持获取帮助。