Мы — команда 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!

Комментарии (4)


  1. Rumlin
    15.09.2015 14:39
    +4

    Вытащили из робота-пылесоса;

    off Уже роботов на запчасти разбирают. Не думал что до этого так быстро доживу /off


    1. iliasam
      15.09.2015 16:39
      +2

      Речь явно идет про лазерный дальномер из пылесоса Neato. На ebay подобные б/у дальномеры стоят 100$. Это самый дешевый сканирующий лазерный дальномер из всех возможных. Очень похожий на него дальномер RPlidar стоит уже 400$ (фактически, как целый пылесос от Neato). Вот потому и разбирают.


    1. noonv
      15.09.2015 19:28

      Да ладно — будущее уже давно здесь :)


  1. Rumlin
    15.09.2015 21:58
    +1

    По теме:

    Не хватало интерактива, взаимодействия с гостями. По факту, робот выглядел как радиоуправляемая машинка в милом облике.

    Он не был забавным. На фото один из миньонов из хэппи мил. Сделан дизайнерами умеющими зацепить не только детей. Знаю взрослых фанатеющих больше детей от некоторых серий игрушек. Именно этот забавно смотрит из стороны в сторону и сжимает-разжимает руки. Простейшая механика.

    Кроме внешнего вида на зрителей можно и нужно воздействовать функционалом. Робот имел бы фантастический успех если бы ему добавили бы иронии. Тем более вся начинка уже есть. Почему бы не сделать опознавание камерой банана? Чтобы сопровождалось криком БАНАНА, а сам робот пытался бы приблизиться к банану и схватить его. А получив банан, робот бы пел песню. Это то, что сходу придумалось. Думаю еще можно было придумать комичных действий, если хорошо подумать.