Как аппетит просыпается во время еды, так и желание создавать растет с количеством реализованных проектов. А последовательное использование изученных технологий повышает интерес и качество. Эта история началась с того, что я собрал 3D-принтер 3D MC3 Мастер v1.1 и сделал подвижные ушки с реакцией на звук.
А вот дальше захотелось не просто создать что-то занимательное, но и полезное. Поэтому я начал работу над созданием своего робота пылесоса и призываю все Хабрасообщество подключиться и помочь где-то советом, а где-то логикой и опытом.





Ну а поскольку у меня уже есть 3D-принтер, то максимум возможных частей я буду печатать сам. А контроллер Arduino Mega 2560 и исполнительные механизмы я успешно нашел на сайте МАСТЕР КИТ. Но к железу мы вернемся позже, а сначала надо разобраться с логикой движения и действий робота пылесоса.

Опытным путем (не моим) были установлены правила создания роботов-пылесосов:
1. Робот должен быть круглой формы, невысокий цилиндр.
2. Колеса должны быть по диаметру, чтоб мог разворачиваться на месте.
3. Подруливающее колесо не нуждается в моторе
4. Главное, чтобы робот мог собирать внутрь себя мусор
5. Без контактного бампера нельзя, он должен охватывать не менее половины периметра робота
6. Центр тяжести робота должен быть рядом с колесами, в идеале совпадать с ними — для лучшего сцепления.
7. Робот должен заряжаться от зарядной станции без вынимания аккумуляторов
8. Мусоросборник должен быть легко вынимаемым.

Алгоритм движения
Существуют два основных способа перемещения роботов-пылесосов и до сих пор ни один из методов не доказал свое полное превосходство. Первый заключается в движении по раскручивающейся спирали. Второй метод заключается в движении зигзагами.



Здесь не учитывается построение карты помещения по снимкам, а все перемещение происходит исключительно исходя из показаний датчиков. Далее, что нужно учесть — это преодоление и обход препятствий. Для этого лучше всего использовать именно бамперы и контактные датчики. Потому что, если по пути следования будет стоять тонкая ножка стула, то лучи нескольких датчиков могут пройти мимо. При столкновении с большим бампером, контроллер понимает с какой стороны находится препятствие и объезжает его.

Уборка
Если обычный пылесос берет свое за счет мощного насоса и большой силы всасывания, то такой же мощности добиться на маленьком пылесосе с автономным питанием невозможно. Опыт подсказал, что наибольшей эффективностью обладает сочетание небольшой щетки и всасывающей турбины. Кроме того, поскольку устройство представляет собой шайбу, то для того, чтобы забирать мусор из углов, в передней части ставятся две вращающиеся щетки, подбрасывающие мусор к основной большой щетке.

Движущая сила
Наилучшей скоростью перемещения будет 25-35 см в секунду. Это не слишком быстро, чтобы все собрать и не слишком медленно, чтобы заряда батареи хватило на сколько-нибудь достаточное пространство. Чаще всего используются подпружиненные редукторы с двигателями. Делается это для того, чтобы остановить движение, если пылесос упадет, повиснет или его поднимут. Я полагаю, что будет правильным использовать шаговые двигатели, так как это позволит задавать скорость движения програмно, не используя редукторы, отбирающие мощность. Передача на колеса будет прямая или ременная. В пылесосе будет всего 5 двигателей: 2 на колеса, один на основную щетку, один на две вращающиеся щетки по бокам, один на втягивающую турбину.

Питание
Планируется питание всей системы от гелевого аккумулятора с напряжением 12В и емкостью 7 Ач. То есть стандартный аккумулятор от ИБП. Преимущество его в том, что он имеет достаточную емкость для обеспечения работы, он дешев и доступен, он обладает достаточным весом, чтобы прижимать пылесос к полу. Основных методов зарядки два: индукционный и прямой контакт. Несмотря на все преимущества прямого контакта, я решил сыграть в пользу беспроводной зарядки: отчасти от того, что это безопаснее (а у меня есть любопытные кошки), отчасти потому что я не хочу потом решать проблему окислившихся или разболтавшихся контактов. К счастью, я нашел отличный комплект для беспроводного зарядного устройства на 12 Вольт PW-WL-12. Ток в 350 мА зарядит аккумулятор при полном разряде за 10 часов, чего многовато, да и аккумулятор так высаживать нельзя. Поэтому я решил обзавестись двумя такими зарядками и установить их снизу и сверху корпуса, обеспечивая двойной ток заряда в 700 мА.

