Мы — команда uMove, студенты Технопарка в Бауманке и резиденты ЦМИТ Академии, занимаемся различными web проектами для своего удовольствия и немного железом. Сегодня мы хотим представить на ваш суд нашего робота миньона. Система состоит из TCP клиента (робота) и сервера (панели управления оператора).
Идея
Робот, как электромеханическая, хардварная, часть проекта существовал еще за пару месяцев до Технопарка. Он разрабатывался для участия в соревнованиях автономных роботов Eurobot 2015, но по стечению обстоятельств ни на один матч так и не попал. Поэтому было принято решение дать проекту вторую жизнь в рамках домашнего задания. Развить функционал программного обеспечения и повысить качество подготовки.
Электроника и электромеханика
Имея некоторый опыт в разработке электроники, мы решили остановиться использовании уже знакомых нам комплектующих. Помимо опыта, мы опирались на ценовой фактор и наличие компонентов у себя или в магазине. Итого у нас получилось:
- ODROID-X2 — одноплатный компьютер с arm версией Ubuntu на борту используется в качестве основного вычислительного блока;
- NUCLEO-F411RE — плата на базе микроконтроллера STM32F4 для работы с драйверами двигателей и энкодерами;
- SPARK — Wi-Fi модуль с микроконтроллером STM32 для мониторинга заряда банок LiPo аккумуляторов, а также для управления селфи-палкой и диодной лентой;
- Стабилизаторы питания для напряжений 3.3, 5 и 12 Вольт с максимальным выходным током от 3 до 10 Ампер;
- Коллекторные двигатели с крутящим моментом 28 кг*см каждый;
- Драйвер коллекторных двигателей;
- Лидар — оптический радар, совершает 1800 измерений в секунду. Оптопара вращается с частотой 5 об/сек и измеряет дальность препятствий на каждом углу от 0 до 359 градусов. Вытащили из робота-пылесоса;
- 2 web камеры, на селфи-палке установлен широкоугольный объектив;
Софт
Софт целиком написан на С++, как клиент, так и сервер. Сервер выступает в качестве GUI для управления роботом. Для графики использовали библиотеки SDL. На клиенте используется openCV для работы с камерами, а также самописный класс для общения компьютера с микроконтроллерами по UART. Приборная панель выполняет следующие функции:
- Отображение видеопотока с камер;
- Управление движением робота кнопками W, A, S, D;
- Отслеживание заряда батарей;
- Включение звукового сопровождения робота;
- Съемка селфи и отправка снимков в инстаграм и вконтакте;
Корпус
Корпус целиком напечатан на 3D принтере. К сожалению, в мастерской не оказалось принтера с нужными размерами области печати, поэтому пришлось печатать по частям, а затем сваривать полученные детали. Верхнюю часть миньона мы оставили правдоподобной. При проектировании нижней части решили не копировать персонажа, а сделать максимально удобной для колесного робота: сделали крылья для колес, бампер и вырез для лидара, разъемы под кнопки питания и крышку аккумуляторного отсека.
Селфи-палка
Идея с научить робота делать селфи возникла за неделю до сдачи проекта. Робота отправили на Startup Village, где его хотели проверить в реальных условиях. Как выяснилось, робот не вызывал особых эмоций у посетителей. Не хватало интератива, взаимодействия с гостями. По факту, робот выглядел как радиоуправляемая машинка в милом облике. Что же делать? Ответ пришел сам собой, когда в Сколково приехал Медведев. Все, что делала толпа в его присутствии — это делала селфи! Ок, робот тоже будет делать селфи!) Оставалось только найти подходящую камеру и сервопривод. Сейчас мы используем дополнительный сервер, на котором можно посмотреть все отснятые фотографии и запостить их в соц. сети. Это сделано для того, чтобы не отправлять в соц.сеть лишний мусор из неудавшихся снимков. Кроме того, отдельный сервер позволит в дальнейшем отправлять посты в разные соц.сети, не меняя ПО робота.
Развитие
Как и все на свете, робот требует постоянного усовершенствования. Отказавшись от идеи автономного робота, львиная доля железа стала ненужной: вместо ODROIDа можно смело ставить менее мощную Raspberry Pi, лидар никакого функционала не несет, NUCLEO и SPARK можно смело заменить за дешевую Arduino Uno. Итого, получается экономия около 9 тыс. рублей. Кроме того, очень много времени ушло на проектирования сборной конструкции, в следующий раз будем тщательней искать 3D принтер с большей областью печати.
Очень хочется получить обратную связь от любителей и профессионалов, впечатления и советы. Всем BANANA!
Автор: HarryMorgan