roboforum.ru

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

Приведение робота к маячку

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

Re: Приведение робота к маячку

Сообщение -= Александр =- » 26 фев 2009, 14:22

Ну, тогда только методом научного тыка: поездить в разных направлениях и посмотреть как меняется уровень сигнала. Найти нужное направление и шпарить туда до тех пор пока сигнал увеличивается. Как только он перестал расти - снова запустить метод тыка. И так пока не найдем маяк. :roll: Все-же куда удобнее иметь направленный приемник или хотя-бы два ненаправленных, но боюсь придется растащить антенны хотя-бы на метр, а это не очень удобно в помещении...
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Re: Приведение робота к маячку

Сообщение EdGull » 26 фев 2009, 14:32

Виталий писал(а):Очень интересная задача. Странно, что кто-то не понимает ее условий.
Господа великие практики пусть попробуют ее решить, а потом ДОКАЗАТЬ, что их решение верное, а лучше, что оно наилучшее.

1. наилучшее из чего?
2. что будет являться доказательством?
3. какова будет сумма приза победителю?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Приведение робота к маячку

Сообщение =DeaD= » 26 фев 2009, 15:15

Виталий писал(а):практики пусть попробуют ДОКАЗАТЬ

Жжошь! :P

Какие же они после этого будут практики?

Добавлено спустя 4 минуты 8 секунд:
Виталий писал(а):Хотите сформулировать задачу просто?
Вот: для робота двигающегося на плоскости с постоянной, но неизвестной скоростью и имеющего на борту единственный всенаправленный микрофон привести его к единственному неподвижному источнику звука. Думаю, это правильное условие.

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

Или если быть ближе к реальности (считаем, что OmniWheel не пользуем) - робот может в любой момент времени менять свою скорость в пределах -max_speed ... +max_speed, и с ускорением не более -max_accel ... +max_accel и крутиться вокруг своей оси с угловой скоростью из интервала -max_angle_speed ... +max_angle_speed

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

Re: Приведение робота к маячку

Сообщение Виталий » 26 фев 2009, 16:14

1. наилучшее из чего?
2. что будет являться доказательством?
3. какова будет сумма приза победителю?

1. Из всех возможных вариантов.
2. Математическое обоснование.
3. Если найдутся желающие то можно и приз организовать, но их как обычно - не будет.

Как-то так?

Робот двигается с постоянной скоростью, может менять только направление. Пусть для начала - произвольно.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Приведение робота к маячку

Сообщение =DeaD= » 26 фев 2009, 16:48

2Виталий: Ну если у нас сферический конь в вакууме и погрешностей нету, то алгоритм простой - делаем круг радиусом епсилон (сколь угодно малое), определяем бесконечно точное направление на маяк и едем по нему, пока сигнал вместо роста не начнет затухать :) как только это случилось - возвращаемся назад к пику сигнала, "вот мы и дома" :)

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

:crazy:

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

Re: Приведение робота к маячку

Сообщение boez » 26 фев 2009, 17:11

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

Вот пример алгоритма оценки. Двигаться зигзагом с поворотами в 90 градусов (ступеньками такими) - с одинаковыми отрезками. И сравнивать изменение мощности на соседних отрезках. По ним можно вычислить и точное направление (по синусам), и просто грубую оценку: если приращения положительны и равны - мы едем точно на источник. Если одно из них равно 0, а второе положительно - у нас отклонение 45 градусов. Если они равны по модулю, но одно отрицательно - 90 градусов. Если одно 0, а второе отрицательно - 135 градусов. Ну и если оба равны и отрицательны - 180 градусов. Как-то так.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Приведение робота к маячку

Сообщение EdGull » 26 фев 2009, 17:41

Виталий писал(а):1. Из всех возможных вариантов.

список всех возможных вариантов в студию!
Виталий писал(а):3. Если найдутся желающие то можно и приз организовать, но их как обычно - не будет.

сколько ты лично готов в это дело вложить?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Приведение робота к маячку

Сообщение Vovan » 26 фев 2009, 21:36

А вообще моноухо здесь в реальности сильно вредит. Бинухо вполне бы решало вопрос коррекции направления прямо на ходу, при движении к источнику сигнала. Так что даешь двуухого сферического коня в вакуум! :crazy:

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

Re: Приведение робота к маячку

Сообщение boez » 26 фев 2009, 22:53

Vovan писал(а):-1, ибо корявая задача, бесконечные уточнения и передача авторства (например Виталию, ибо уже ОН ставит задачу, без ведома автора)
"Всенаправленный приёмник" - что это??? Бред какой-то! Дайте реальное определение и пример реализации. Теоретическая точка-"приёмник" (эх! вынужден на ентом языке разговаривать, хоть это и не верно) в пространстве - не принимается.
Касательно "алгоритма оценки" от boez: распространение звука (гы! в вакууме :lol: , ну конечно же в воздушной среде :) ), по-Вашему, имеет линейную зависимость? Если да - читать акустику, если нет - изложите почему, а иначе - голословие (asm)
ИМХО топику место в "задачах не из инета".


Ну автору небольшое замечание конечно сделать стоит - за расплывчатую постановку. Попробую на правах человека с высшим математическим образованием поставить четкое абстрактное условие. Автора прошу поправить, если я его не так понял.

Кстати, я не понял, чем вас не устроил всенаправленный приемник? Пример 1: радиоприемник с вертикальной штыревой, да или с любой другой всенаправленной антенной. Пример 2: Фотодиод, направленный вверх, а над ним зеркальный конус. Пример 3: микрофон, направленный вверх, а над ним твердый конус/иное круглое тело.

