一键导入
bask-and-exp-transport
快递盒和果篮夹取运输技能。支持两种模式的 AprilTag 识别夹取:快递盒 (exp) 和果篮 (basket)。节点:/apriltag_control_node,通过状态轮询完成夹取和放置任务。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
快递盒和果篮夹取运输技能。支持两种模式的 AprilTag 识别夹取:快递盒 (exp) 和果篮 (basket)。节点:/apriltag_control_node,通过状态轮询完成夹取和放置任务。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | bask_and_exp_transport |
| description | 快递盒和果篮夹取运输技能。支持两种模式的 AprilTag 识别夹取:快递盒 (exp) 和果篮 (basket)。节点:/apriltag_control_node,通过状态轮询完成夹取和放置任务。 |
/apriltag_control_nodeopenclaw_controllerros2 launch openclaw_controller apriltag_control_node.launch.py
| 服务 | 类型 | 功能 |
|---|---|---|
/apriltag_control_node/get_arm_status | std_srvs/srv/Trigger | 查询机械臂当前状态 |
/apriltag_control_node/pick_basket | std_srvs/srv/Trigger | 果篮拾取 |
/apriltag_control_node/place_basket | std_srvs/srv/Trigger | 果篮放置 |
/apriltag_control_node/pick_exp | std_srvs/srv/Trigger | 快递盒拾取 |
/apriltag_control_node/place_exp | std_srvs/srv/Trigger | 快递盒放置 |
/apriltag_control_node/init_pose | std_srvs/srv/Trigger | 机械臂复位 |
/apriltag_control_node/clear_target | interfaces/srv/SetString | 清空追踪目标 |
/apriltag_control_node/debug_pick_basket | std_srvs/srv/Trigger | 调试 - 果篮拾取(带坐标校准) |
/apriltag_control_node/debug_pick_exp | std_srvs/srv/Trigger | 调试 - 快递盒拾取(带坐标校准) |
/apriltag_control_node/set_debug_mode | interfaces/srv/SetString | 设置调试模式 |
| 状态 | 含义 | 后续动作 |
|---|---|---|
ready | 机械臂空闲,可以开始任务 | 触发 pick_basket 或 pick_exp |
pick_basket / pick_exp | 夹取进行中 | 轮询等待完成 |
pick_basket_finish / pick_exp_finish | 夹取完成 | 触发 place_basket 或 place_exp(如需要) |
place_basket / place_exp | 放置进行中 | 轮询等待完成 |
place_basket_finish / place_exp_finish | 放置完成 | 任务结束,可触发 init_pose 复位 |
通过 AprilTag ID 1 识别果篮,使用独立的停止坐标参数。
适用场景: 夹取和运输果篮
流程:
1. get_arm_status → "ready"
↓
2. pick_basket → 视觉追踪 + 夹取
↓
3. 轮询 get_arm_status → "pick_basket_finish"
↓
4. place_basket(如需要)→ 放置
↓
5. 轮询 get_arm_status → "place_basket_finish"
↓
6. init_pose(如需要)→ 复位
通过 AprilTag ID 0 识别快递盒,使用独立的停止坐标参数。
适用场景: 夹取和运输快递盒
流程:
1. get_arm_status → "ready"
↓
2. pick_exp → 视觉追踪 + 夹取
↓
3. 轮询 get_arm_status → "pick_exp_finish"
↓
4. place_exp(如需要)→ 放置
↓
5. 轮询 get_arm_status → "place_exp_finish"
↓
6. init_pose(如需要)→ 复位
# 1. 检查初始状态
ros2 service call /apriltag_control_node/get_arm_status std_srvs/srv/Trigger "{}"
# 期望返回:message='ready'
# 2. 开始夹取
ros2 service call /apriltag_control_node/pick_basket std_srvs/srv/Trigger "{}"
# 3. 轮询夹取状态(每 3 秒一次,直到 pick_basket_finish)
ros2 service call /apriltag_control_node/get_arm_status std_srvs/srv/Trigger "{}"
# 4. 放置(如需要)
ros2 service call /apriltag_control_node/place_basket std_srvs/srv/Trigger "{}"
# 5. 轮询放置状态(每 3 秒一次,直到 place_basket_finish)
ros2 service call /apriltag_control_node/get_arm_status std_srvs/srv/Trigger "{}"
# 6. 复位(如需要)
ros2 service call /apriltag_control_node/init_pose std_srvs/srv/Trigger "{}"
# 1. 检查初始状态
ros2 service call /apriltag_control_node/get_arm_status std_srvs/srv/Trigger "{}"
# 期望返回:message='ready'
# 2. 开始夹取
ros2 service call /apriltag_control_node/pick_exp std_srvs/srv/Trigger "{}"
# 3. 轮询夹取状态(每 3 秒一次,直到 pick_exp_finish)
ros2 service call /apriltag_control_node/get_arm_status std_srvs/srv/Trigger "{}"
# 4. 放置(如需要)
ros2 service call /apriltag_control_node/place_exp std_srvs/srv/Trigger "{}"
# 5. 轮询放置状态(每 3 秒一次,直到 place_exp_finish)
ros2 service call /apriltag_control_node/get_arm_status std_srvs/srv/Trigger "{}"
# 6. 复位(如需要)
ros2 service call /apriltag_control_node/init_pose std_srvs/srv/Trigger "{}"
# 触发调试模式(检测 10 次后自动保存坐标到 yaml)
ros2 service call /apriltag_control_node/debug_pick_basket std_srvs/srv/Trigger "{}"
# 触发调试模式(检测 10 次后自动保存坐标到 yaml)
ros2 service call /apriltag_control_node/debug_pick_exp std_srvs/srv/Trigger "{}"
# /home/ubuntu/ros2_ws/src/openclaw_controller/config/apriltag_control_roi.yaml
/**:
ros__parameters:
pick_stop_pixel_coordinate: [x, y] # 果篮停止坐标
pick_exp_stop_pixel_coordinate: [x, y] # 快递盒停止坐标
| 项目 | 果篮 (basket) | 快递盒 (exp) |
|---|---|---|
| 夹取服务 | pick_basket | pick_exp |
| 放置服务 | place_basket | place_exp |
| 状态值 | pick_basket / pick_basket_finish | pick_exp / pick_exp_finish |
| AprilTag ID | 1 | 0 |
| YAML 参数 | pick_stop_pixel_coordinate | pick_exp_stop_pixel_coordinate |
| 调试服务 | debug_pick_basket | debug_pick_exp |
| 动作组 | pick_basket / place_basket | pick_exp / place_exp |
get_arm_status,确认状态为 ready 再开始*_finish 状态debug_pick_basket 或 debug_pick_exp,检测 10 次后自动保存place_*导航到 A → 夹取(不放置)→ 导航到 B → 放置
| 任务描述 | 理解 | 是否放置 |
|---|---|---|
| "去快递站取快递" | 只说取,没说放哪 | ❌ 不放置,等指令 |
| "取快递回家" | 目的地是家 | ✅ 到家再放 |
| "把快递从 A 运到 B" | 明确 A→B | ✅ 到 B 再放 |
| "去超市买水果" | 只说买,没说放哪 | ❌ 不放置,等指令 |
核心原则:没有明确最终目的地 → 夹取后保持夹持,等待下一步指令
| 中文 | 模式 | 动作 |
|---|---|---|
| 夹取果篮 | basket | pick_basket |
| 放置果篮 | basket | place_basket |
| 夹取快递 | exp | pick_exp |
| 放置快递 | exp | place_exp |
| 机械臂复位 | - | init_pose |
| 校准果篮坐标 | basket | debug_pick_basket |
| 校准快递坐标 | exp | debug_pick_exp |
控制机械臂执行预设动作组。通过话题 /claw_arm_group_control/arm_group_control 发送字符串命令。适用于单一目的、明确指令的场景,如夹萝卜、拿给我、初始化、抬机械臂等。
控制ROS2机器人底盘移动。通过话题 /claw_move_control/chassis_command 发送字符串命令,支持单动作和多动作连续执行。/ Control ROS2 robot chassis movement via topic /claw_move_control/chassis_command (std_msgs/msg/String). Supports single and multi-action sequences.
机器人导航管理技能。支持普通导航(navigation_position.yaml)、智能工厂导航(smart_factory.yaml)、智能社区导航(smart_community.yaml)三种模式。通过获取导航模式、查询状态、获取位置列表、发送导航目标、等待到达等流程完成导航任务。
目标追踪技能。流程:检查状态 -> 停止旧追踪 -> 拍照 -> 图像分析获取归一化坐标 -> 发送目标 -> 确认状态。追踪节点名字前缀为 /claw_object_track。
机械臂追踪夹取技能。根据夹取方式(obj_track/color_track)执行追踪和夹取任务。节点: /claw_track_and_grab,支持两种模式:AI物体追踪和颜色追踪。
订阅ROS2摄像头图像话题并保存单帧图像到本地。用于:(1)订阅指定的图像话题 (2)获取并保存单帧图像 (3)如果指定话题不存在,自动检索环境中的rgb/image相关话题 (4)图像命名包含时间戳、话题名,便于追溯 (5)支持定位追踪模式,自动识别物体并发布xyxy坐标到追踪话题 / Subscribe to ROS2 camera image topics and save single frames locally. Features: (1) subscribe to specified image topic (2) capture and save single frame (3) auto-detect rgb/image topics (4) filename includes timestamp (5) support locate & track mode with automatic object detection and xyxy publishing.