roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 22:51

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Нужна Помощь
СообщениеДобавлено: 02 май 2009, 23:00 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 02 май 2009, 23:04 
Не в сети
Аватара пользователя

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

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 02 май 2009, 23:06 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 02 май 2009, 23:20 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 02 май 2009, 23:49 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Хм, ну, например, можно попробовать реализовать правило правой(левой) руки, если видим у себя на пути препятствие из-за которого не сможем проехать прямо - забираем левее и потом постоянно пытаемся вернуться на исходную траекторию, забирая левее, если не можем двигаться прямо к возвращению на неё.

Локально смотрим карту расстояний и определяем в какую точку можем поехать, которая не будет "углублением" на диаграмме расстояний (тут нужно понятие выпуклости и ориентированной площади треугольника, см. "Векторное произведение на плоскости" на странице вики [[Прикладная геометрия]]).

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 02 май 2009, 23:59 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 00:04 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
ALHIMIK писал(а):
Это не сильно отлечается от вперёд назад ит от "радара" смысла мала но всё равно спасибо

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

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

А вот это как раз и есть - отъехать и повернуть? Где логика? У меня хотя бы все выпуклые препятствия оно будет огибать, объезжая слева, а невыпуклые будут отрабатываться чуть более коряво, но всё равно будут. Можно еще правило левой руки в чистом виде сделать, а то можно проход пропустить...

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 00:19 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
Видимо не понял :oops:
Если не сложно поподробней пожалуйста :beer:

Добавлено спустя 9 минут 25 секунд:
Кстати кто сказал отехал просто отвернулся
на сколько я понял смысл левой руки - поварачивать на лево на всяком припятствии ?
И где тут логика


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 08:55 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
ALHIMIK писал(а):
на сколько я понял смысл левой руки - поварачивать на лево на всяком припятствии ?

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

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 11:54 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 12:13 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
ALHIMIK писал(а):
Тогда левая рука не подходит - в поле он не сможет передвигатся (нету стены) а три берёзы обехать надо

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 12:44 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
Разобрался с геометрией :o Тока мне мк жалко стока считать если одна диагностика(не полная) 250 байт весит

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

Добавлено спустя 17 минут 50 секунд:
Буду пробовать волновой алгоритм :Yahoo!:
Всем спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 12:49 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Волновой? Жжошь, ты уже построил карту? :) И к тому же волновой алгоритм не возвращает на траекторию, а ищет кратчайшие пути из данной точки во все остальные...

Может быть сформулируешь уже задачу корректно? :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 12:58 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужна Помощь
СообщениеДобавлено: 03 май 2009, 13:09 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO