捡垃圾 Sample

本示例演示 Quanta X1 SDK Client 与推理服务的基本交互流程:读取机器人状态和相机数据,向推理服务发送观测与任务指令,接收动作序列,并通过 SDK 控制机器人执行捡垃圾任务。

示例代码

https://github.com/X-Square-Robot/sdk_robot/tree/main/samples/quanta_x1

外部环境

将机器人放置在空旷、地面无杂物的平整场地,将垃圾桶和待拾取的垃圾放置在机器人前方。确认机器人周围留有足够的移动和机械臂操作空间,并确保急停可随时使用。

网络连接

按照当前 SDK 标准网络配置,使用网线连接开发 PC 与机器人,并将开发 PC 的机器人侧有线接口配置为 192.168.10.10/24

本文示例使用以下机器人网络配置:

  • 机器人有线 IP:192.168.10.1

  • 机器人 SDK Server:192.168.10.1:50051

运行 Sample 前,请先确认机器人和 SDK Server 可达:

ping 192.168.10.1
python3 check_connect.py --server 192.168.10.1:50051

Sample 还需要访问模型推理服务 ws://<INFERENCE_SERVER_IP>:<PORT>。开发 PC 可以使用有线网络连接机器人,同时使用 Wi-Fi 或另一网络访问模型服务,但必须确保两条网络路由不冲突。Sample 不负责配置系统路由、选择网卡或进行网络故障切换。

软件环境

在 SDK 仓库根目录执行:

cd /path/to/sdk_robot
source .venv/bin/activate
python -m pip install -r samples/quanta_x1/requirements.txt
运行示例

将推理服务地址和端口替换为本次服务发布方提供的真实值。机器人 SDK Server 地址通过第 6 个位置参数显式传入:

INFERENCE_SERVER_IP='REPLACE_WITH_CONFIRMED_IP_OR_HOST'
INFERENCE_SERVER_PORT='REPLACE_WITH_CONFIRMED_PORT'

bash samples/quanta_x1/scripts/start_sdk_ex001.sh \
  "$INFERENCE_SERVER_IP" \
  "$INFERENCE_SERVER_PORT" \
  "Move and pick up the garbage around the trash can and put it into the trash can." \
  end_pose \
  10 \
  192.168.10.1:50051

start_sdk_ex001.sh 的六个位置参数依次为:

MODEL_ADDRESS
MODEL_PORT
INSTRUCTION
CONTROL_MODE
INTERPOLATE_MULTIPLIER
ROBOT_SDK_URL
  • MODEL_ADDRESS:模型推理服务 IP 地址或域名。

  • MODEL_PORT:模型推理服务实际监听端口。

  • INSTRUCTION:发送给模型的任务指令。

  • CONTROL_MODE:示例使用 end_pose,表示末端位姿控制。

  • INTERPOLATE_MULTIPLIER:示例中的 10 为动作插值倍率,不是执行次数。

  • ROBOT_SDK_URL:机器人 SDK Server 地址,格式为 host:port,不要添加 x2:// 前缀。省略时脚本默认使用 192.168.10.1:50051

推理服务端口不是 SDK 固定常量,请使用服务发布方确认的当前端口,不要沿用历史文档中的 40189

修改机器人 IP

如果机器人不使用默认地址 192.168.10.1,请同步调整开发 PC 的机器人侧网络配置,并通过启动脚本的第 6 个位置参数传入实际 SDK Server 地址。

例如机器人 SDK Server 修改为 192.168.10.2:50051

bash samples/quanta_x1/scripts/start_sdk_ex001.sh \
  "$INFERENCE_SERVER_IP" \
  "$INFERENCE_SERVER_PORT" \
  "Move and pick up the garbage around the trash can and put it into the trash can." \
  end_pose \
  10 \
  192.168.10.2:50051

**注意:**不要使用同名环境变量尝试覆盖脚本默认值,例如下面的写法不会修改 ROBOT_SDK_URL

ROBOT_SDK_URL=192.168.10.2:50051 \
  bash samples/quanta_x1/scripts/start_sdk_ex001.sh \
  "$INFERENCE_SERVER_IP" \
  "$INFERENCE_SERVER_PORT" \
  "INSTRUCTION" \
  end_pose \
  10

需要修改机器人 SDK Server 地址时,请始终通过第 6 个位置参数显式传入。

运行说明
  • 脚本会同时连接模型推理 WebSocket 和机器人 SDK Server。

  • 脚本启动后会将机器人切换到 SDK 工作模式并初始化相关控制模块。

  • 运行前清空机器人周边无关人员和障碍物,操作人员应随时准备停止机器人。

  • 推理服务或 SDK 连接断开后,应先确认机器人已经安全停止,再排查模型服务、机器人 SDK Server 和系统网络路由。

  • 重新运行脚本会建立新的客户端会话,当前 Sample 没有持久化并恢复上一次推理流程的实现,因此不能保证自动续接上一次中断位置。

本页内容