roboforum.ru

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

Определение локального местоположения

Определение локального местоположения

Сообщение yozik0ff » 07 дек 2011, 10:55

Читаю одну книжку, Enhancing the Pololu 3Pi with RobotBASIC. Там очень хорошо описана реализация нахождения своих координат в комнате с помощью двух маяков. Погрешность определения координат около 1см.

Заинтересованны?

Тогда начну по порядку.
Маяки:
Обычные ИК мояки, посылают пачку сигналов. Расположены в углах комнаты. У которых (смомощью рулетки) известно расстояние между ними.

Робот:
а) два ИК приемника расположенные по бокам робота, которые смогут определить направление к маяку. (повернутся так сказать лицом к маяку, чем точнее повернется, тем меньше погрешность).
б) компас - датчик который определяет насколько развернут робат в градусах относительно "севера".


К теме приложена картинка, где схематично обозначены углы.
Где:
B1 - ИК маяк 1
B2 - ИК маяк 2
rx,ry - искомое координаты
BA1, BA2 - углы ИК мояков (взятые из компаса)
A1, A2 - относительные углы

Алгоритм следующий.

Позицируемся на мояк 1
С компаса узнаем угол BA1 на который мы развернулись.
Позицируемся на мояк 2
Опять же с компаса узнаем угол BA2 поворота.

Считаем относительные углы (вообще они зависят от калибровки компаса, распложения вашей комнаты относительно севера итд.)
A1 = 180 - BA1
A2 = 360 - BA2

Высчитываем тангенс углов (Тангенс - это тригонометрическая функция, представляющая собой отношение синуса угла к косинусу этого же угла (с)КЭП) (еще тангенс обычно считают в радианах, так что нужно соотвественно перевести градусы в радианы)
M1 = tan(A1)
M2 = tan(A2)


Далее можно высчитать уже свои координаты.
Для этого возьмем еще одну переменную RW - это расстояние между маяками (можно взять в сантиметрах)
Тогда
rx = RW / ( M1- M2)
ry = M1 * rx

Вуаля!
Мы имеем координаты своего местоположения rx, ry

Какие могут быть проблемы?
Это мояки, чтобы сигналы мояков друг друга неперекрывали, их нужно пускать с разной частатой, либо включать встрого определеннмо времении. Или включать выклюяать дистационно через вайффайл или блютузом.
Также, былобы неплохо, чтобы мояки высылали не просто пачку сигналов, но свой индификатор + расстояние между маяками RW.
Вложения
beacon.PNG
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: Определение локального местоположения

Сообщение Radist » 08 дек 2011, 07:29

Представим, что я - робот. Вот я стою где-то в комнате, и захотел узнать свои координаты. Я нацелился на один маяк, на второй, пошуршал электроникой и узнал (если я не в Курске живу :) ). Сориентировался и поехал. Есть ли у меня энкодеры и колеса без проскальзывания - не знаю. Проехал сколько-то и снова не знаю где я. Опять начал крутиться. Скучно.

Но когда критикуешь - предлагай. А что, если в одном углу повесить вебкамеру, а мне на башку яркий ИК светодиод (чтоб вебка меня лучше видела). Она видит всю комнату и яркое пятно от меня. Не хватает еще думающего устройства для вычисления координат. Но раз вы хотели по блютузу включать маяки - значит какой-то решатель есть. В общем, обработка кадра, вычисление координат и передача их мне по блютузу в онлайне. Оборудование на мне сильно упрощается, а если я перееду в Курск, то не заблужусь в комнате.
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Определение локального местоположения

Сообщение yozik0ff » 08 дек 2011, 08:35

Ориентирование по веб камере, это немного другое. В таком варианте реализации, нужен стационарный комп, который бы работал все время. В некоторых проектах, это неприемлемо.
С камерой не так легко, как может показаться. Здесь нужно камеру весить ровно над потолком. Иначе будут перспективные искажения. Опять же, разрешение веб камеры очень низкое. Которое не позволит точно высчитать координаты. Скажем на расстоянии в 4 метра погрешность определения местоположения будет около 10 и более см. Тоесть, можно примерно узнать, где мы находимся, но точные координаты высчитать сложно. Нужна камера с хорошим разрешением.

"Но раз вы хотели по блютузу включать маяки - значит какой-то решатель есть" немного не понял о чем идет речь. Внешнего, стационарного компа нет, все вычисления идут на борту робота. Также робот управляет маяками. Управление можно вообще исключить, если маяки будут работать на разных частотах (в железе довольно таки муторно реализуется)
В своем проекте маяками буду управлять вот такими штуками
Хотя, мне до навигации еще очень далеко...
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: Определение локального местоположения

Сообщение =DeaD= » 08 дек 2011, 08:53

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

Re: Определение локального местоположения

Сообщение yozik0ff » 08 дек 2011, 09:26

