测试 spoonBot#
spoonBot 是一个简单的差速驱动机器人,勺子连接到一个舵机,使其能够水平和垂直转动。有关构建 spoonBot 的信息,请参阅 spoonBot-Construction 页面。最新 cc3 发行版随附的示例程序包含演示如何移动 spoonBot 以及运行 spoonBot 演示模式的示例代码。spoonBot 演示模式类似于 CMUcam2 演示模式,只是它使用 spoonBot 进行水平和垂直转动。
校准 spoonBot#
在使用 spoonBot 之前,您需要校准舵机设置。这是通过在 main 的顶部设置以下数据结构来完成的:
// SpoonBot Calibration Points
// Assume Left = Servo 0
// Assume Right = Servo 1
// Assume Spoon = Servo 2
my_cal.left_mid = 71;
my_cal.right_mid = 77;
my_cal.spoon_down = 100;
my_cal.spoon_mid = 202;
my_cal.spoon_up = 255;
my_cal.left_dir = 1;
my_cal.right_dir = -1;
my_cal.spoon_dir = 1;
// Set the calibration points
spoonBot_calibrate (my_cal);
将 cmucam2 仿真固件刷写到相机上
打开 CMUcam3 帧抓取器或终端程序
使用帧抓取器,转到 "Settings" 面板并拖动舵机条以更改值
在终端中,键入 "sv <servo-id> <servo-value>" 来设置舵机,例如:
:sv 0 77 ACK
通过调整舵机 0 和 1 直到轮子停止,找到它们的中间位置
my_cal.left_mid = <来自舵机 0 的值>
my_cal.righ_mid = <来自舵机 1 的值>
现在您需要找出方向的符号
从后面看 spoonBot(勺子朝向您),尝试降低舵机 0 的数值,它应该是左轮
如果舵机顺时针/向后(朝向您)旋转,则应将 left_dir 设置为 1
如果舵机逆时针旋转,则应将 left_dir 设置为 -1
对舵机 1 重复此操作(从 spoonBot 的视角看应该是右轮)
如果舵机顺时针/向后(朝向您)旋转,则应将 right_dir 设置为 1
如果舵机逆时针旋转,则应将 right_dir 设置为 -1
通常,应将一个舵机设置为负值!
现在通过调整舵机 2 找到勺子的 Min、Middle 和 Max 位置
Min 应该是将勺子向下推,从而使 spoonBot 向前倾斜的最小值
相应地设置 spoon_down
Max 通常为 255,应使 spoonBot 尽可能向上看
相应地设置 spoon_up
Middle 是使舵机保持水平的值
相应地设置 spoon_mid
如果 Min 和 Max 看起来颠倒了,请将 spoon_dir 更改为 -1
校准完成后,重新编译项目并刷写 CMUcam3。spoonBot 将首先执行一系列脚本化的动作,以确保舵机设置正确。然后 spoonBot 将等待按钮按下以开始跟踪颜色。文本会通过串行端口显示,通知您各个操作阶段。
脚本化的动作应如下:
静止不动
向下看
向上看
回到中间位置
顺时针旋转(从上方看)
逆时针旋转
相机准备就绪时红色 LED 熄灭
准备好跟踪时红色 LED 亮起
如果这看起来正确,那么尝试在相机前几英寸处拿着一个颜色鲜艳的物体,然后按下按钮。当您将物体移开时,spoonBot 应该会朝它转动。使用颜色尽可能均匀的鲜艳物体。像鲜红色的布这样的物体效果很好,因为它反射的光很少(除了纯红色)。确保房间里有足够的照明。尝试抓取一帧,看看条件是什么样的。
注意:如果您希望在不拔下舵机的情况下禁用它们,请断开舵机电源跳线。