Закрыть
Идея и шасси моего мобильного робота

Идея и шасси моего мобильного робота

Сегодня я начинаю публиковать статьи, посвященные созданию своего мобильного робота. На семейном совете ему решено было дать имя Роботоша, собственно поэтому, свой блог я назвал именно так. Целью его создания является изучение различных алгоритмов и элементов робототехнических систем на практике. 

На текущий момент мой робот представляет из себя четырехколесную платформу с установленной на ней платой микроконтроллера и обвешенный некоторым количеством датчиков и интерфейсов для взаимодействия с пользователем. Программное обеспечение находится в самом зачаточном состоянии, поэтому я подробно буду разбирать что и почему именно так реализовано на текущий момент и постепенно двинусь дальше, добавляя функциональность и наделяя его «разумом». Это мой первый робот, поэтому, возможно, какие-то этапы его создания будут ошибочными или тупиковыми.

 

Идея

Идея в первом приближении выглядит следующим образом: автономный робот, обладающий следующими особенностями:

  • 4-х колесная платформа
  • Использование внутри помещения (квартиры)
  • Бесконтактные способы определения препятствий для избежания столкновений
  • Режимы управления:
    1. автономный режим «случайного блуждания» с целью построения карты помещения
    2. режим дистанционного управления
    3. режим выполнения голосовых команд с распознаванием голоса
  • Контроль заряда батареи и самостоятельная подзарядка
  • Вывод информации на символьный LCD-дисплей
  • Звуковая сигнализация

 

Шасси робота

В качестве шасси я решил использовать покупную четырехколесную платформу из чисто экономических соображений (как ни считал, по частям получалось дороже, а эта одна из самых дешевых, которую удалось найти). Мой выбор пал на шасси DAGU 4WD chasis kit, представляющее из себя 4-х колесную платформу с моторами. Вот так выглядит комплект поставки.

Комплект поставки DAGU 4WD chasis kit
Комплект поставки DAGU 4WD chasis kit

Площадки для установки различного навесного оборудования сделаны из красного акрилового стекла с большим количеством крепежных отверстий для установки датчиков, контроллеров, сервомоторов. Акриловое стекло, надо сказать, сверлится очень даже легко, поэтому, если даже что-то не попадет в будущем в готовые отверстия, всегда можно легко сделать дополнительные. Колеса прорезиненные. Моторы коллекторные с пластиковыми редукторами.

Платы

Размеры: 175 х 109 х 3 мм

Расстояние между платами (высота идущих в комплекте стоек): 24мм

Клиренс: 45 мм

Колеса

Диаметр колес: 67 мм

Ширина обода: 26 мм

Моторы

Напряжение: 4.5 — 7.2 В

Обороты холостого хода: 90 ± 10 об/мин

Ток холостого хода: 190 мА (макс. 250 мА)

Крутящий момент: 0.8 кг · см

Максимальный ток: 1 А

На сборку уходит минут двадцать. В собранном виде шасси выглядит вот так:

4wd_chasis_2

4wd_chasis_3

4wd_chasis_4

Недорого купить можно здесь.

С двигателями, честно говоря, у меня вышла засада. Эти двигатели не предназначены для установки на них энкодеров, а для меня это важно, так как я планирую использовать энкодеры для обеспечения обратной связи для более точного позиционирования. Поэтому, скорее всего, если не удастся переделать эти, двигатели в дальнейшем буду менять на другие.

В целом, собранная платформа выглядит достаточно симпатично. Если бы не проблема с энкодерами, я был бы доволен на 100%.

 

Как вы оцениваете эту публикацию? 1 звезда2 звезды3 звезды4 звезды5 звезд (4 голосов, средняя оценка: 5,00 из 5)
Загрузка...


