第 5 课 · 夹爪与执行器
这一课学什么?
这一课开始把 CoCube 从“会移动的平台”推进到“会执行动作的机器人”。
夹爪课最关键的不是某一个函数,而是动作顺序:
- 先张开
- 再靠近
- 然后闭合
- 最后搬运和放下


学习目标
- 会给扩展模块上电
- 会控制夹爪张开、闭合和指定角度
- 会把移动和夹爪动作组合成一个简单任务
- 理解执行器和传感器的角色差别
用到的硬件和功能
这一课需要接入夹爪模块。
会用到的接口主要有:
cm.power_on():给扩展模块上电。夹爪、ToF、语音这类外设在读取或控制前都建议先上电。cm.gripper_open():让夹爪张到接近全开。cm.gripper_close():让夹爪收到接近全闭。cm.gripper_degree(degree):按角度控制夹爪。degree范围是0~70;数值越小越接近张开,数值越大越接近闭合。cm.gripper_stop():停止夹爪动作,适合在测试角度后让夹爪停在当前位置。cocube.move_ms(direction, speed, ms):配合夹爪做时间控制搬运。direction取cocube.FORWARD/cocube.BACKWARD;speed是底盘速度;ms是移动时长。cocube.move_to(x, y, speed=40):配合夹爪做坐标搬运。x/y是目标坐标;speed是移动速度。
先认识这个能力
传感器负责读取外界,执行器负责改变外界。
夹爪就是最典型的执行器之一。
写夹爪程序时,先记住一条简单规律:
- 顺序通常比参数更重要
如果顺序错了,即使每个函数都写对,也很难抓稳目标。
开始编程
1. 先测试夹爪本身动作
import time
import cocube
import cocube_module as cm
cm.power_on()
cm.gripper_open()
time.sleep_ms(800)
cm.gripper_degree(35)
time.sleep_ms(800)
cm.gripper_close()
time.sleep_ms(800)
cm.gripper_stop()
先观察这三种状态:
- 全开时夹爪有多大
- 中间角度适不适合夹住小物件
- 全闭时是否能稳定夹紧
2. 用移动和夹爪做一个最小搬运动作
import time
import cocube
import cocube_module as cm
cm.power_on()
cm.gripper_open()
time.sleep_ms(600)
cocube.move_ms(cocube.FORWARD, 25, 900)
time.sleep_ms(200)
cm.gripper_close()
time.sleep_ms(800)
cocube.move_ms(cocube.BACKWARD, 25, 900)
time.sleep_ms(200)
cm.gripper_stop()
cocube.brake()
这段程序的节奏很清楚:
- 先张开
- 再靠近
- 然后夹住
- 最后撤回
3. 再往前一步:按坐标搬运
如果上一课的位置控制已经跑通,可以继续试一个“从抓取点到投放点”的版本。
import time
import cocube
import cocube_module as cm
cm.power_on()
cm.gripper_open()
time.sleep_ms(500)
if cocube.pos.state:
cocube.move_to(100, 120, 35)
time.sleep_ms(200)
cm.gripper_close()
time.sleep_ms(700)
cocube.move_to(200, 150, 35)
time.sleep_ms(200)
cm.gripper_open()
time.sleep_ms(500)
else:
print("定位无效,请把 CoCube 放到定位垫上")
运行时观察什么
运行夹爪程序时,重点看这些现象:
- 夹爪张开角度够不够大
- 靠近目标时速度会不会太快
- 闭合之后,目标会不会立刻滑掉
- 放下前是否已经到达合适位置
常见问题 / 使用提醒
- 抓不稳时,先调顺序,再调角度和速度
- 不要刚闭合就立刻后退,给夹爪一点稳定时间
- 用时间控制搬运时,目标位置最好固定
- 如果要做更稳定的运输,优先用坐标移动而不是纯时间控制
挑战一下
给自己设定一个完整的小任务:
- 从 A 点拿起一个小物件
- 运到 B 点
- 放下后退回安全区
如果想继续升级,可以再加一层:
- 搬运过程中在屏幕上显示当前状态
- 用坐标控制路线,而不是只用时间
快速参考
这一课最常用的写法是:
import cocube_module as cm
cm.power_on()
cm.gripper_open()
cm.gripper_close()
cm.gripper_degree(35)
cm.gripper_open():张开夹爪cm.gripper_close():闭合夹爪cm.gripper_degree(...):设置夹爪角度cm.gripper_stop():停止夹爪动作cm.power_on():打开扩展模块电源
如果想继续查外设接口,可以查看 cocube_module 快速参考。