Форум myROBOT.ru » Лаборатория » Алгоритмы » Алгоритм РАЦИОНАЛЬНОГО объезда препятствий

Страниц (4): [1] 2 3 4 »
 

1. бот_м_16 - 03 Мая, 2009 - 00:07:54 - перейти к сообщению
Пролог -
Есть "радар" - ик-дальнометр на серве.Угол обзора сервы(180 градусов) пока разбит на 10 (потом 20-30) частей в которых происходит считывание с дальнометра
Таким образом имеем массив с полярными координатами(которые переводятся в декартовы и отправляются на экранчик)
Итак проблема - не могу придумать алгоритм РАЦИОНАЛЬНОГО объезда препятствий рёв в три ручья Смущение Ламер
Рационального - НЕ тупо в перёд назад пока не отедим а обходя припятствия
Ваши предложения господа Улыбка
2. ОЛЕГ - 03 Мая, 2009 - 00:53:28 - перейти к сообщению
Увидев препятствие, остановиться и повертеть головой- это твое же предложение. Голливудская улыбка

Сразу поправка- оптимальность ограничивается дальностью действия дальномера.

Предположим, что цвет препятствия одинаков на всем его протяжении => погрешность измерений минимальна. С учетом того, что препятствие не всегда будет перпендикулярно первоначальной траектории движения, придется строить треугольник, вершинами которого станут бот и два края препятствия. Выбираем объезд с той стороны, путь с которой будет короче.
Можно извратиться и по достижении края препятствия при помощи того же дальномера следовать вдоль его боковой грани и по ее окончании вернуться к первоначальной траектории движения.

Я так себе это представляю. Улыбка
3. бот_м_16 - 03 Мая, 2009 - 01:06:39 - перейти к сообщению
+ - обтимальный объезд
- - два припятствия близко расположенных не проходимы
но всё равно спасибо
(Добавление)
идея -
находить самое длинное и близкое припятствие отворачиваемся от него на заданный угол(определяется скажем 3 порогами в зависимости от растояния до Большого припятсятвия)
запоминаем поворот и снова сканировать
Жду конструктивную критику Улыбка
4. ОЛЕГ - 03 Мая, 2009 - 01:22:22 - перейти к сообщению
Смотря насколько близко они расположены.

И потом не забывай, когда ты ищешь арку в длиннющем доме- ты тоже вынужден за каждый угол заглядывать, чтобы лично убедиться в наличии там именно арки, а не закутка- гадюшника. Это я про новостройки наши, ты понял о чем я.
То есть это вполне природное поведение- подойти и посмотреть в случае сомнения.
Сомнение- нелинейность показаний дальномера.
У тебя же дома нету круглых шкафов или стен? Улыбка
(Добавление)
Цитата:
находить самое длинное и близкое припятствие
В смысле- самое длинное И самое близкое, или же самое длинное ИЛИ самое близкое?
Цитата:
в зависимости от растояния до Большого припятсятвия
Откуда взялось Большое препятствие?
Прости, я не въехал.
5. бот_м_16 - 03 Мая, 2009 - 01:46:41 - перейти к сообщению
1)САмое (длинное && близкое) Улыбка
Большое - см п.1
Если подозрение на арку далеко я как человек ленивый туда не пойду
Дальнометр по заявлению производителя(Sharp) до 80см(сомнительно но ладно)
а размер бота не больше 150*150 мм
(Добавление)
Вообще я мечтаю об алгоритме который бы находил оптимальный маршрут по двухмерному массиву в котором находятся декартовы координаты относительно бота
Ктонибудь пробовал "левую руку"
(Добавление)
Всем спокойной ночи пошёл спать
6. ОЛЕГ - 03 Мая, 2009 - 02:21:07 - перейти к сообщению
По поводу прохода между препятствиями- я, к сожалению, все забыл нафиг, но нужно посчитать исходя из того, что ты планируешь разделить 180* на 30 шагов- это получается 6*. На расстоянии 80 см это составит сколько сантиметров? Что-то около 8, если я ничего не перепутал.
Таким образом, в любом случае- есть там рядом препятствие или нет, придется дальномер еще на один шаг поворачивать, чтобы убедиться, что препятствие действительно закончилось / либо проход достаточно широк для агрегата 15*15 см.
Если же препятствие засечено на расстоянии, скажем, 40 см- один шаг будет уже 4 см. Т.е. минимум 4 шага должно быть пусто.
С учетом того, что направление измерения не всегда будет совпадать четко с краем препятствия, уменьшать количество шагов не целесообразно. Иначе вырастет погрешность.

Цитата:
Если подозрение на арку далеко я как человек ленивый туда не пойду

А если эта возможная арка ближе чем другой край дома, в котором ты уверен?

Цитата:
САмое (длинное && близкое)
Мы его по-любому меряем?

