Алгоритм - обход пылесосом территории

Автомат, адаптивный автомат ... разум

Re: Алгоритм - обход пылесосом территории

Сообщение omlin » 18 июн 2008, 13:36

=DeaD= писал(а):2omlin: Сейчас ваши хрустальные мечты разобьются о чугунную попу реальности -

Вы видели карту составленную по энкодерам в сложном помещении достаточно небольшим роботом (чтобы он мог вообще что-то пылесосить заезжая в углы) ?


не видел.
если бы вы мне ее показали, был бы счастлив....

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

а в чем дело-то, ну вот на самом деле?
слишком большие пробуксовки? смените колеса на более шипастые и цеплючие :), будет лучше....
Мой блог "Роботы и робототехника": http://insiderobot.blogspot.com
omlin
 
Сообщения: 39
Зарегистрирован: 31 окт 2007, 14:25
Откуда: Кострома

Re: Алгоритм - обход пылесосом территории

Сообщение =DeaD= » 18 июн 2008, 14:27

Если есть желание - можете провести эксперимент. Недавно RealRobot вроде показывал результаты движения платформы с энкодерами - при проезде квадрата со сторонами порядка 40см (общая длина 1.6м получается) отклонение от исходной позиции не менее 3см (это где-то 2%), а реально порядка 5см. Скорее всего такая же погрешность будет при повороте.

Давайте посчитаем что будет если вы сможете обеспечить погрешность 1% (хотя я не знаю как вы это будете делать). Это значит при проходе комнаты шириной 3 метра 30 раз туда обратно путь составит порядка 90м, погрешность 0.9м, что уже соизмеримо с размером комнаты. Погрешность поворота так же будет 2% от общего угла повотора равного 180° на 30 раз, то есть 5400°, два процента от этого - 54°. И это только в 1 комнате.

Вся карта у вас поплывет.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритм - обход пылесосом территории

Сообщение loid » 18 июн 2008, 14:31

omlin, с тобой полностью согласен. По энкодерам думаю ездить можно и даже нужно. На моём РОБОСОСе стоят очень цепкие колёса. К примеру разворот дулает точно по шагам что ему указываю. Погрешность конечно есть но она незначительная.
По поводу твоего алгоритма надо подумать, идея неплохая.
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Алгоритм - обход пылесосом территории

Сообщение =DeaD= » 18 июн 2008, 14:34

loid писал(а):На моём РОБОСОСе стоят очень цепкие колёса. К примеру разворот дулает точно по шагам что ему указываю. Погрешность конечно есть но она незначительная.

Не путайте единичный маневр и накапливающуюся погрешность за десятки разных перемещений по разной поверхности (или у вас идеальная поверхность чистая и полированная с идеальным же сцеплением? Тогда что же вы её пылесосите, раз она такая вся из себя идеальная? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритм - обход пылесосом территории

Сообщение omlin » 18 июн 2008, 15:18

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


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

Что касается этого первого, единичного обхода, происходящего на этапе №1:
Мне кажется, количество поворотов даже в достаточно сложной квартире будет невелико, и погрешность окажется достаточно незначительной.
Кроме того, в начальной точке пути, для определенности, я бы поставил маяк.
Таким образом, обойдя полностью помещение, робот поймет однозначно, что пришел в ту же точку, из которой вышел.
При этом, если на виртуальной карте линии не сходятся, нужно произвести дополнительные преобразования.
Можно - даже преобразования "случайным" образом, т.е. к какому-нибудь повороту добавить 1 градус, к какой нибудь стенке - 0.5 см и т.д., до тех пор, пока линии не сойдутся.
Даже при таком вот случайном сглаживании точность будет нормальной, а на каждом из прямоугольников - уж совсем хорошей.
Ведь прямоугольники на самом деле цепляются к поворотным моментам на стене, эти поворотные моменты являются своеобразными маяками для робота :)

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

Вот несколько решений, которые, как мне кажется, смогут уменьшить погрешности:
1) использование электронного компаса для отслеживания поворотов (правда, сам не очень представляю как это будет выглядеть... :oops: )
2) добавление к энкодеру на ведущей оси, энкодера на некоем пассивном колесе, которое можно запихнуть под днище и сделать сверхцеплючим (например, состоящим сплошь из резиновых шипов). И показания с двух этих энкодеров усреднять...


