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

Главный источник информации об окружающей обстановке для робота это лидар. В бытовой технике лидары начали использовать относительно недавно, лет десять назад.
Знаменитый лидар с робота пылесоса 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