跳到主要内容

推理部署

先完成 通信准备。Server 负责模型推理,Client 负责读取相机与状态并向机器人发送动作。 下文以 LingBot-VLA v2 为例,命令在边侧机的 LeTools-Learning 仓库根目录执行。

1. 配置并启动 Server​

编辑 configs/server/launcher.yaml 中的 lingbotvla2_roban_wholebody,保留全身 adapter,按本机路径填写:

lingbotvla2_roban_wholebody:
adapter: lingbot_vla_v2_roban_wholebody
env:
mode: conda
conda_env: lingbotvla2
args:
checkpoint: /path/to/training_output/global_step_40000/hf_ckpt
training_config_path: /path/to/training_output/lingbotvla_cli.yaml
qwen3vl_path: /path/to/Qwen3-VL-4B-Instruct
robot_norm_path: /path/to/roban_wholebody.json
robot_config_path: /path/to/LeTools-Learning/kuavo_model/external_models/lingbot-vla-v2/configs/robot_configs/roban_wholebody.yaml
execution_horizon: 50
  • checkpoint 写到包含模型权重的 hf_ckpt 目录。
  • training_config_path 使用本次训练输出的快照,不能用默认训练 YAML 代替。
  • robot_norm_path 使用匹配的归一化统计;robot_config_path 明确指向全身机器人配置。
  • 基础模型、动作布局与训练保持一致,不使用双臂配置。

在 LeTools 主环境启动 Server:

conda activate letools
python kuavo_server/launch.py lingbotvla2_roban_wholebody

使用其他模型时,仅切换对应 Server 配置,后续 Client 流程相同:

模型启动命令必须核对
OpenPIpython kuavo_server/launch.py openpi_roban_wholebodycheckpoint;policy_config_name 与训练名称一致,例如 pi05_roban_wholebody
Isaac GR00T N1.7python kuavo_server/launch.py groot_roban_wholebodycheckpoint;全身 adapter;execution_horizon: 40

完整模型参数见 LETools 全身 VLA 教程。

2. 配置 Client​

编辑 configs/deploy/roban_wholebody_deploy.yaml 的对应字段,保留通信准备中已填写的 heft.switch_cli 和 heft.switch_library_path:

platform_type: roban
camera:
topic: /camera/color/image_raw/compressed
dds:
config_uri: cyclonedds_roban_edge.xml
inference:
policy_type: client
server_host: localhost
server_port: 5555
task_prompt: "robot manipulation"
execution:
mode: sync
action_hz: 50.0
heft:
controller: heft_pico
fallback_controller: amp
hand_scale: 100.0
  • 示例假设 Server 与 Client 同机;分开运行时将 server_host 改为 Server 地址,并核对端口。
  • task_prompt 与训练任务指令一致;相机话题与当前 ROS 数据一致。
  • heft、heft_pico、amp 是实际配置标识,不要替换成描述文字。
  • 模型夹爪范围为 [0, 1],DDS /rt/hand_cmd 为 [0, 100],通过 hand_scale: 100.0 缩放。保留配套 warmup_sec,切换前预热下位机缓冲。

3. 启动与停止​

确认 Server 已就绪,在 Client 终端激活 LeTools 环境,并重新设置 ROS 地址。下列 IP 为通信页的示例地址:

conda activate letools
export ROS_MASTER_URI=http://192.168.26.12:11311
export ROS_IP=192.168.26.10
rostopic list
python kuavo_deploy/eval.py configs/deploy/roban_wholebody_deploy.yaml

确认相机数据、DDS 和机器人状态正常后,在菜单中选 1 开始全身推理;中途输入 s 停止,并确认机器人停止执行、回退状态正常。此入口没有 Kuavo 双臂流程中的 go / bag 回放操作。

真机先使用 sync

首次联调保持 execution.mode: sync。async 会在下一动作段推理时继续以 50 Hz 向 HEFT 发送指令,不应未经验证直接用于真机任务。短时欠载会保持上一拍动作,持续欠载会停流并回退至 amp;仍须监护机器人状态,异常时使用硬件急停。

排查顺序​

  1. 无相机数据:检查相机服务、ROS 地址与 topic。
  2. 切换失败:检查 DDS 网卡、CLI 和动态库路径,以及机器人端控制器状态。
  3. 模型加载或动作异常:检查 checkpoint、训练快照、统计文件与全身 adapter 是否匹配。
  4. 持续欠载或断流:先停止运行,检查网络与推理速度,不通过盲目提高频率继续测试。