2 =DeaD= может быть, у Вас у самого какие-нибудь есть идеи, как решить проблему с погрешностями (только без использования предустановленной карты)? Я смотрю, Вы много с ними работали.
А то я сам - чистый программист, и во всех этих энкодерах понимаю, на самом деле, не так уж много...
Мой блог "Роботы и робототехника": http://insiderobot.blogspot.com
omlin
 
Сообщения: 39
Зарегистрирован: 31 окт 2007, 14:25
Откуда: Кострома

Re: Алгоритм - обход пылесосом территории

Сообщение =DeaD= » 18 июн 2008, 16:35

omlin писал(а):Карта помещения формируется при единичном обходе всего помещения "по стенке", а не при езде "змейкой".

Хорошо, даже если так, по стенке - периметр комнаты 3х4м это 12м, накопленная погрешность при перемещении, если мы смогли получить всего 1% будет достаточно маленькой, но пока мы не видели мобильного робота перемещающегося по неидеальным помещениям с такой точностью. Кстати, надо еще не забыть, что датчики расстояния имеют также неслабую погрешность, те же ИК-дальномеры попробуйте в реальности - 5-10 см как с куста.

omlin писал(а):Что касается этого первого, единичного обхода, происходящего на этапе №1:
Мне кажется, количество поворотов даже в достаточно сложной квартире будет невелико, и погрешность окажется достаточно незначительной.
Кроме того, в начальной точке пути, для определенности, я бы поставил маяк.
Таким образом, обойдя полностью помещение, робот поймет однозначно, что пришел в ту же точку, из которой вышел.

Вернуться в точку - это задача попроще будет, чем обход территории.

omlin писал(а):Можно - даже преобразования "случайным" образом, т.е. к какому-нибудь повороту добавить 1 градус, к какой нибудь стенке - 0.5 см и т.д., до тех пор, пока линии не сойдутся.

Это у вас с чего вдруг погрешность стабильная?

omlin писал(а):А вот обнаруженные в процессе змейки препятствия - это конечно сложнее.
Например, представьте, большое прямоугольное помещение, у стен ничего нет, зато в центре комнаты очень много отдельно стоящих предметов.
Поскольку поворотов в таком помещении всего лишь 4, то цепляться роботу особенно не за что...
Так что, при значительных погрешностях такие препятствия действительно могут привести к путанице (например, робот может дважды обнаружить одно и то же препятствие, и нанести его на карту дважды...)

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

omlin писал(а):Вот несколько решений, которые, как мне кажется, смогут уменьшить погрешности:
1) использование электронного компаса для отслеживания поворотов (правда, сам не очень представляю как это будет выглядеть... :oops: )
2) добавление к энкодеру на ведущей оси, энкодера на некоем пассивном колесе, которое можно запихнуть под днище и сделать сверхцеплючим (например, состоящим сплошь из резиновых шипов). И показания с двух этих энкодеров усреднять...

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

omlin писал(а):2 =DeaD= может быть, у Вас у самого какие-нибудь есть идеи, как решить проблему с погрешностями (только без использования предустановленной карты)? Я смотрю, Вы много с ними работали.
А то я сам - чистый программист, и во всех этих энкодерах понимаю, на самом деле, не так уж много...

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

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

PS: Я и сам изначально программист чистый был, а потом "испачкался" в механике, электронике и т.п. :ROFL:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритм - обход пылесосом территории

Сообщение omlin » 18 июн 2008, 17:35

=DeaD= писал(а):Хорошо, даже если так, по стенке - периметр комнаты 3х4м это 12м, накопленная погрешность при перемещении, если мы смогли получить всего 1% будет достаточно маленькой, но пока мы не видели мобильного робота перемещающегося по неидеальным помещениям с такой точностью. Кстати, надо еще не забыть, что датчики расстояния имеют также неслабую погрешность, те же ИК-дальномеры попробуйте в реальности - 5-10 см как с куста.

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

=DeaD= писал(а):Компас - полезная вещь, а вот лишние энкодеры дадут приемущества только если есть проскальзывание основных колес, а это можно устранить почти всегда.

Понял.

=DeaD= писал(а):То есть наверное можно сделать навигацию чисто по энкодерам и датчикам расстояний, но скорее всего с этим будут огромные проблемы, поскольку надо некоторые мифические удобные для анализа углы, которые робот будет запоминать и отличать. А в реальной квартире в углах обычно куча всего находится и подъезд к ним будет затруднен, как в этой ситуации искать точки привязки я не знаю.


