Тестування 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
Зазвичай один сервопривід має бути встановлений на від’ємне значення!
Тепер знайдіть положення ложки Min, Middle і Max, налаштовуючи Servo 2
Min повинен бути найменшим значенням, яке штовхає ложку вниз і, отже, нахиляє spoonBot вперед
Встановіть spoon_down відповідно
Max зазвичай дорівнює 255 і повинен розміщувати spoonBot так, щоб він дивився якомога вище
Встановіть spoon_up відповідно
Middle — це значення, яке робить сервопривід рівним
Встановіть spoon_mid відповідно
Якщо Min і Max видаються переставленими, змініть spoon_dir на -1
Щойно калібрування виконано, перекомпілюйте проєкт і прошийте CMUcam3. spoonBot спершу пройде через послідовність запрограмованих рухів, щоб переконатися, що сервоприводи налаштовано правильно. Потім spoonBot чекатиме на натискання кнопки, щоб почати відстеження кольору. Текст відображається через послідовний порт, повідомляючи вас про різні етапи роботи.
Запрограмований рух повинен бути таким:
Сидіти нерухомо
Дивитися вниз
Дивитися вгору
Назад до середнього положення
Обертати за годинниковою стрілкою (якщо дивитися зверху)
Обертати проти годинникової стрілки
Червоний світлодіод вимкнено, поки камера готується
Червоний світлодіод вмикається, коли готовий до відстеження
Якщо це виглядає правильно, то спробуйте потримати яскраво забарвлений об’єкт за кілька дюймів перед камерою, а потім натисніть кнопку. Коли ви відсуватимете об’єкт, spoonBot повинен повертатися до нього. Використовуйте яскраво забарвлені об’єкти, якомога однорідніші за кольором. Такий об’єкт, як яскраво-червона тканина, підійшов би добре, оскільки він відбиває дуже мало світла (окрім чистого червоного). Переконайтеся, що в кімнаті достатньо освітлення. Спробуйте захопити кадр, щоб побачити, які умови.
Примітка: Якщо ви бажаєте вимкнути сервоприводи, не відключаючи їх, від’єднайте перемичку живлення сервоприводів (servo-power-jumper).