Датчики
Чтобы робот мог ориентироваться в пространстве, не падал со ступенек и не упирался в стены, требуется обратная связь. Реализовано это будет с большим количеством датчиков. К примеру, инфракрасные датчики расстояния не позволят вплотную приблизиться к стене и поцарапать ее. В случае если на пути попадется какой-то небольшой объект, который не попадает в поле зрения датчиков, срабатывают контактные датчики в бамперах. Кроме того, инфракрасные датчики на нижней кромке предотвратят падение робота, если под передним краем окажется пустое пространство. Также пару датчиков потребуется поставить на колеса, чтобы при отрыве от пола устройство прекращало работу.
Датчики будут использоваться такие: ИК — для измерения расстояния, контактные — для бамперов и колес.

Возврат на базу
Одна из самых сложных задач, которые пытаются реализовать все создатели роботов — это возврат к собственной базе для зарядки. И хорошо, когда комната строго квадратная или прямоугольная. В этом случае достаточно установить базу в углу или придвинуть к стенке и механизм возврата на базу становится крайне простым: одной стороной идти вдоль стенки до момента, пока робот не упрется в базу. Но стоит добавить мебели или иметь несколько проемов в другие помещения и задача сразу усложняется. Я решил использовать радиомаяк, чтобы определять расстояние до базы. При отдалении сигнал затихает, а при приближении становится громче. На этом будет основан мой метод поиска базы.

Программирование и пайка
Я изначально не хотел заниматься пайкой и самостоятельной сборкой обвязки контроллера. Поскольку платформа Arduino уже имеет массу стандартных шилдов для подключения датчиков и исполнительных устройств, я буду использовать именно их и постараюсь сделать проект максимально простым и доступным для повторения. Пайке будут подвергаться только контакты датчиков в случае, если они не имеют стандартных проводов подключения. Программировать я буду в стандартном исполнении для Arduino, поскольку это: 1 — просто, 2 — легко повторить. Даже я, знакомый с азами программирования, смог справиться с изучением языка и запрограммировать контроллер для автоматизации системы отопления и вентиляции. Поэтому расчет именно на простоту повторения и исполнения.

Этапы
Все работы над роботом-пылесосом будут разделены на несколько этапов:
1. Создание корпуса, шасси, блока сбора пыли и создание нормального пылесборника с турбиной
2. Распределение датчиков по контуру корпуса и согласование их работы
3. Программирование простейших функций движения и уборки
4. Обход препятствий и логика движения при уборке
5. Поиск базы и правильный подход к ней для полноценной зарядки

