第 2 课 · 运动基础
这一课学什么?
这一课开始让 CoCube 真正动起来。
重点不是“马上完成复杂任务”,而是先把最基本的前进、后退、转弯和停下跑顺。

学习目标
- 会用时间控制 CoCube 前进、后退和转弯
- 能把几段基础动作拼成一个简单路径
- 理解
stop()和brake()的区别 - 知道为什么按时间控制会出现误差
用到的硬件和功能
这一课只需要 CoCube 本体,不需要定位垫,也不需要额外扩展模块。
会用到的接口主要有:
cocube.move_ms(direction, speed, ms):按时间前进或后退。direction取cocube.FORWARD/cocube.BACKWARD;speed是速度,常用0~50;ms是持续时间,单位毫秒。cocube.rotate_ms(direction, speed, ms):按时间旋转。direction取cocube.LEFT/cocube.RIGHT;speed是转向速度;ms是旋转时长,单位毫秒。cocube.move(direction, speed):持续运动。direction还是前进 / 后退;speed是速度;启动后会保持输出,直到你再调用stop()或brake()。cocube.stop():滑行停止,不会主动抱死轮子,更适合观察惯性。cocube.brake():主动刹车,会更快停下。
先认识这个能力
这一课先用“按时间控制”的方式让 CoCube 运动。
这种方式的好处是上手快,马上就能看到结果;
但也要接受一个事实:同样的代码,在不同地面、不同电量、不同摩擦条件下,结果可能会有一点偏差。
所以这一课更关注两件事:
- 先把动作顺序写对
- 再观察实际轨迹和预期之间的差别
开始编程
1. 先跑通前进和后退
import time
import cocube
cocube.move_ms(cocube.FORWARD, 30, 800)
time.sleep_ms(300)
cocube.move_ms(cocube.BACKWARD, 30, 800)
这段代码的目的很简单:
- 先确认前进方向正常
- 再确认后退方向正常
- 看看
speed和ms组合会带来多大的位移
2. 把直行和转弯拼成一段路径
在第 2 课里,转弯先用 rotate_ms()试试。
import time
import cocube
cocube.move_ms(cocube.FORWARD, 30, 900)
time.sleep_ms(250)
cocube.rotate_ms(cocube.LEFT, 25, 720)
time.sleep_ms(250)
cocube.move_ms(cocube.FORWARD, 30, 700)
你可以继续改这两个参数:
900和700决定直行距离720决定转弯幅度
3. 试一试 stop() 和 brake() 的区别
import time
import cocube
cocube.move(cocube.FORWARD, 25)
time.sleep_ms(1000)
cocube.stop()
time.sleep_ms(1200)
cocube.move(cocube.FORWARD, 25)
time.sleep_ms(1000)
cocube.brake()
这段程序会连续做两次前进:
- 第一次用
stop()停下 - 第二次用
brake()停下
运行时观察什么
运行这课程序时,重点看这些现象:
move_ms()结束后,CoCube 会自动制动stop()更像撤掉动力,通常会再滑出去一点brake()会停得更干脆- 同样的转弯时间,不一定每次都正好得到一样的角度
常见问题 / 使用提醒
- 地面太滑或太粗糙时,轨迹误差会更明显
- 第一次调路径时,尽量把速度设在
20~30,更容易观察 - 运行前先留出足够空间,避免撞到边缘或障碍物
挑战一下
先挑战一个最经典的路径:正方形。

如果正方形已经跑通,再继续观察“左右轮速度不完全对称”时会发生什么。

可以继续试这几个方向:
- 把四段直行和四次转弯拼成正方形
- 调整转弯时间,让每个角更接近
90度 - 让一段路径故意变短或变长,观察轨迹怎么变化
参考代码: 走正方形形(先自己试,再展开)
import time
import cocube
for _ in range(4):
cocube.move_ms(cocube.FORWARD, 40, 1000)
time.sleep_ms(250)
cocube.rotate_ms(cocube.LEFT, 30, 1000)
time.sleep_ms(250)
cocube.brake()
这段代码先给出一个可运行的起点。
如果实际轨迹不像正方形,优先微调时间参数。
参考代码:走圆形(先自己试,再展开)
import cocube
while True:
cocube.set_wheel(20, 40)
这段代码会让左右轮保持不同输出,所以轨迹会接近圆形。
如果圆太大,就把两侧速度差调大一点;如果太急,就把两侧速度调得更接近一些。
快速参考
这一课最常用的写法是:
import cocube
cocube.move_ms(cocube.FORWARD, 30, 1000)
cocube.rotate_ms(cocube.LEFT, 25, 700)
cocube.brake()
cocube.move_ms(...):按时间直行cocube.rotate_ms(...):按时间转弯cocube.move(...):持续运动cocube.stop():滑行停止cocube.brake():主动刹车
如果想继续查运动接口,可以查看 cocube 核心接口速查。