среда, 22 апреля 2015 г.

Готовимся к Евроботу-2015. Часть 3. Промежуточные итоги.

Итак, уже завтра (да, выходит, что завтра) начнётся российский этап соревнований. В пятницу нам предстоит пройти гомологизацию - допуск к участию в соревнованиях, проверку роботов на соответствие регламенту, а в субботу и воскресенье должны состояться заезды.

Боюсь делать какие-либо оценки шансов нашей команды на победу. Софт немножко сбоит, периодически выплывают довольно забавные баги, которые мы стараемся оперативно вылавливать и править. Дмитрий Иванов расписывает стратегию поведения робота (на Python, как и хотелось), я послеживаю за состоянием архитектуры и исправляю ошибки. Рабочая идиллия.

Однако, расскажу более подробно о происходящем.


О железках


По ходу подготовки мы почти сразу сделали вывод, что в следующем сезоне стоит более серьёзно подойти к вопросу управляющей платы. Во-первых, одного аппаратного UART оказалось явно недостаточно. Во-вторых, после столь быстрого и относительно безболезненного внедрения новой управляющей системы зачесались руки развернуть на роботе какую-нибудь бортовую шину, CAN или RS485/Modbus. Да и I2C отдельной колодкой будет явно не лишним.

Отдельной проблемой стало то, что из-за работы с шаговыми движками (коих драйвером предусмотрено аж 3) плата захромала в плане производительности. У 8-битного AVR-контроллера не хватает времени на то, чтобы на прерываниях генерировать ЧИМ (частотно-импульсный сигнал) для управления шаговиком, и параллельно генерировать ШИМ достаточной точности для сервомашинок. Может быть, если бы мы использовали возможности аппаратных таймеров AVR, проблема несколько уменьшилась, но плата была изготовлена без учёта этих особенностей, и сигнал генерируется на прерываниях. Разумеется, появляются "перекрывания" прерываний, из-за чего сигнал, подаваемый на сервомашинки, немного плавает во времени. В ответ на это сервы постоянно подрагивают, что никак не способствует эстетической красоте конструкции, а также точности работы манипуляторов и экономии электроэнергии.

Раз уж заговорили об электроэнергии. В связи с тем, что на плате появился бортовой компьютер (Raspberry Pi Model B+), оно несколько подросло, к тому же у нас пропала возможность часто включать-выключать робота, ибо на загрузку/выключение ОС требуется время. Установленные на плате Stepper импульсные стабилизаторы пока что справляются с работой, но неплохо греются.

В дальнейшем на роботе всё же хочется увидеть нечто чуть более солидное, чем ардуиновскую AVR-ку. В идеале это должен быть ARM, с ядром Cortex-M4 (STM32F4-серия выглядит отличным вариантом). На плате обязательно вывести интерфейсные разъёмы для USB и CAN (RS485), UART и I2C.

На плате оставить только логику управления непосредственно железом и коммуникацию. Все управляющие вычисления стоит переносить на более производительный бортовой компьютер. И вот тут...

О софте


Переход на скриптование вместо постоянной перепрошивки контроллера вызывает лютый восторг. В самом деле, теперь не нужно постоянно дёргать разъём на плате для программирования, никакого шаманства с кнопками. Более того, сетевая архитектура программы позволила отлаживать стратегию, запуская скрипты прямо на рабочем ноутбуке, без необходимости загрузки на бортовой компьютер. Оказалось очень и очень удобно.

Разумеется, на время заездов скрипты будут загружены на бортовой компьютер и запускаться локально, дабы не поймать проблем на загажгруженности радиоэфира.

Иногда в софте всплывают интересные баги. Например, сегодня пришлось срочно сорваться в лабораторию, потому что во время отладки робота начали сходить с ума сервомашинки. На практике оказалось, что с ума сходит только одна, и только при определённом с точностью до градуса положении другой сервомашинки. Стоило это значение изменить на градус, и всё корректно заработало. Чудеса. На самом деле надо будет после всей этой суматохи разобраться, в чём дело.

Подытог


Атмосфера в команде накаляется. Народ устал, а впереди нас ждёт самое нервное во всём процессе участия в соревнованиях - заезды. Тот момент, когда из робота выдёргивается стартовый шнур, и он начинает двигаться. И ты смотришь на него, а в голове вертятся мысли, в каком месте что-то может пойти не так, и какие проблемы проскакивали во время подготовки. И теперь уже ничего нельзя исправить или изменить. Вот он, робот, двигается по столу, размахивает манипуляторами, выполняет поставленную задачу. 90 секунд непрерывного напряжения.

Уже совсем скоро.

Комментариев нет:

Отправить комментарий