Эталон и последователь
Как и в любом эксперименте, должна быть экспериментальная группа и эталонная, чтобы сравнивать полученные результаты. В качестве эталона было решено взять iClebo Arte. В процессе строительства я буду опираться на готовые инженерные решения заводского робота-пылесоса и постараюсь упростить\удешевить имеющуюся модель. В итоге должен пройти сравнительный тест двух пылесосов: самодельного и заводского.

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

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


  1. heathen
    14.07.2015 10:48
    +3

    Робот НЕ должен быть круглым. Более того, на спереди на обоих углах должны располагаться дополнительные крутящиеся параллельно полу щётки. В противном случае у вас всегда будут углы оставаться грязными.

    Кроме того, может быть, всё-таки изначально подумать о более серьёзном варианте: лидаре и построении нормальной карты помещений? У меня с 2011 года работает Neato XV-11. Претензия к нему только одна — отсутствие щёток, о которых я написал в начале, в результате и углы, и пространство около плинтусов остаётся неубранным. Ну, и неудачный выбор аккумуляторов (там никель-металлгидридные, причём без интеллектуальной зарядки) — но это попроще. А так — возвращается на базу даже по лабиринту.

    Ну, и в идеале роботу бы распознавание грязного пола камерой, но для этого к пылесосу нужно приделать хозяйку :-).


    1. shuvaevgl Автор
      14.07.2015 11:00

      Хочется запустить простейшую модель, которая будет собирать пыль и шерсть от длинношерстных кошек. Щетки впереди по бокам будут обязательно. Я об этом написал, когда описывал моторы. Для построения карты, боюсь, не хватит ни памяти, ни мощности ардуино. В качестве аккума- гелевая батарея от бесперебойника. Хватит на уборку на несколько часов, дешево и достаточно долговечно.


      1. heathen
        14.07.2015 11:24

        Щётки по бокам и щётки на передних углах — это вещи слегка разные. Круглый робот не сможет подъехать достаточно близко к углу помещения, чтобы хватило длины щётки.

        Что касается памяти — тут, к сожалению, не подскажу, ибо не имел дела с Ардуино. Но для прототипа можно взять маленький компьютер (тот же Raspberry Pi 2). У них потребление мизерное (могут запитываться от USB2, т.е. не выше 0.5 А), при этом возможности несравнимо выше.

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


      1. heathen
        14.07.2015 11:40

        Вот, кстати, ради интереса, видео того, как работает робот с лидаром и построением полноценной карты. Очень забавно наблюдать за его работой. Только шумный он очень во время работы (на видео только возврат, поэтому шум не очень большой).


        1. shuvaevgl Автор
          14.07.2015 11:54

          Шикарно объехал робот все препятствия. Вероятно дело в датчиках, расположенных под правильным углом, чтобы видеть препятствия. А может действительно, крайне правильную картинку выстроили. Да и не меняли долго место препятствий.


          1. heathen
            14.07.2015 12:11
            +1

            Робот строит карту каждый раз. И у него в башенке стоит лидар, который в реальном времени определяет все препятствия издалека, на основании чего и строит карту. Т.е. можно сначала отправить его убираться, в другой комнате поставить на паузу, построить лабиринт, и он всё равно вернётся на базу (конечно, если в лабиринте есть проезд достаточного размера).


  1. Exion
    14.07.2015 10:51

    У Румбы есть маленькое улучшение в его хаотичном движении, она определяет количество ударов о предметы и на основании этих данных выбирает время уборки. Если ударов мало, значит, считает Румба, комната большая и убираться надо дольше и наоборот.
    у iClebo Pop младшей модели тоже есть улучшение в стандартных алгоритмах движения. В режиме спирали Pop проезжает дважды, то есть двойная спираль.
    Китайцы, ака xRobot имеют самые простые алгоритмы.
    Следующая модель iClebo не будет иметь круглую форму и будет почти на 100% убирать углы за счет нужной формы, боковых щеток и алгоритма уборки углов. Но, на самом деле углы не такая уж и проблема. Раз в неделю, а то и две можно и самому их протереть, там не так уж и много пыли скапливается.


    1. shuvaevgl Автор
      14.07.2015 11:01
      +2

      Полагаю, что робот-пылесос не сможет заменить поноценной уборки, но позволит снизить частоту работы нормальным пылесосом с «через день» на «раз в неделю»


      1. heathen
        14.07.2015 11:28

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


        1. andyudol
          14.07.2015 21:16

          Так есть же iRobot моющий. Scooba называется.


          1. heathen
            14.07.2015 22:43

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


            1. andyudol
              15.07.2015 10:16

              Ну так нормальное явление — решение одной проблемы порождает как минимум две новые.
              В любом случае существуют роботы только для пола. А есть ещё мебель, шторы, ковры, окна. Вот изобрёл бы кто-нибудь робота для мойки окон.


              1. shuvaevgl Автор
                15.07.2015 10:49
                +1

                так вроде есть уже


                1. andyudol
                  15.07.2015 11:45

                  Спасибо.


    1. heathen
      14.07.2015 11:27
      +1

      Всё зависит от того, что вы убираете. Увы, в моём конкретном случае это большая проблема: робот стартует каждый день и каждый день привозит забитый плотно контейнер. Условия, увы: 90 кв. м. на первом этаже плюс БОЛЬШАЯ собака. И хотя называется короткошёрстной, летит с неё так, что без уборки на второй день на полу комки шерсти и пыли. И скапливается, увы, и в углах. Хотя, должен признаться, разница во внешнем виде квартиры при наличии робота и его отсутствии — колоссальная.


      1. shuvaevgl Автор
        14.07.2015 11:56

        Дом, два этажа, сумамарно 200 м кв. Работы роботу хватит более чем :) Я думаю, тут надо два робота-пылесоса: по одному на этаж.
        Кстати, а как боретесь с шерстью на щетке?


        1. heathen
          14.07.2015 12:17

          Там пластиковые лепестки на оси.

          Щётка
          image


  1. malyazin_2010
    14.07.2015 14:39

    Сделали уже такой пылесос на ардуино: vk.com/arduinoandroid?w=wall-54138417_997


    1. shuvaevgl Автор
      14.07.2015 14:55

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


  1. kumbr_87
    14.07.2015 22:23

    Планируется питание всей системы от гелевого аккумулятора с напряжением 12В и емкостью 7 Ач

    Ток в 350 мА зарядит аккумулятор при полном разряде за 10 часов

    Предполагаю что это опечатка т.к. 7Ач/0.35=20, т.е. полный заряд займет 20 часов.
    Еще свинцовые аккумуляторы не рекомендуется разряжать больше чем на 30%, значительно снижается количество циклов, например, при разряде на 50% количество циклов перезаряда будет в 3 раза меньше чем при разряде на 30%. Вы упомянули что сильно разряжать их нельзя, но не указали на сколько поэтому я слегка в замешательстве ведь 30% от 7Ач это лишь 2.1Ач. Предполагаю что это маловато для робота пылесоса.

    По поводу использования шаговых двигателей. Тоже довольно спорный вопрос. Они довольно шумно работают и довольно много весят. Если брать маленькие то придется ставить редуктор из за чего скорость будет значительно меньше. Чтобы не шумели придется использовать микрошаговые режимы, но если не ошибаюсь в таком случае возрастает потребление и значительно падает крутящий момент. Лучше все же обычные моторы с редукторами и энкодерами. Особенно бесколлекторные, правда будет значительно дороже чем с коллекторными.


    1. shuvaevgl Автор
      14.07.2015 23:54

      У меня две индукционных зарядки по 350 мА, поэтому считаем зарядный ток в 700 мА.
      Емкость в 2.1 Ач — это полная емкость аккумулятора у iClebo Arte, а тут пылесос имеет еще 2\3 запаса. Можно и до половины высадить, если подольше покататься. Кроме того, гелевый аккумулятор недорогой и такой можно менять раз в пару лет.
      По поводу двигаталей спорный вопрос: шаговые движки будут стоять на колесах, а значит можно задать скорость передвижения, которая будет выше при возврате на базу и ниже при уборке — очень просто и легко делается. Да и момент у них немалый. Можно нацепить колесо непосредственно на ротор, без дополнительной механики, которая будет вносить свою лепту в снижение надежности робота.


      1. kumbr_87
        15.07.2015 09:53

        У того зарядного который вы указали есть такие характеристики:
        Выходной ток (макс.): 350 мА. Достигается на расстоянии 0,5 мм между катушками.
        Допустимое расстояние между катушками приемника и передатчика: 1-5мм


        Т.е. 350мА это самый максимум, достижимый если одну катушку приложить к другой идеально ровно. Я сомневаюсь что у вас катушка будет снаружи корпуса и что робот будет заезжать/прижиматься с точностью 0.5 миллиметра, темболее для двух катушек, темболее что они будут оказывать друг на друга с вероятностью 99.(9) негативное влияние т.к. не будут синхронизированы между собой и предполагаю будут размещаться довольно близко друг к другу. Так что я бы рассчитывал что суммарно с двух таких устройств вы не получите больше 350мА.

        По поводу емкости аккумулятора. Если не ошибаюсь то у iClebo Arte используется 4S аккумулятор что уже даст некоторый выигрыш в запасенной энергии по сравнению с указанным свинцовым. Также чем больше вес тем больше энергии надо чтобы двигать пылесос. Литиевый аккумулятор будет весить гораздо меньше. Вес не является плюсом как бы сильно его не хотелось выдать за положительную характеристику.

        Про двигатели:
        Шаговые двигатели гораздо тяжелее чем обычные с редуктором. Они имеют хороший момент, но ценой большого потребляемого тока. Будьте готовы к тому что каждый двигатель будет кушать па паре ампер. Да и нормального размера колеса посаженные напрямую на шаговый двигатель этот момент уменьшат пропорционально радиусу. Также в шаговом режиме они очень хорошо вибрируют. Не ясно как это скажется на качестве уборки т. к. робот будет «дергаться». Чтобы уменьшить вибрацию, или например повысить ее тон и сделать движение более ровным придется использовать микрошаговый режим, но это приведет к значительному снижению момента и повышению потребления.

        Ну и до кучи. Радиомаяк не подойдет. Вы не сможете определить корректно направление в сторону базы т. к. в квартире сигнал будет многократно переотражаться, также есть различные мертвые зоны или наоборот зоны в которых сигнал будет проходить лучше. Навигация по радиосигналу только в кино выглядит так красиво. На практике лучше делать как делают остальные производители — использовать на базе инфракрасные излучатели. Например несколько излучателей разной мощности с разным углом рассеивания, которые позволят сначала грубо навестись на базу в зоне прямой видимости а потом более точно, ну и если базы нет в зоне прямой видимости то двигаться используя правило правой/левой руки вдоль стен.


  1. masterkit
    15.07.2015 12:03

    Сегодня, 15 июля, в 15-00 мы будем проводить мастер-класс по 3D-конструированию. Будем делать пример на базе модели принтера МС2. Если вам интересно, то присоединяйтесь