roboforum.ru

Технический форум по робототехнике.

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

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

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

Сообщение sned » 05 апр 2025, 19:08

Публиковал проект на хабре,но по просьбе размещаю его и здесь,на более "демократичном" сайте.
ccbd6ee26038c862eb63b2cb96d65371.jpg


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

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

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

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

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

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

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

18a96c25345ac9a9bcc75522417870f9.jpg


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

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

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

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

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

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

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

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

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

https://vkvideo.ru/video1029556294_456239017

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

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

https://vkvideo.ru/video1029556294_456239018

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

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

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

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

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

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

Итого около 400$.
sned
 
Сообщения: 306
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

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

Сообщение Sugden » 07 апр 2025, 11:07

Здравствуйте, Сергей!

Спасибо за информацию, интересный робот!
Подскажите, пожалуйста, можно ли использовать разработанный Вами проект как основу мобильного робота без рабочего инструмента?
Например, перемещение робота из одной комнаты в другую для мониторинга или перевозка им небольших грузов?
Или потребуется серьезное изменение программного обеспечения.
Sugden
 
Сообщения: 10
Зарегистрирован: 29 ноя 2024, 17:37
Откуда: Москва

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

Сообщение Scorpio » 07 апр 2025, 19:46

sned писал(а):Публиковал проект на хабре,но по просьбе размещаю его и здесь,на более "демократичном" сайте.

Просьба о размещении была моя, тем более, что @sned с нами уже давно. Мне идея со шваброй настолько понравилась, что даже стал мастерить своего «шваброида». Своих свежих идей нет, а строить роботов-то надо! К тому же, можно дать второй шанс, с десяток лет валявшейся в пыльном углу платформе от «Ванессы».
Оно понятно, что пол быстрее и качественнее протереть самому. Но, придание полезных функций, ставит перед робостроителем интересные технические задачи. Понятно, что автор их уже блестяще решил, и так круто у меня не получится. Пока смастерил привод швабры из доступных материалов:
mix1.jpg
Процесс пошел!

У автора механизм более продуманный, но требует специально изготовленных деталей.
ПО «Ванессы» CAVR – VB6 – RoboRealm. То в шваброиде будет Arduino – C# - Open CV, выполняющие пока, практически, те же функции. Вместо планшета с «мордой лица» теперь микрокомп на WIN11. Разработка ведется прямо в нем с помощью RDT.
В будущем, вероятно, тоже прикручу лидар. Надож когда то начинать освоение серьезных приблуд.

Добавлено спустя 25 минут 25 секунд:
Просьба к автору заценить такой лидар, как специалисту.
Аватара пользователя
Scorpio
 
Сообщения: 2685
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

Сообщение sned » 08 апр 2025, 08:54

Sugden писал(а):Подскажите, пожалуйста, можно ли использовать разработанный Вами проект как основу мобильного робота без рабочего инструмента?
Например, перемещение робота из одной комнаты в другую для мониторинга или перевозка им небольших грузов?

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

Добавлено спустя 17 минут 23 секунды:
Scorpio писал(а):ПО «Ванессы» CAVR – VB6 – RoboRealm. То в шваброиде будет Arduino – C# - Open CV, выполняющие пока, практически, те же функции.

Всячеcких успехов вам. Разработка у всех на разных ПО,тем интереснее сравнение результатов их работы.
Лидар лучше брать TOF,они точнее и нет помех от углов препятствий или от лучей солнца,по цене весьма приёмлемы.Также лучше не брать лидар раскручиваемый пасиком,лишний шум.

Добавлено спустя 13 минут 39 секунд:
Scorpio писал(а):У автора механизм более продуманный, но требует специально изготовленных деталей.

Для изготовления всех деталей понадобились всего лишь сверлилка, напильник ,ножовка ,местами болгарка и конечно же табуретка)
sned
 
Сообщения: 306
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

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

Сообщение esisl » 08 апр 2025, 17:04

Неразрешимая проблема мебельных ножек :(
esisl
 
Сообщения: 1485
Зарегистрирован: 23 июл 2012, 15:24

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

Сообщение Scorpio » 08 апр 2025, 19:23

sned писал(а):Лидар лучше брать TOF,они точнее и нет помех от углов препятствий или от лучей солнца,по цене весьма приёмлемы.Также лучше не брать лидар раскручиваемый пасиком,лишний шум.

Спасибо. Взял такой. Популярный, к томуже имеется SDK для VS.
Аватара пользователя
Scorpio
 
Сообщения: 2685
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

Сообщение sned » 10 апр 2025, 19:38

[/attachment]
Scorpio писал(а): Взял такой. Популярный, к томуже имеется SDK для VS.

нормально,аналог dd06.
кстати возможно для роста вашего робота больше подошла бы такая швабра
шв.jpg


Добавлено спустя 3 минуты 41 секунду:
esisl писал(а):Неразрешимая проблема мебельных ножек :(

при чём тут они?
sned
 
Сообщения: 306
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

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

Сообщение smur » Вчера, 09:19

Очень симпатичный робот получился )
А можно какие то подробности по построению маршрутов итп? Как он думает то? )
У меня руки не дошли до уровня логики принятия решений, так пока и вожусь с обработкой данных от датчиков.
forum10/topic18271.html
Была идея отделить модуль (логику и физику) обработки данных с внешних датчиков от более высокоуровневого модуля принятия решений. То есть модуль принятия решений запрашивает состояние датчиков у модуля обрабатывающего данные с датчиков и на основе полученной информации строит логику дальнейшего поведения. Модуль обработки с внешних датчиков тоже имеет свою простенькую логику для ускорения реакции на внешние воздействия, чтобы, например, кошку не задавить, но баланс распределения логики между модулями еще не проработан.
Сделать качественную обработку данных от всех датчиков, с возможностью быстро вносить изменения в логику (например добавить еще пару датчиков итп), оказалась непростой задачей, когда кол-во внешних датчиков более трех.
smur
 
Сообщения: 91
Зарегистрирован: 22 ноя 2016, 22:00


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: Scorpio, Yandex [Bot] и гости: 1