Цитата:
отворачиваемся от него на заданный угол(определяется скажем 3 порогами в зависимости от растояния
А в зависимости от размера?

Спокойной ночи!
(Добавление)
Я пробовал правую. Робот по кругу ездит. Скучно.
7. Белый Волк - 03 Мая, 2009 - 10:28:26 - перейти к сообщению
бот_м_16
Если у Вас есть двумерный массив в декартовых координатах, внутри которого находится, в каком-то смысле, лабиринт, где Вам нужно найти оптимальный маршрут (речь о минимальном расстоянии от текущей точки до точки назначения, которая должна быть известна), то можете использовать волновой алгоритм.
8. бот_м_16 - 03 Мая, 2009 - 11:48:08 - перейти к сообщению
2 Белый Волк А можно поп побробней?
Да кстати господа лабиринта по сути дела нет - поле и перед ботом три берёзы Улыбка
2 Олег
1)Тогда придётся
2) В каком смысле мереем - оценить его длину можем
3)В смысле ?
(Добавление)
ОГРОМНОЕ СПАСИБО Белый Волк
Буду эксперементировать но видемо это то что мне нужно высший восторг высший восторг Одобряю
9. Белый Волк - 03 Мая, 2009 - 17:17:19 - перейти к сообщению
бот_м_16
Прошу прощения. Я неверно понял задачу. Волна не будет работать в поставленных условиях.

Есть ли у Вашего робота возможность ориентироваться в пространстве (знать свои текущие координаты на хранящейся карте)?
10. бот_м_16 - 03 Мая, 2009 - 19:49:46 - перейти к сообщению
Карта динамическая положение бота 0 0
11. ОЛЕГ - 04 Мая, 2009 - 00:34:34 - перейти к сообщению
Цитата:
2) В каком смысле мереем - оценить его длину можем

Цитата:
3)В смысле ?

Я не понял, зачем тогда выбирать самое длинное препятствие , если заданный угол будет определяться расстоянием?

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

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

Я себе представляю два варианта:
1. Повернуть направо на угол Бэта. Оптимальность определяется выбором наименьшего угла относительно оси движения.
2. Повернуть на 90 *вправо и ехать вдоль оси Х до отметки "2", которую мы высчитываем по формулам, затем поворачиваем на 90* влево и едем вдоль оси У до отметки 16, которую мы тоже посчитали. Оптимальность определяется минимальным выражением 2Х+У, то есть наиболее коротким путем.

Критикуйте.
12. бот_м_16 - 04 Мая, 2009 - 15:47:03 - перейти к сообщению
интересно попробую Одобряю
// Мечты
Вариант осноавнный на волне (скорей всего будет реализововатся на компе) -
составляем полноценную карту (двух мерный массиив karta[n][m] ) где н - Х , м - У
значения ху 75 и 75
Угол обзора 180 градусов разбиваем на 20 зон , ставим фильтр на 75 см (то что дальше 80см дальнометр выдаёт за бесконечность)
снимаем показания (полярные координаты припятствия) с этих зон
переводим полярные в декартовы н и м и получаем карту(в элимент массива с нм вносится значение препятствия) начальная точка известна конечная тоже а дальше класическая волна .Прелесть всего этого в том что маштаб массива 1см(не считая погрешности показаний и расчётов)
// Мечты
Почему не оценивает ? Он всё обсматривает все 180
Но делает разворот от большого и близкого в зависимости от остальных показаний(они какраз и влияют на угол отворота)
(Добавление)
2 Олег Добавка
буфера не помешает те если припятствие слишком далеко не обращать на него внимание
всёже доезжать по У не стоит до шестнадцати
(Добавление)
если несколько припятствий близко находятся проверить влезит ли бот между ними
CODE:

/ \
/ \
/ \

бот

Олег Одобряю Одобряю МОЛОДЕЦ БУДУ ПРОБОВАТЬ Одобряю Одобряю
13. бот_м_16 - 04 Мая, 2009 - 20:18:35 - перейти к сообщению
Правда сложные припятствия так не пройти Закатывать глаза
14. ОЛЕГ - 04 Мая, 2009 - 23:10:12 - перейти к сообщению
А сколько раз ты, уважаемый бот_м_16, весело прыгая по грязи, пытаясь обойти большую лужу, вдруг понимал, что ты в тупике и еще один прыжок- и, в принципе, можно уже идти так, потому что попытка не удалась и ноги мокрые? Голливудская улыбка

Цитата:
(Добавление)
если несколько припятствий близко находятся проверить влезит ли бот между ними

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

Да пребудет с тобой Сила! Улыбка
15. Белый Волк - 05 Мая, 2009 - 04:45:16 - перейти к сообщению
бот_м_16
Волна неоправданно требовательна к ресурсам в данном случае.
Если карта всё же есть - Вам лучше подойдёт алгоритм Дейкстры:
http://ru.wikipedia.org/wiki/Алгоритм_Дейкстры

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