Пока что скорость - половина от максимума. Иначе вылетает с ринга. Противник конечно вялый. Готов встречаться с более подготовленными.
Текущие проблемы: - оптимизация кода. надо изучить прерывания, чтобы не опрашивать сенсоры в цикле - переключить тыловой сенсор а то порт сгорел - снизить энергопотребление - сейчас 250 mA в состоянии покоя, 600 mA на ходу - улучшить алгоритм отработки боковых и тылового сенсоров. - улучшить код для поиска соперника, чтоб не ездить туда-сюда - повысить скорость в отдельные моменты
Последний раз редактировалось Vooon 21 мар 2008, 02:07, всего редактировалось 1 раз.
Причина:[youtube]
Алгоритм довольно типичный, Программа по циклу опрашивает сенсоры в порядке приоритетов и на них реагирует.
1-й приоритет - не упасть (отъезд от края и разворот) 2-й - атака (только левый глаз - легкий поворот влево, только правый - вправо, оба - вперед) 3-й - контроль над пространством сбоку и сзади (объект слева - поворот резко налево на 90 градусов и т.д.). 4-й - патрулирование (пока противник не обнаружен - ездить туда-сюда)
4-й - да, до края, затем разворот по сигналу сенсоров края. В качестве альтернативы можно стоять в центре и крутиться на месте, поджидая противника.
То что я описал в прошлом посте - строк 100. Еще 200 у меня ушло на сервисные функции (вывод на дисплей, тестовые программы), но это не обязательно. Еще часть кода берется из библиотек (http://orangutan-lib.sourceforge.net/), наверно их еще 200 строками можно заменить, если самому писать.
Только что сделал для робота съемный модуль с дополнительными сенсорами для отслеживания линии. Предварительные тесты проходит, но сильно вихляется. Надо над алгоритмом будет поработать - буду рад советам на форуме.
Вложения
Вид снизу
Вид робота с установленной платой датчиков линии
Последний раз редактировалось Ruslan 24 мар 2008, 01:56, всего редактировалось 1 раз.
Извините за тупой вопрос но дальномеры зачем. Есть же датчики препятствия (если это конечно ни одно и тоже)? И еще вопрос тупее зачем туда пихать LCD? Я знаю я большой чайник.
Кстати Term верно подметил, зачем там LCD? Я так думаю это чисто для получения навыков работы с ЖКИ, а вообще отладку лучше вести через беспроводной модуль и передачи лог файлов или риал-тайм мониторингом.
Дальномеры работают как датчики препятствия. Пока что программа фиксирует приближение на критическое расстояние и никак больше информацию о дальности не использует. Но это дело поправимое. Если посмотрите на роботов, участвующих в соревновании, то шарповские дальномеры наверное самые популярные датчики для обнаружения соперника. см. здесь: http://www.er-online.co.uk/minisumo/links.php
LCD был приделан к плате с моском, которую я купил уже собранной вот здесь: http://www.pololu.com/catalog/product/225 Использую его для вывода меню (выбор программы и параметров) и вывода отладочной информации. Беспроводного пока ничего еще серьезно не рассматривал, но буду признателен за советы. Только учтите, что у меня на моске не осталось свободных ножек.
Я советую тебе использовать шину i2c(TWI) чтобы не было проблем с количеством свободных ножек) Блютус модулей очень много, так что тут дело вкуса, я использую SocketWireless(соответствующая темка есть в разделе Коммуникации).
Дальномеры специально смонтированы на поворотных платформах для облегчения настройки. По ощущениям центральная ось сектора обзора у этих дальномеров не совсем по центру фасада, поэтому на самом деле надо поворачивать наружу правый дальномер. На фотке ошибка нечаянно повернут левый дальномер.