Домашний робот-полотёр

в 11:15, , рубрики: processing, лидары, Робот-полотёр
Домашний робот-полотёр - 1

У многих людей дома нашли применение роботы пылесосы. Их достоинства в помощи по уборке квартир известны, но есть и некоторые
недостатки которые пока практически всем им присущи, а именно:

1) влажная уборка заявляется только у некоторых и по факту вряд ли может считаться полноценной (маленькой тряпочкой хорошо не протрёшь всю квартиру),

2) требуют несколько неприятной операции по удалению из себя контейнера с мусором и периодических чисток щеток и корпуса от намотанных волос и шерсти,

3) весьма шумны в работе.

Этот проект представляет робот-полотёр у которого практически минимизированы перечисленные выше недостатки.

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

Участие человека в процессе это поставить ёмкость‑ведро с чистой водой до мойки, а после мойки вылить грязную воду из него.

Домашний робот-полотёр - 2

Главный источник информации об окружающей обстановке для робота это лидар. В бытовой технике лидары начали использовать относительно недавно, лет десять назад.

Знаменитый лидар с робота пылесоса Neato дал возможность для многих разработок.

На ранних варианах робота я успел попробовать как самодельный лидар с триангуляционным дальномером так и от Neato.

На сегодняшний день лучшими дешёвыми TOF лидарами я считаю китайские лидары N10 и LD06. LD06 видит до 10 метров, имеет малые размеры, безшумный.

N10 способен видеть до 20 метров, лучше передаёт сигнал яркости измерения но немного крупнее чем LD06.Оба лидара хорошо видят тёмные предметы и практически исключены ложные замеры.

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

В принципе количество хранимых карт не ограничено. Робот имеет на борту маломощный мини компьютер с ОС Windows, поэтому проще всего с программой робота работать через
удалённый доступ по WiFi. Есть возможность выставлять задание мойки по будильникам. Параметры мойки и будильников можно также выставлять например с помощью
броузера телефона не включая компьютер робота. На борту есть микроконтроллер ESP32 который со своим интегрированным Wi-Fi позволяет быстро включаться, а также
уходить в сон когда активность робота не требуется.

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

Для сканирования нижней области применены лазерные TOF датчики VL53LOX(2-светят вперёд, 2 — назад).

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

Робот работает от литиевого 12v аккумулятора (10 000ma но по факту у применяемого аккумулятора «честная» ёмкость раза в два меньше) около пяти часов.

Установленная на роботе вэб‑камера позволяет его использовать как робота теле присутствия.

Программирование

В роботе не применяется широко известная ROS операционная система. На это было ряд причин.

Реализация и алгоритмы задач SLAM, построение карты, определение текущих координат робота, построение траекторий движения были полностью разработаны самостоятельно
на простом си-подобном языке программирования- Processing (большая часть времени из более чем пяти лет реализации данного проекта ушло на программирование, что было очень интересно).

Программа получилась весьма компактна (скетч-500кб.) и требует скромных ресурсов ПК.

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

Так например на подавляющем числе роботов используется шасси из двух ведущих колёс и одного или несколько свободно ориентируемых подруливающих.

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

Робот-полотёр имеет прямоугольную форму. Также его особенность, с опущенной шваброй он не может поворачивать с помощью отработки обоих моторколёс в разные стороны.

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

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

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

К примеру ниже показан выезд из положения когда с трёх сторон робота окружают близко расположенные препятствия и разворот на месте невозможен без задевания их.

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

В процессе мойки загрязнённая сторона губки перекладывается один раз и после загрязнения второй стороны робот едет к ведру для полоскания и отжима губки.

В роботе применены общедоступные детали с китайского магазина алиэкспресс.

Наиболее значимые из которых:

  • лидар 70-100, мини ПК 100-130$,

  • мотор колёса с драйверами 100$ (цифра условная, потому что например колёса

  • приобретались почти задаром, сняты с отслужившего детского гироскутера), актуатор 30$,

  • аккумулятор, мк и другая мелочёвка 50$.

Итого около 400$.

Ну и конечно любому изобретателю на определённом этапе, хочется рассмотреть коммерческую реализацию.

Наверное для развития проекта скетч-программу можно сделать открытой, что даст возможность программировать и изучать алгоритмы (в отличии в большинстве случаев от ROS) практически любому желающему.

Автор: sned

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js