Ваша позиция ясна, большое спасибо за разъяснения!

Все-таки, я полагаю, идея имеет право на жизнь и реализацию. Если, конечно, кто-нибудь попробует ее воплотить :)

Добавлено спустя 5 минут 45 секунд:
Т.е., нужно воплотить и посмотреть как оно будет на самом деле ездить.
Лучшая проверка - эксперимент :)

Вооот....
А что касается маяков, что же, если погрешность окажется слишком большой, то почему бы и не использовать маяки :)
Мой блог "Роботы и робототехника": http://insiderobot.blogspot.com
omlin
 
Сообщения: 39
Зарегистрирован: 31 окт 2007, 14:25
Откуда: Кострома

Re: Алгоритм - обход пылесосом территории

Сообщение Vovan » 18 июн 2008, 17:51

По энкодерам и дальномерам - ИМХО слишком много пропусков и погрешность в реале намного отличается от расчётной и, к сожалению, в худшую сторону. Я неоднократно пытался построить алгоритм для робота используя три энкодера (третий пассивный) и три дальномера (а также использовал контактные датчики - бампера и датчик пола - край стола=газона). Установив всё это на небольшое трёхколёсное шасси пытался "косить газоны" (по сути тот же пылесос) на столе с расставленными на нём стаканами (деревьями) и книгами (прочие препятствия). Результаты очень неутешительные. Кроме того (что очень важно), за один "выход в поле" робот вряд ли сумеет пропылесосить=скосить всю территорию - ему нужна подзарядка. Выйти на зарядную станцию и зарядиться особых проблемм, как известно, нет. А вот вернуться к прерванной работе - проблема. Ну конечно, вернуться то можно, но насколько точно? Конечно, объезд всей территории используя несколько маяков или звёзд, наверняка улучшит качество уборки, однако и здесь есть свои трудности.
А что если применить датчик "травы" (т.е. датчик нескошенной травы)? По-моему это достаточно несложный датчик (ну и алгоритм работы его тоже), а главное он решает проблему погрешностей. А может и в пылесосе датчик "пыли" решит енти сложности? Я где-то звон, про датчик пыли, слышал... тока не помню откуда он... Имея на борту такой датчик, ИМХО, робот абсолютно всю территорию оставит без признаков загрязнений. Не стоит ли "упереться рогом" в решение именно этого - создание датчика пыли (грязи)?
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: Алгоритм - обход пылесосом территории

Сообщение =DeaD= » 18 июн 2008, 18:10

Vovan писал(а):А может и в пылесосе датчик "пыли" решит енти сложности? Я где-то звон, про датчик пыли, слышал... тока не помню откуда он... Имея на борту такой датчик, ИМХО, робот абсолютно всю территорию оставит без признаков загрязнений. Не стоит ли "упереться рогом" в решение именно этого - создание датчика пыли (грязи)?

Жжоте! Чтобы этот датчик проверил позицию - надо попасть им в непропылесосенное место, а если вы умеете попадать датчиком во все непропылесосенные места - тогда какая вам разница датчиком в них попадать или сразу пылесосом? 8)

Если же вы хотите таким образом навигацию устроить - типа везде равномерно грязно, а где чисто - там мы уже были, тогда это тоже отдельный отжиг - типа чтобы пропылесосить квартиру нужно сначала покрыть пол минимум 1мм слоем пыли? :ROFL:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритм - обход пылесосом территории

Сообщение Vovan » 18 июн 2008, 18:52

Ничего не понял. Особенно места усиленные слэнгом. Здесь же всё просто: есть грязь (пыль) - включаем пылесосущий агрегат и едем, с вкл. агрегатом пока грязь (пыль) не кончится или препятствие не появится - нет грязи - выкл. агрегат и едем её (грязь) искать. Фсё!
А может Вы имели ввиду то, что датчик пыли (грязи) не реально?
Вобщем непонятно...
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: Алгоритм - обход пылесосом территории

Сообщение =DeaD= » 18 июн 2008, 21:40

Vovan писал(а):Ничего не понял. Особенно места усиленные слэнгом. Здесь же всё просто: есть грязь (пыль) - включаем пылесосущий агрегат и едем, с вкл. агрегатом пока грязь (пыль) не кончится или препятствие не появится - нет грязи - выкл. агрегат и едем её (грязь) искать. Фсё!
А может Вы имели ввиду то, что датчик пыли (грязи) не реально?
Вобщем непонятно...