Погрешность измерения конечно зависит от размеров комнаты.
У меня получается, при 4 метрах, учитывая погрешность гироскопа в 2градуса, в тепличных условиях получается 1см. Хотя на практике, думаю будет намного больше. Если уложится в 5см то ито хорошо будет.
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: Определение локального местоположения

Сообщение =DeaD= » 08 дек 2011, 10:23

Компас наверное, а не гироскоп?

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

Re: Определение локального местоположения

Сообщение NeON79 » 08 дек 2011, 10:31

yozik0ff писал(а):Опять же, разрешение веб камеры очень низкое.

Ой ли? HD-камеры не редкость, и не бесценная штука. :)
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили “Титаник“
2:5020/2140.1979@fidonet
Аватара пользователя
NeON79
 
Сообщения: 536
Зарегистрирован: 09 май 2011, 16:43
Откуда: Украина, Киев
прог. языки: Нецензурный
ФИО: Евгений НеОН

Re: Определение локального местоположения

Сообщение yozik0ff » 08 дек 2011, 10:53

Да, компас. Это я попутал.
Пока еще не знаю, компас в пути из америки. Думаю что тесты на железе не раньше января начну.
Сейчас делаю корпус для робота.

Добавлено спустя 21 минуту 36 секунд:
HD камеры. Чтобы добиться хорошего результата, их нужно подвешивать на потолке.
Иначе, будет мрак.
Сами подсчитайте, разрешение 1080х720
По горизонтали, комната 5 метров, погрешность получаем 0.5см. Если учитывать границы то можно уложится в 1см. Что так то неплохо.
Но по вертикали... теже 5 метров. но есть одна особенность. Нам нужно сканировать пол. Пол в кадре будет занимать гдето 1/3 часть. Итого погрешность выйдет 2см. На практике выйдет чуть больше.
Если уже и делать с камерой, то лучше задействовать майкрософтовский кинект. Но это уже совсем другой класс роботов.

Мыж говорим, про маленькие, мобильные, автономные роботы. Для которых стационарный комп - неприемлем как класс.
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: Определение локального местоположения

Сообщение =DeaD= » 08 дек 2011, 10:55

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

Re: Определение локального местоположения

Сообщение Myp » 08 дек 2011, 11:16

а зачем извините такие точности?
главное же результат, а не повторяемость траектории, это не чпу станок =)

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

Re: Определение локального местоположения

Сообщение yozik0ff » 08 дек 2011, 11:40

Точность нужна, когда робот маленький, к примеру размером в 10см.

У меня цель одна, это чтобы автономный робот, активно ездил по квартире, при этом не застревал.
Зачем нужны координаты робота?
Строить карту помещения - нет. Это бессмысленно, жилая квартира очень динамична. Переставили стул, передвинули пару игрушек. итд. Карта будет всегда неактуальна.
Тогда зачем?
На карте, вручную помечены опасные регионы, в которых робот не должен заезжать. Например, коврик с длинным ворсом, там он просто застревает. Или место на кухне, рядом с раковиной, где очень влажно, и можно повредить схему.
Или скажем, робот может сам помечать опасные зоны, когда он застрял (повысился ток на батарее, акселерометры на ускорения не реагируют) он помечает место красным. И в следующий раз туда уже не заезжает.
Хотя это уже оффтоп. и кделу навигации не относится.
Спросите меня, как переезжать из одной комнаты в другую?
Отвечу: по черной линии полоске на полу, которая пролаживает трассу с одной комнаты в другую. Таки да. Осталось только жену уговорить - приклеить полоски на пол.
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: Определение локального местоположения

Сообщение =DeaD= » 08 дек 2011, 12:16

yozik0ff писал(а):Строить карту помещения - нет. Это бессмысленно, жилая квартира очень динамична. Переставили стул, передвинули пару игрушек. итд. Карта будет всегда неактуальна.

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

Re: Определение локального местоположения

Сообщение boez » 08 дек 2011, 12:35

Да, а я правильно понимаю, что если маяка взять три, то компас можно выкинуть?
Крутиться целому роботу не обязательно, можно ему сделать "башню", которая и будет крутиться, постоянно, а на башню приемник.
2-3 градуса для компаса в квартире - малореально. Если дом железобетонный, на полу будет что попало, а не линейное магнитное поле Земли.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Определение локального местоположения

Сообщение yozik0ff » 08 дек 2011, 12:55

Да, если использовать три маяка, то компас можно убрать.
Третий маяк (назовем B3) поставить между В1 и В2.
Сам радар ввиде ик приемника (таки да, лучше задействовать два приемника) поставить на серву.
Углы замеряем сервой (вернее насколько она отклонилась)
Для расчета нужны будут два угла между B3-B1 и B3-B2
Серву лучше использовать цифровую, они более точно позиционируются.
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: Определение локального местоположения

Сообщение boez » 08 дек 2011, 13:34

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

След.

Вернуться в Сенсорика

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

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

cron