Задание в средней возрастной группе Международных Состязаний Роботов в 2012 году позволяет почувствовать конструкторов и программистов роботов первооткрывателями. |
Конечно, ландшафт в случае состязаний - условность, он задается усложняющими элементами на поле:
Как видно из схемы, здесь есть спуски, подъемы, обрывы, горки и препятствия-брусья, по которым и должен перемещаться робот. Только в области с кеглями-ресурсами и области с базовым лагерем роботу разрешается ездить по самому полю. Все остальное время, робот должен проводить в средней зоне, на 5-ти сантиметровом возвышении без права спуститься с нее.
В этом задании, как видно минимум явных опознавательных элементов поля (черных линий, цветных квадратов и т.п.), поэтому основная трудность робота - правильно позиционировать себя. Особенно остро встает вопрос позиционирования, когда робот уже поднялся на возвышение. Иначе робот рискует съехать одним из колес в "море", либо разогнавшись вылететь с обрыва.
Соответственно перед разработчиками робота возникает задача, каким образом заставить робота двигаться на безопасном расстоянии от краев возвышения. Очевидный способ - аккуратно просчитать по количеству оборотов двигателей все места, где робот должен ехать прямо, и на сколько должно повернуться то или иное колесо при выполнении поворотов. Самый большой недостаток этого подхода - ненадежность - робот не всегда проезжает ровно столько сколько ему указывают, тоже самое и для поворотов - гарантировать точность поворота вплоть до градуса невозможно (см. соответствующую статью на блоге) . Как результат, ошибка движения накапливается, робот в один прекрасный момент оказывается у края обрыва и падает.
Другой способ - начать использовать сенсоры для определения края. Практически сразу же приходить сенсор расстояния (ультрасоник), однако, следует помнить, что данный сенсор медленный и не на всех расстояниях работает. Другое не столь очевидное решение - использовать световой/цветовой сенсор, подразумевая, что освещенность одинаковой по цвету поверхности будет разной на разных высотах - подобная возможность рассматривалась в олимпиаде прошлого года для определения размеров кубиков.
Чтобы определить какой из сенсоров использовать - нужно проверить, насколько каждый из них подходит для условий, созданных на поле состязания. Для этого можно воспользоваться подходом из прошлой статьи - собрать данные во время движения робота вблизи границ препятствий и проанализировать какой из датчиков лучшим образом позволяет определить эти границы.
Для начало надо собрать "экспериментального робота" и разместить на нем сенсоры.
Программа для сбора данных будет простая:
* робот включает двигатели и едет на маленькой скорости вперед
* пока робот едет, в цикле опрашиваются сенсор расстояния и цветовой сенсор, показания сенсоров записываются в файл
* пауза между соседними замерами примерно 40 милисекунд
* как только 75 измерений сделано, моторы выключаются.
task main() {
SetSensorLowspeed(IN_4);
SetSensorColorRed(IN_3);
ClearScreen();
Wait(500);
OnFwd(OUT_BC, -20);
int dataUS=0;
int dataLI=0;
long t0, time;
byte fh;
short bw;
string write, tmp;
t0=CurrentTick();
DeleteFile("data.csv");
CreateFile("data.csv", 4096, fh);
for(int i; i<75; i++) {
dataUS=SensorUS(IN_4);
dataLI=Sensor(IN_3);
time=CurrentTick()-t0;
write=StrCat(NumToStr(time), ";",
NumToStr(dataUS), ";", NumToStr(dataLI));
WriteLnString(fh, write, bw);
Wait(40);
}
CloseFile(fh);
Off(OUT_BC);
}
В ходе двух прогонов на разной конфигурациях возвышенности (см. фотографии выше), получаются две таблицы. В каждой из них есть показания с обоих сенсоров. Для большей наглядности, удобно построить графики:График показаний сенсоров при подъезде к спуску с горки:
График показаний сенсоров при подъезде к обрыву:
Проанализировав эти графики можно сказать, что сенсор освещенности/цвета однозначно определяет ситуацию с изменением высоты, в следствие подъезда к горке или обрыву. Показания стабильно нарастают в течении 600 миллисекунд при подъезде к горке, и в течении 200 миллисекунд при подъезде к обрыву. Сенсор расстояния хорошо определяет наличие обрыва (500 миллисекунд), но не дает хорошей индикации при появлении горки.
нет инструкции по сборке?
ОтветитьУдалитьЧего нет, того нет.
Удалить