18 thoughts on “Идея и шасси моего мобильного робота

  1. Собираю (ну или пытаюсь собрать) в данный момент похожего робота. Похожие идеи — автономный робот способный строить карту помещения и ориентироваться по ней, автономно заряжаться ну и остальное по возможности. Для этого использую гусеничную платформу Dagu Rover 5 www.pololu.com/product/1551 (4 мотора и 4 энкодера). Пока мозги на ардуино мега 2560, но планирую использовать CubieBoard 2 (или Raspberry Pi 2) с ROS. Идей много. Ваш блог довольно интересный для меня.

    1. Это вы очень правильно сделали, что выбрали платформу с энкодерами. Я изначально ошибся — на используемые мной двигатели нельзя поставить энкодер, а без использования одометрии сделать полноценного автономного робота нельзя. Я как раз сейчас платформу свою переделал (перешел к использованию только двух двигателей) — планирую на этой, максимум на следующей неделе про это подробно рассказать. Проблема использования четырех двигателей — это калибровка и синхронизация. Это можно, только сложно. Поэтому я решил упростить себе задачу и перейти к двухмоторному варианту. С гусеничными вариантами и четырьмя моторами таже беда — лучше использовать два мотора (по одному на каждую сторону), так НАМНОГО проще реализовать схему управления. Это в случае если нужно создать автономного самоуправляемого робота. Если используется дистанционное управление — это совсем другой разговор, мы сами корректируем все погрешности и ошибки в движении, управляя им, поэтому кинематическая схема робота не так критична.

      1. Ну я как поиграл в реальности с этими гусеницами то понял что одометрию будет сложновато сделать даже с одним мотором на каждую гусеницу, т.к. при поворотах платформа поворачивается не ровно относительно своего центра, это зависит от трения поверхности, от неидеальной формы самой платформы и т.д. Я понимаю одометрию целесообразно делать на двух колесах и третьем ролике, так наиболее точно получится. Кстати ничего на сайте не написано про гироскопы, акселерометры, магнетометры, не занимались этой темой? Особенно меня инетересует калибровка магнетометра, и связка этих трех датчиков фильтром калмана. Кстати про свой метод калибровки магнетометра я написал статейку, правда на английском языке (так просто больше аудитория) diydrones.com/profiles/bl...tion-for-dummies.

        1. С двумя моторами (колесами) и третьим неуправляемым всенаправленным колесом я и сделал новую версию своей платформы. На четырех колесах нормальный вариант только со схемой Аккермана (как в автомобилях), но там вся математика очень сильно усложняется и погрешности растут. С гироскопами, акселерометрами, магнетометрами практически пока не разбирался. Я попытаюсь на первом этапе реализовать своего робота без инерциальной навигации. У вас очень правильный подход. Чем больше различной информации с датчиков используется — тем более точную оценку можно произвести. Мне очень понравилась ваша статья. Как дело у меня дойдет до магнетометра, обязательно ваш способ калибровки попробую. Про фильтр Калмана и другие методы оценки в модели пространства состояний в двух словах, у меня есть слайды в pdf-ках «Программирование беспилотного автомобиля», «Локализация мобильного робота» и «Задача одновременной локализации и построения карты (SLAM)» (robotosha.ru/publications). Подробно я буду писать еще неоднократно про различные стороны вероятностной робототехники (в частности, про SLAM). Юрий, вы подпишитесь на новости моего блога (если еще не подписались), мне очень приятно будет видеть вас среди своих постоянных читателей и критиков.

    1. Интересный какой вариант. Сервоприводы на колесах позволяют получить достаточно большую точность. Рисовать с ее помощью чего-нибудь пробовали?

      1. Сервоприводы, датчики холла и по восемь магнитов в каждом колесе... я доволен... ))) вот один из первых вариантов практически без программной корректировки

          1. Ну да и плата после замены м/к на ATmega328p стала «человеческая», а обвязка и была — полный фарш...

  2. Спасибо... Вот немогу сообразить как снять показания с колесных датчиков, записать и потом воспроизвести в обратном направлении... Может ткнёте носом в какой нибудь пример...

  3. Здесь статейка про датчик Холла и пример кода. Датчик Холла действует как ключ. При прохождении мимо него магнита, датчик дает на выходе +5В. Для считывания показаний нужно читать значения на цифровом входе микроконтроллера, к которому подключен датчик. В примере используется прерывание для отслеживания события перехода выхода датчика из состояния 0 в 1 и если это событие возникает (колесо сделало полный оборот) — выдается сообщение в Serial-порт. Вам вместо выдачи сообщения можно будет, считывать значение таймера (например, используя функцию millis в Arduino) и вычислять промежуток времени между двумя последовательными событиями (подробнее про прерывания на Arduino можно почитать здесь). То есть определять время, за которое происходит оборот колеса. И дальше записывать в массив набор таких временных промежутков t1, t2, t3, ..., tn. Для воспроизведения в обратном направлении нужно двигателю дать команду вращаться в течение времени tn с частотой 1/tn, затем в течение времени tn-1 с частотой 1/(tn-1), ... , в течение t1 с частотой 1/t1. Аналогично и для второго двигателя — записываем временные интервалы и воспроизводим их в обратном направлении. Есть только одна проблема: мы не знаем в каком направлении вращается колесо, мы знаем только с какой скоростью оно вращается. Поэтому дополнительно нужно записывать информацию о том, в каком направлении вращался мотор в момент полного оборота — вперед или назад. Эта система имеет погрешность и точно воспроизвести записанное движение вряд ли получится, насколько хорошо или плохо — не знаю, нужно пробовать. Не очень это простая задача и датчиков Холла у меня в наличии нет, чтобы поэкспериментировать. Вы попробуйте начать, вопросы будут — задавайте, постараюсь помочь. Можете в Skype меня найти: antonoff_andrey — так проще будет и быстрее на вопросы ответить.

  4. Доброе время суток, Андрей. Тема была открыта давно, но в поисках своего прочла вашу статью) Я интересуюсь навигацией 4-х колесного робота с помощью установленных энкодеров (тоже 4 штуки). Читала про принцип Аккермана, но никак не пойму, как применить этот принцип, чтобы получить на выходе навигационные параметры. Может Вы сможете подсказать, что почитать, чтобы более менее доступно написано было?

    1. Валентина, здравствуйте! Можете еще почитать статьи Новое шасси для Роботоши и колесные энкодеры DFRobot (описана работа с энкодером) и Описание движения мобильного робота (основы теории колесных платформ). Еще вам понадобятся знания про управление с обратной связью. Могу предложить слайды своей лекции Управление с обратной связью в БПЛА. Там много картинок — это даст общее представление о теме. А, вообще, мой совет — возьмите за основу кинематическию схему: два колеса с моторами + опорный шарик (два колеса = два управляющих сигнала). Математика для платформы с электроприводами на четыре колеса гораздо сложнее (четыре колеса = четыре сигнала управления). То есть фактически, для четырехколесного случая у Вас получится функция четырех переменных.

      1. Андрей, спасибо за дополнительную информацию, уже просматривала ее ранее. Идея четырехколесного робота не моя, поставили перед фактом — надо! а как представить алгоритм обработки полученных сигналов пока не знаю)

Оставить ответ

Ваш email не будет опубликован.Обязательны поля помечены *