А фишка то в чем? Чтобы электричество экономить что ли? Тут проблема как обойти всё помещение вроде?

PS: Слэнг - это два слова "Жжоте!" и "отжиг" чтоли? :) переводите их как "Ну вы даете", "ну вы придумали!" и т.п.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритм - обход пылесосом территории

Сообщение Vovan » 18 июн 2008, 22:14

ИМХО тут проблема всю пыль убрать... или нет? Обойти всё помещение - это несколько другая задача, не нахОдите? Да и с какой целью? Может, если обход территории имеет другой смысл, тогда от цели и нужно плясать?
Экономия эл.энергии это не сама задача, а всего лишь попутный, но не лишний (для аккумуляторного пылесоса!) эффект.
Иными словами я предлагаю освободиться от намазолившей всем уже "навигации пылесоса в квартире", а заставить робота заниматься чисто чисткой (!), т.е. тем для чего он собсно и предназначен. Обход квартиры без пропусков, мне кажется, всем ужЕ понятно без нагромождения аппаратных и переферийных средств - невозможен. Повторюсь: ни нагромождение маяков, ни звёзд, ни куча энкодеров, ни дальномеров, ни компасов ни ещё каких-либо умных или заумных приборов не гарантируют точной навигации автономного механизма двигающегося по неидеальной территории, а значит и результата - чистоты - не будет.
Предлагаю обойти вспять задачу, снабдив робота вышеоговоренным датчиком. Вот и всё. Напоминаю: я не отвергаю или ни тем более опровергаю применение любых вышеозначенных девайсов и гаджетов, а предлагаю альтернативный вариант: не обход всей квартиры, а уборка всей квартиры.
Благодарю за внимание, но здесь для меня тема исчерпана - дальше, уверен, будет всё тоже самое (топтание на месте), а это я уже проходил и о результатах сказано выше. Хотя отрицательный результат - тоже результат.
ЗЫ: спасибо за перевод, а то тут у нас сии словечки имеют неск. другое значение. Очевидно "испорченный телефон" повлиял: кто-то привёз из России и лепит где попало не поняв толком значения...
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: Алгоритм - обход пылесосом территории

Сообщение =DeaD= » 19 июн 2008, 00:27

Vovan писал(а):ИМХО тут проблема всю пыль убрать... или нет? Обойти всё помещение - это несколько другая задача, не нахОдите? Да и с какой целью? Может, если обход территории имеет другой смысл, тогда от цели и нужно плясать?

Читайте название темы.


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

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

Или вы имеете в виду некий дистанционный датчик пыли? :shock:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Алгоритм - обход пылесосом территории

Сообщение loid » 19 июн 2008, 09:03

Предлагаю определиться с обвесом сенсоров. Всяческие маяки и звёзды нумаю неуместны, т.к. очень уж нагромождено всё из-за них. Давайе представим себя на месте пылесоса. Сидим в коробке (шасси), зрения у нас нет, т.к. прикрутить его к чипу не очень то просто а ещё обработка инфы, короче не сейчас это. Поехали далее... в качестве сенсоров бамперы по бокам корпуса (или усы, кому чт онравиться и что лучше применимо), так же есть энкодер со счёткиками (конечно со своей пограшностью). Думаю этого должно хватить.
Для начала просто движемся вперёд до первой преграды, запоминая свой путь. Доехали до преграды, отметили край периметра сквозь которого нельзя проехать. т.е. тупик... проверяем датчики в какую сторону можем двигаться. Едем дальше (всегда фиксируя на карте пройденный путь). Смысл думаю понятен, двигаемся и расставляем тупики, заполняя карту где мы уже проезжали, пока не заполним её полностью. После этого пожно случайным образом проехать по комнате проверить есть ли пыль (с помошью ещё одного датчика - датчик пыли, думаю он понадобится).
Идея конечно сыроватая, нужно доработать. У кого какие мысли по этому.
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Алгоритм - обход пылесосом территории

Сообщение Myp » 19 июн 2008, 10:15

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

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

мб изучая пространство почаще возвращаться на базовую станцию? чтобы сбрасывать погрешности энкодеров
не куролесить по "карте" а покатались, зачистили сектор метр на метр
вернулись на базу
потом опять выезд на след сектор
мб лучше чем по всей комнате блуждать?
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Пред.След.

Вернуться в Алгоритмы

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

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