Тестирование spoonBot#

spoonBot — это простой робот с дифференциальным приводом с ложкой, подключённой к сервоприводу, что позволяет ему панорамировать и наклоняться. См. страницу spoonBot-Construction для получения информации о сборке spoonBot. Пример программы, поставляемый с последним дистрибутивом 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 Frame Grabber, либо терминальную программу

    • Используя Frame Grabber, перейдите на панель «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

    • Обычно один сервопривод должен быть установлен на отрицательное значение!

  • Теперь найдите минимальное, среднее и максимальное положения ложки, регулируя Servo 2

    • Min должно быть наименьшим значением, которое опускает ложку вниз и, следовательно, наклоняет spoonBot вперёд

      • Установите spoon_down соответственно

    • Max обычно равно 255 и должно устанавливать spoonBot так, чтобы он смотрел как можно выше

      • Установите spoon_up соответственно

    • Middle — это значение, при котором сервопривод находится в горизонтальном положении

      • Установите spoon_mid соответственно

    • Если Min и Max кажутся перепутанными местами, измените spoon_dir на -1

После завершения калибровки перекомпилируйте проект и прошейте (FLASH) CMUcam3. Сначала spoonBot выполнит последовательность запрограммированных движений, чтобы убедиться, что сервоприводы настроены правильно. Затем spoonBot будет ждать нажатия кнопки, чтобы начать отслеживание цвета. Текст, отображаемый через последовательный порт, уведомляет вас о различных этапах работы.

Запрограммированное движение должно быть следующим:

  • Стоять на месте

  • Смотреть вниз

  • Смотреть вверх

  • Назад в среднее положение

  • Поворот по часовой стрелке (вид сверху)

  • Поворот против часовой стрелки

  • Красный светодиод выключен, пока камера готовится

  • Красный светодиод включается, когда камера готова к отслеживанию

Если это выглядит правильно, попробуйте подержать ярко окрашенный объект в нескольких дюймах перед камерой и затем нажмите кнопку. Когда вы отодвигаете объект, spoonBot должен повернуться к нему. Используйте ярко окрашенные объекты, максимально однородные по цвету. Объект вроде ярко-красной ткани подойдёт хорошо, поскольку он отражает очень мало света (кроме чистого красного). Убедитесь, что в комнате достаточно освещения. Попробуйте захватить кадр, чтобы увидеть, как выглядят условия.

Примечание: Если вы хотите отключить сервоприводы, не отсоединяя их, отсоедините перемычку питания сервоприводов.