测试 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 应该会朝它转动。使用颜色尽可能均匀的鲜艳物体。像鲜红色的布这样的物体效果很好,因为它反射的光很少(除了纯红色)。确保房间里有足够的照明。尝试抓取一帧,看看条件是什么样的。

注意:如果您希望在不拔下舵机的情况下禁用它们,请断开舵机电源跳线。