Датчики для NXT от сторонних производителей. Футбол роботов. Автоматы
План занятия
Датчик компас
Датчик компас: П-регулятор
Корректировка отклонения по компасу
Параллельное управление азимутом
Теннис роботов
Инфракрасный мяч и IRSeeker
Программирование IRSeeker
Совмещение компаса и ИК-поисковика
Совмещение компаса и IR-Seeker
Robocup GEN II Football
Состояния – различные участки поля
Условные обозначения
Основной алгоритм
Начальные значения переменных
Параллельная задача по определению цвета
Переходы состояний
Калибровка яркости цветов
Определение цвета в RAW-формате
Калибровка + вывод на экран
Создание своих блоков в Robolab
Применение блоков
Объединение автомата и регулятора
Благодарю за внимание!
446.50K

Футбол роботов

1. Датчики для NXT от сторонних производителей. Футбол роботов. Автоматы

С.А.Филиппов,
Санкт-Петербургский Физико-математический лицей №239

2. План занятия

Датчики Hitechnic
Компас. Движение по азимуту
Теннис роботов
IRSeeker. Поиск мяча
Совмещение двух датчиков
Пенальти
Футбол автономных роботов

3. Датчик компас

Возвращает
отклонение от севера в
диапазоне от 0 до 359°
Чувствителен к
магнитным полям
Необходимо
располагать на
расстоянии 12-15 см от
моторов и NXT
Присутствует в патче
2.9.4 к Robolab и в
стандартном
комплекте RobotС 2.02

4. Датчик компас: П-регулятор

Взять азимут
В цикле определять
отклонение от азимута
Вырабатывать
управляющее воздействие
пропорционально
отклонению
В связи с замедленной
инициализацией компаса
перед считыванием первого
значения требуется
задержка
task main()
{
float u, k=3;
wait1Msec(200);
int alpha=SensorValue[s1];
while (true)
{
u=k*(alpha-SensorValue[s1]);
motor[motorB]=50+u;
motor[motorC]=50-u;
wait1Msec(1);
}
}

5. Корректировка отклонения по компасу

Отклонение err=alpha–S1
Применим целочисленное
деление
1, при err 180
err / 180 0, при 180 err 180
1, при err 180
Скорректированное отклонение
err_new=err–err/180*360
task main()
{
float u, k=3;
wait1Msec(200);
int err, alpha=SensorValue[s1];
while (true)
{
err=alpha-SensorValue[s1];
u=k*(err-err/180*360);
motor[motorB]=50+u;
motor[motorC]=50-u;
wait1Msec(1);
}
}

6. Параллельное управление азимутом

Азимут становится глобальной переменной
Из параллельной задачи производится изменение азимута
Целочисленным делением производится ограничение диапазона
значений
Задача 1: Проехать по квадрату
Задача 2: После задачи 1 развернуться и проехать обратно по тому же
пути

7. Теннис роботов

На соревнованиях «Теннис роботов» робот может
двигаться зигзагом
Задача: выталкивать мячи на сторону противника

8. Инфракрасный мяч и IRSeeker

Инфракрасный мяч имеет 20 излучателей, постоянный и
импульсный режимы, работает от 4 батареек ААА
Инфракрасный поисковик различает 10 секторов, выбирая
тот, в котором наибольшее излучение. Имеет 5
встроенных датчиков, каждый из которых определяет
интенсивность излучения

9. Программирование IRSeeker

#include "common.h"
#include "HTDIR-driver.h“
Центральный сектор
датчика имеет номер 5
– это уставка
Коэффициент (10)
большой из-за малых
отклонений
int v=70;
task main ()
{
int u, sector = 0;
while (true)
{
sector=HTDIRreadACDir(HTIRS2);
u=30*(sector-5);
motor[motorB]=v+u;
motor[motorC]=v-u;
wait1Msec(1);
}
}

10. Совмещение компаса и ИК-поисковика

