cocube 核心接口
import cocube
这是什么?
cocube 是 CoCube 固件里最核心的模块,负责:
- 读取位置传感器
- 读取左右轮速度
- 控制底盘前进、后退、转向
- 查询电池电量
常量
cocube.FORWARD
cocube.BACKWARD
cocube.LEFT
cocube.RIGHT
位置与速度
cocube.pos
后台约每 10ms 自动刷新一次,直接读属性即可。
| 属性 | 类型 | 说明 |
|---|---|---|
cocube.pos.x | int | 当前 X 坐标 |
cocube.pos.y | int | 当前 Y 坐标 |
cocube.pos.angle | int | 当前朝向角 |
cocube.pos.index | int | 当前所在格子编号 |
cocube.pos.state | bool | 定位是否有效 |
cocube.speed
| 属性 | 类型 | 说明 |
|---|---|---|
cocube.speed.left | float | 左轮速度 |
cocube.speed.right | float | 右轮速度 |
最小示例:
import time
import cocube
while True:
if cocube.pos.state:
print(cocube.pos.x, cocube.pos.y, cocube.pos.angle)
print(cocube.speed.left, cocube.speed.right)
else:
print("定位无效")
time.sleep_ms(100)
基础运动
这些接口更适合快速控制底盘:
cocube.set_wheel(left, right)
cocube.move(direction, speed)
cocube.rotate(direction, speed)
cocube.stop()
cocube.brake()
cocube.move_ms(direction, speed, ms)
cocube.rotate_ms(direction, speed, ms)
说明:
speed常用范围是0~50set_wheel(left, right)支持-50~50set_wheel()每次调用只会执行一轮 PID 调整,然后立即返回;如果想持续按测速反馈修正,应该放进循环里反复调用move()/rotate()会立即返回,并保持当前电机输出;通常要自己再调用stop()或brake()结束move_ms()/rotate_ms()会在内部每10ms更新一次输出,时间到后自动brake()
精确运动
这些接口更适合课程中的“走到某个点”或“转到某个角度”:
cocube.rotate_to(angle, speed=30)
cocube.rotate_by(direction, speed, degrees)
cocube.move_to(x, y, speed=40)
cocube.move_by(direction, steps, speed=40)
说明:
rotate_to():阻塞,转到绝对角度,误差约<= 1°rotate_by():阻塞,按相对角度旋转,要求cocube.pos.state有效move_to():阻塞,先转向再走到目标坐标,过程中会按角度误差做差速修正move_by():阻塞,按步数前进或后退,要求cocube.pos.state有效
其他
cocube.battery()
返回电池电量百分比,范围 0~100。
常见写法
import cocube
import time
cocube.move_ms(cocube.FORWARD, 30, 1000)
time.sleep_ms(300)
cocube.rotate_by(cocube.LEFT, 30, 90)
print(cocube.battery())
注意
move_to()、rotate_by()、move_by()都依赖定位状态;pos.state无效时,后两者会直接返回move_to()虽然不会先检查pos.state,但只有在定位数据正常更新时才适合使用stop()更像滑行停止,brake()更像主动刹住