任务编排
抓取为什么分两段(pre-grasp → grasp)?
pre-grasp(悬停):末端在目标上方 pre_grasp_offset (0.10m) 处 → 确认位置正确,没有碰撞风险grasp(接触):末端垂直下降到 object_height + tool_offset_z → 吸盘接触箱子表面分段的好处:如果 pre-grasp 位置有问题,可以在碰到箱子之前停下来,不会撞到东西。
为什么用 get_box_edge_roll 而不是直接用感知的朝向?
感知给出的箱子朝向可能有 90° 的歧义(箱子是正方形顶面)。get_box_edge_roll 利用这个对称性:把感知角度映射到 区间,选择最近的边作为抓取方向,始终保证吸盘与箱子边缘对齐。
mode 切换时机:
idle → moving(开始运动)→ loaded(抓取后,高刚性持箱)→ moving(放置后)→ idle(任务结束)每次切换都有明确的物理意义:低刚性等待 → 标准运动 → 负载运动 → 恢复。