Для контроля наличия мяча используется интенсивность
излучения на встроенном датчике №3.
Необходимо предварительно произвести калибровку,
выводя на экран показания переменой strength_3
Повторяй бесконечно
Если (мяч близко)
Иначе
Управление по компасу
Управление по ИК-поисковику
Применить управление

11. Совмещение компаса и IR-Seeker

Переинициализация происходит слишком медленно,
ветвление получает неверные значения
Использовать предопределенные переменные dir и
strength_3
При ведении по компасу издавать звуковой сигнал
400
u=2*(s2-(s2-alpha)/180*360-alpha)
0,01
140
penalt
20
alpha=s2
red=strength_3
50-u
u=10*(5-dir)
50+u
1
dir
strength_3

12. Robocup GEN II Football

Состязания Всемирной
олимпиады роботов
Робот должен помещаться в
цилиндр диаметром и
высотой 22 см
Разрешенные датчики: ИКпоисковик, компас,
освещенности, касания,
ультразвуковой
Игра 2х2 робота
Пенальти – первый шаг к
футболу. Задача завести
находящийся в центре мяч в
ворота с трех различных
цветовых зон.

13. Состояния – различные участки поля

1
3
5
4
2
7
6

14. Условные обозначения

state – номер состояния (соответствует
номеру вызываемой подпрограммы)
state0 – предыдущее состояние
color – текущий цвет
white = 1
salad = 2
green = 3
darkgreen = 4
black = 5

15. Основной алгоритм

Начальные
значения
Калибровка
яркости цветов
Определение
подпрограмм
обработки
состояний
Цикл переходов
состояний (вызовы
подпрограмм по
номеру состояния)
Параллельная
задача по
определению
номера цвета

16. Начальные значения переменных

Номера цветов
Номера состояний
Между собой нет
соответствия
Нумерованные
контейнеры с1-с5
хранят реальные
значения цветов,
полученные при
калибровке

17. Параллельная задача по определению цвета

18. Переходы состояний

Номер подпрограммы соответствует номеру состояния
В каждой подпрограмме состояние может измениться
В бесконечном цикле вызывается подпрограмма по
номеру состояния
Всего доступно 8 подпрограмм с номерами 0-7
На первом этапе следует сделать 7 «заглушек»

19. Калибровка яркости цветов

Высокая точность – чтение в Raw-формате
«Перевернутый» диапазон значений Raw: вычитание из 1023
Последовательное считывание в нумерованные контейнеры
Нахождение среднего арифметического – перехода между
близлежащими цветами

20. Определение цвета в RAW-формате

После калибровки освещенности следует проверить
работу подзадачи определения текущего цвета поля

21. Калибровка + вывод на экран

При калибровке каждого цвета происходит ожидание нажатия
кнопки 3 (оранжевой) – вместо датчика касания для экономии
Для проверки правильности калибровки в бесконечном цикле
следует выводить на экран откалиброванные значения и
текущие показания датчика

22. Создание своих блоков в Robolab

Вместо зеленого
светофора: Create ->
Control
Вместо красного
светофора: Create ->
Indicator
Меню Window -> Show
Front Panel (распахнуть)
Правый верхний значок
Inventor -> Show
Connector
Катушкой прицепить
левый край на Begin,
правый на End
Нарисовать
пиктограмму в трех
палитрах (Edit Icon)

23. Применение блоков

Вставить свою
пиктограмму через
кнопку на палитре
функций: Select VI
Или перетащить из ее
окна значок Inventor
Строго соблюдать
пути хранения
(перемещать файлы
подпрограммы и
программы вместе)

24. Объединение автомата и регулятора

При калибровке цвета в каждой
зоне запоминать азимут на
ворота противника
При смене зоны менять азимут
В основном цикле искать мяч
Если мяч найден, вести его по
компасу с новым азимутом
Ввести дополнительное
регулирование по боковым
датчикам ИК-поисковика

25. Благодарю за внимание!

Сергей Александрович Филиппов
Физико-Математический лицей № 239
Санкт-Петербург
[email protected]
English     Русский Правила