roboforum.ru

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


Нужна Помощь

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

Нужна Помощь

Сообщение ALHIMIK » 02 май 2009, 23:00

Доброе время суток
Пролог-
Есть подобие радара - дальнометр на серве , угол обзора сервы(180 градусов) разбиты на 10 частей в которых и снимаются показания дальнометра(пока только 10 разбиений потом доработаю до 20-30) и помещаются в массив
Таким образом в массиве хранятся полярные координаты окружения (которые переводятся в декартовы и выводятся на экран)
И так проблема не могу придумать алгоритм по которуму аппарат будет рационально обходить припятствия
рациональный обезд это НЕ тупое вперёд назад до тех пор пока не отедиш от стенки это(в моём понимании ) обезд припятствий с минимальным отходом от исходной траектории
Спасибо
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение galex1981 » 02 май 2009, 23:04

Одна пока идея есть: Зная радиус поворота твоего робота, учитывай это при подходе к препятствию, сообтветственно когда робот на минимальное расстояние подъезжает, поворачивай его (учитывая показания с остальных полярных координат) и все тут.
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Нужна Помощь

Сообщение =DeaD= » 02 май 2009, 23:06

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

Re: Нужна Помощь

Сообщение ALHIMIK » 02 май 2009, 23:20

Начальная траектория пока прямая
Возврат на траекторию элементарно запоминаем направление и угол поворота после скажем 3 "прямых" шагов поварачиваем на заранее заданный угол
Поворот осуществляется на сервах по этому запомнить велечину поворота не проблема
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение =DeaD= » 02 май 2009, 23:49

Хм, ну, например, можно попробовать реализовать правило правой(левой) руки, если видим у себя на пути препятствие из-за которого не сможем проехать прямо - забираем левее и потом постоянно пытаемся вернуться на исходную траекторию, забирая левее, если не можем двигаться прямо к возвращению на неё.

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

Re: Нужна Помощь

Сообщение ALHIMIK » 02 май 2009, 23:59

Это не сильно отлечается от вперёд назад ит от "радара" смысла мала но всё равно спасибо
Идея
находить самое длинное и близкое припятсвие сравниваем растояние до него скажем с 3 порогами и в зависимости от порога срабатывания поворачиваем от припятствия на заданный угол запомниить поворот и сново сканировать
Нужна конструктивная критика и предложения
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение =DeaD= » 03 май 2009, 00:04

ALHIMIK писал(а):Это не сильно отлечается от вперёд назад ит от "радара" смысла мала но всё равно спасибо

Как это не сильно отличается? :) Фигасе :) У меня ощущение, что я не был понят :)

ALHIMIK писал(а):Идея находить самое длинное и близкое припятсвие сравниваем растояние до него скажем с 3 порогами и в зависимости от порога срабатывания поворачиваем от припятствия на заданный угол запомниить поворот и сново сканировать

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

Re: Нужна Помощь

Сообщение ALHIMIK » 03 май 2009, 00:19

Видимо не понял :oops:
Если не сложно поподробней пожалуйста :beer:

Добавлено спустя 9 минут 25 секунд:
Кстати кто сказал отехал просто отвернулся
на сколько я понял смысл левой руки - поварачивать на лево на всяком припятствии ?
И где тут логика
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение =DeaD= » 03 май 2009, 08:55

ALHIMIK писал(а):на сколько я понял смысл левой руки - поварачивать на лево на всяком припятствии ?

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

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

Re: Нужна Помощь

Сообщение ALHIMIK » 03 май 2009, 11:54

Тогда левая рука не подходит - в поле он не сможет передвигатся (нету стены) а три берёзы обехать надо
С геометрией разбераюсь
СПАСИБО
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение =DeaD= » 03 май 2009, 12:13

ALHIMIK писал(а):Тогда левая рука не подходит - в поле он не сможет передвигатся (нету стены) а три берёзы обехать надо

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

Re: Нужна Помощь

Сообщение ALHIMIK » 03 май 2009, 12:44

Разобрался с геометрией :o Тока мне мк жалко стока считать если одна диагностика(не полная) 250 байт весит

Добавлено спустя 11 минут 51 секунду:
Больше суровых алгоритмов не у кого нет?

Добавлено спустя 17 минут 50 секунд:
Буду пробовать волновой алгоритм :Yahoo!:
Всем спасибо
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение =DeaD= » 03 май 2009, 12:49

Волновой? Жжошь, ты уже построил карту? :) И к тому же волновой алгоритм не возвращает на траекторию, а ищет кратчайшие пути из данной точки во все остальные...

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

Re: Нужна Помощь

Сообщение ALHIMIK » 03 май 2009, 12:58

Карта динамическая - двух мерный массив(получаем с дальнометра полярные умножаем на синус и косинус получаем декартовы)
возврат на траекторию просто - запоминаем "отход"
"конечная" точка - перед ботом(морковка перед ослом)
естественно он немного модернезируется
Конкретно сформулированная задача -
обехать статические(пока) припятствия максимально рационально и вернутся на траекторию
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Нужна Помощь

Сообщение =DeaD= » 03 май 2009, 13:09

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

След.

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

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

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