Так вот, имеем на плоскости фиксированную точку ("маяк") и подвижную точку ("робота"). Также имеем непрерывно дифференцируемую монотонно убывающую функцию одного переменного (зависимость уровня сигнала на приемнике, то что автор назвал "мощностью", от расстояния до маяка). В любой момент мы можем получить значение этой функции для заданного положения робота, а также имеем возможность перемещать робота с постоянной скоротью в некотором направлении и поворачивать это направление на заданный угол. Задача - описать алгоритм, приводящий робота на маяк.

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

А теперь почему мой алгоритм будет работать. А потому что нам нафиг не нужна линейность, вполне достаточно непрерывной дифференцируемости, если шаги "ступеньки" будут достаточно малы и перемещении на этот шаг производная функции расстояния не будет сильно меняться. Для функции 1/r (радио) или 1/r^2 (свет, звук), с которой убывает у нас сигнал, это означает что размер ступеньки должен быть просто существенно меньше расстояния до маяка. Тогда, несмотря на то что функция уровня сигнала в целом линейной не является, на каждом отрезке ступеньки ее можно считать линейной, причем даже не от расстояния, а от координаты Х в системе с началом координат на маяке и осью Ох, проходящей через робота. А уж в таком случает очевидно, что приращение сигнала равно производной функции сигнала в точке, равной текущему расстоянию до робота, умноженной на косинус угла между направлением движения робота и направлением на маяк. А поворот на 90 градусов нужен, чтобы найти синус того же угла, после чего сам угол находится однозначно. Ну конечно в пределах погрешностей, к которым добавились всякие члены второго порядка от наших линеаризаций - но на то они и второго порядка, чтоб уменьшаться быстрее уменьшения длины отрезка.

В общем, основная идея - непрерывно дифференцируемую функцию всегда можно заменить линейной на малом отрезке.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Приведение робота к маячку

Сообщение Виталий » 26 фев 2009, 23:04

список всех возможных вариантов в студию!

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

сколько ты лично готов в это дело вложить?

Нисколько, я уже решил.


Ну если у нас сферический конь в вакууме и погрешностей нету...

Согласен. Но устремлять к нулю нельзя, можно сказать только для любого сколь малого e>0.

Такая задача будет еще интересна для маяка двигающегося с постоянной скоростью в неизвестном направлении.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Приведение робота к маячку

Сообщение Vovan » 26 фев 2009, 23:19

Кстати, я не понял, чем вас не устроил всенаправленный приемник? Пример 1: радиоприемник с вертикальной штыревой, да или с любой другой всенаправленной антенной. Пример 2: Фотодиод, направленный вверх, а над ним зеркальный конус. Пример 3: микрофон, направленный вверх, а над ним твердый конус/иное круглое тело.
а Вы сами не догадываетесь ЧЕМ не устроил? да нет там Вашей хвалёной "всенаправленности" хотя бы в 3D секторе со стороны конуса. А про "всенаправленную" антенну лучше мне и не рассказывайте как челу с высшим ассенизаторноколхозносантехническоканализационным образованием, ну поймите Вы, это слишком долгие и никому не нужные лекции и понятия полученные, например мною, в КФМФТУиБ... Что касается Ваших дальнейших рассуждений (как чела с высшим математиматическим) я ничего против не имею, только одно: его алгоритм Ваш (хотя он вроде как от boez? или я ошибаюсь?) реально, по-Вашему, реализовать на современной элементной базе? Если да - реализуйте, а там уж и посмотрим есть ли ошибки... и если будут - поправим :D
ЗЫ: без обид, Ваши рассуждения об алгоритме реально заслуживают уважения и вполне понятны, даже мне "сантехнику", а рассуждения о датчиках - извините, но наивны... :)
_________
Sincerely,
Vovan
Аватара пользователя
Vovan
 
Сообщения: 3340
Зарегистрирован: 05 окт 2005, 12:03
Откуда: Литва
прог. языки: asm

Re: Приведение робота к маячку

Сообщение Виталий » 26 фев 2009, 23:33

хотя бы в 3D секторе со стороны конуса.

У нас погоня на плоскости. А кроме того задача теоретическая.

реально, по-Вашему, реализовать на современной элементной базе?

Это неважно, но да.
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: Приведение робота к маячку

Сообщение boez » 26 фев 2009, 23:52

Упс. Вроде boez - это я и есть. Хотя и засомневался поначалу ;)

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

Даже если там при приближении будет вовсе не 1/r, и не 1/r^2 - не важно. Главное, чтобы была однозначная убывающая зависимость от расстояния.

А что касается алгоритма - да реализуем он, более того - в простейшем варианте (не считаем никаких арксинусов, а просто сравниваем 2 числа и поворачиваем в сторону большей дельты) это будет аналог BEAM-робота с двумя фотодатчиками, который даже прямо ехать не умеет , а только поворачивает направо или налево в зависимости от того, в какой его "глаз" попадет больше света. Но только этот робот будет с одним датчиком, а ошибку направления будет определять по дельтам сигнала. Алгоритм на полстранички сишного кода будет. И то, что он приедет достаточно близко к маяку - у меня сомнений не вызывает.

А вобще давайте автора подождем, а то мы тут теории развели на 3 страницы, а он пропал :)
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Приведение робота к маячку

Сообщение Vovan » 26 фев 2009, 23:59

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

Re: Приведение робота к маячку

Сообщение boez » 27 фев 2009, 00:45

О - опять задумался, а может это мы не правы с плоскостью? А не, нифига - вот про плоскость автор задачи написал.

На самом деле в пространстве это решается совершенно аналогично (только вместо двух перпендикулярных направлений надо три, такой угловатой спиралькой двигаться), но к реальности уже имеет намного меньше отношения - потому как требует 3D изотропных излучателей и приемников, а с ними в реальности все хуже - полностью согласен.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Пред.След.

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

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

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