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
 
Сообщения: 309
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

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

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

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

Спасибо за информацию, интересный робот!
Подскажите, пожалуйста, можно ли использовать разработанный Вами проект как основу мобильного робота без рабочего инструмента?
Например, перемещение робота из одной комнаты в другую для мониторинга или перевозка им небольших грузов?
Или потребуется серьезное изменение программного обеспечения.
Sugden
 
Сообщения: 12
Зарегистрирован: 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
 
Сообщения: 2694
Зарегистрирован: 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
 
Сообщения: 309
Зарегистрирован: 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
 
Сообщения: 2694
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

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

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

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


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

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

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

Сообщение smur » 12 апр 2025, 09:19

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

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

Сообщение Scorpio » 14 апр 2025, 20:41

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

Было бы здорово выложить в Wiki свои наработки. Многим бы пригодилось. Я, например, не очень понимаю, как построить карту и в ней локализироваться без ROS.
Аватара пользователя
Scorpio
 
Сообщения: 2694
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

Сообщение sned » 17 апр 2025, 18:20

Scorpio писал(а):Было бы здорово выложить в Wiki свои наработки. Многим бы пригодилось. Я, например, не очень понимаю, как построить карту и в ней локализироваться без ROS.

Я подумаю над этим.

Добавлено спустя 52 минуты 40 секунд:
smur писал(а):А можно какие то подробности по построению маршрутов итп? Как он думает то? )

https://rusnauka.com/5_SWMN_2012/Tecnic ... 91.doc.htm
Статья,в ней расказывается как находить траекторию движения на двухмерной карте с препятствиями.
Алгоритм A* (читается: «А со звёздочкой») Это модифицированный алгоритм Дейкстры прохода по графам.Формулы для понимания там ни к чему.
Если общими словами(наверное есть в интернете статьи получше но я с наскока не нашёл) цели излучают в разные стороны и активируют точки карты которые в свою очередь на следующем шаге делают тоже самое до тех пор пока волна не достигнет робота.
Это способ для двухмерного пространства и "круглого" робота,для робота например прямоугольного ,так же ездящего по двухмерной карте уже необходимо учитывать то что робота нельзя поместить в любую точку пространства под любым углом и есть такие точки на карте где он может находиться только на некоторых курсах,в других ориентациях он уже будет задевать препятствия.
Я решил эту проблему тем же методом но на локальной трёхмерной карте.Оси плоскости X и Y , третья ось -это курс робота.
Глобальное движение осуществляется по двухмерному алгоритму,при угрозе столкновения траектория пересчитывается по локальной трёхмерной карте(этот алгоритм более ресурсоёмкий).
sned
 
Сообщения: 309
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

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

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

Еще вопрос.
robot1.jpg
Такая конструкция емкости нужна для обнаружения ее лидаром?

Я пока думаю находить таз для полоскания с помощью камеры. Но камеря смотрит вперед, а швабра приделана сзади...
Аватара пользователя
Scorpio
 
Сообщения: 2694
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

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

На зарядных станциях у роботов пылесосов с лидарами применяют штрих код.У меня применяется три "столбика".Ёмкость с водой может устанавливаться в любом месте и мне не хотелось чтобы сплошной штрихкод перекрывал значительную видимость.А на зарядной станции у меня расстояния между столбиками меньше, что даёт роботу понимание что он видит именно её.
sned
 
Сообщения: 309
Зарегистрирован: 08 апр 2013, 08:09
Откуда: Екатеринбург
ФИО: Сергей

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

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


В ожидании застрявшего на таможне лидара, научил шваброида парковаться на базу по камере. В эстетическом плане это тоже лучше, чем «столбики», как мне кажется. Зарядка также не должна сильно бросаться в глаза и путаться под ногами. Сначала робот едет по разделяющей кафелины линии, уже зная по карте, что в конце этой линии находится зарядная база. Смотрит при этом, соответственно, на пол. Подъезжая к зарядке (передний IR дальномер), робот поднимает камеру и уже целится в желтую блямбу, пока не сработает передний бампер. Контроллер проверяет напряжение заряда. Если его нет, то один раз пытается перепарковаться. Если опять не получается, то сообщает о проблеме (возможно зарядка просто не воткнута в розетку). Перепарковываться еще не приходилось, т.к. контакты находятся с 2х сторон – один обязательно воткнется даже при кривом заезде. В принципе, предок шваброида, «Ванесса» уже умела делать тоже самое, только сейчас я использую EMGU CV. Там, на самом деле все до противного просто. Тем более, что у меня уже есть опыт распознавания игральных костей, что было даже сложнее.
Понятно, что с расчерченным на квадратики кафельным полом, необходимости в лидаре вообще нет. Робот, зная количество пройденных клеток и направление, всегда может определить свое расположение на карте. Но, это частный случай. Тем более, что даже кафельный пол, обычно не имеет легко распознаваемых разделительных линий, если уложен качественно. Для уборки мой вариант тоже не очень подходит, т.к. ширина плитки значительно больше, чем ширина швабры. Соответственно, если ехать все время по центру линии, то будут оставаться не помытые полосы. Если смещать линию по горизонтали, то она легко выскакивает из кадра и робот останавливается. Если приподнять камеру, чтобы дальше видеть, то к линиям сетки примешаются линии от ножек стульев и т.д. В общем, с лидаром получится надежнее, раз люди так делают.
Другая особенность моего помещения, что присутствует стеклянная дверь на веранду, которая точно не распознается лидаром. Разве что держать жалюзи закрытыми во время уборки. Видимо, в таких случаях надо совмещать лидар с УЗ дальномером. В любом случае, механический бампер и защита двигателей от перегрузки по току должны спасти моего шваброида от аварии.
Аватара пользователя
Scorpio
 
Сообщения: 2694
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

Сообщение Scorpio » 29 апр 2025, 00:12

Пришел лидар RPLIDAR C1. Но никаких признаков жизни не подает. :(
Подключаю через штатную приблуду к СОМ порту. Кидаю ему 0хА5 0х50, например, ни какой реакции. Скорость 115200 вроде, но пробовал и другие. Тестовая прога на C# тоже не коннектится. Пичалька. Может у кого есть скомпилированный экзешник для проверки именно этого лидара?
Аватара пользователя
Scorpio
 
Сообщения: 2694
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

Сообщение smur » 29 апр 2025, 00:27

Первое, что нашлось:
https://www.waveshare.com/wiki/RPLIDAR_C1
COMMUNICATION INTERFACE UART @ 460800bps
Working Mode 8-bit data, 1-bit stop bit, no parity - 8n1
Может всё же скорость?
smur
 
Сообщения: 97
Зарегистрирован: 22 ноя 2016, 22:00

След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron