roboforum.ru

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

Michael_K - записки, чтобы не терялись...

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

Michael_K - записки, чтобы не терялись...

Сообщение Michael_K » 18 дек 2009, 04:36

Блог не блог, хранилище заметок.
Буду сюда сваливать нефильтрованные мысли... чтоб не терялись.
==============================================================

Нарисовался вот такой прикольный механизЬм
(c) П.Л. Чебышев 1878:



Мысли по этому поводу такие.
Простая штука из двух рычагов и качалки делает из полуоборота сервы
_равномерное_ и _прямолинейное_ движение.
Это значит что усилие постоянно, а смещение прямо пропорционально ШИМу...
Полезно...

Чтоб не искать:
длина шатуна = корень из двух пополам (уе).
расстояние от центра круга до неподвижной оси рычага = пи пополам (уе).
длина каждого рычага = два (уе).
Сила ноги = момент сервы деленный на одну уе.


MegaBIZON! Даешь скрепыша на плавном ходу! :) :good:

АПДЕЙТ!
Приложены рассчитанные соотношения рычагов. В забугорье этот механизьм называется Hoekens linkage... o_O
Вложения
Chap_03_3ed_p134.pdf
(22.98 КиБ) Скачиваний: 0
Последний раз редактировалось Michael_K 19 фев 2012, 01:13, всего редактировалось 1 раз.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Грубая навигация по дальномеру и топологии помещения...

Сообщение Michael_K » 21 дек 2009, 01:51

Натолкнули на мысль...
Допустим, есть робот с дальномером. Как он может ориентироваться в
"лабиринте" (допустим найти "базу" в соседней комнате)?...

Для этого можно построить скелетную схему помещения:

Типа такого:
map_skeleton.GIF
map_skeleton.GIF (7.2 КиБ) Просмотров: 4962


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

В таких точках можно снимать "слепок показаний радара", по которому
(с некоторой вероятностью, конечно) их можно идентифицировать.

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

Позицию интересующего объекта можно задавать
как направление на него из ближайших ключевых точек.
Локально позиционироваться на объект (взять яблоко или подключиться к базе)
- это уже другой вопрос. Пока не рассматриваем.

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

2. Выбор направления, куда ехать при поиске узла

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

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

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

В общем, можно подумать...

MIN.JPG
Расстояние до ближайшей стены
MIN.JPG (15.72 КиБ) Просмотров: 4916
Последний раз редактировалось Michael_K 24 май 2010, 12:35, всего редактировалось 1 раз.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Michael_K - записки, чтобы не терялись...

Сообщение =DeaD= » 21 дек 2009, 10:01

Обожаю гипотетические бесконечно точные радары, простые помещения и отсутствие перемещающихся предметов в помещении :)

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

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

Re: Michael_K - записки, чтобы не терялись...

Сообщение statistic » 21 дек 2009, 10:27

а у УЗ-дальномера какова погрешность(точность)?
жизнь это компьютерная игра:сценарий так себе, зато графика потрясающая!
удиви печень:выпей воды!
statistic
 
Сообщения: 266
Зарегистрирован: 04 апр 2008, 13:44
Откуда: г.Петрозаводск

Re: Michael_K - записки, чтобы не терялись...

Сообщение EdGull » 21 дек 2009, 10:35

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

Re: Michael_K - записки, чтобы не терялись...

Сообщение Master » 21 дек 2009, 11:37

Вот механика тоже прикольная
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Michael_K - записки, чтобы не терялись...

Сообщение Michael_K » 21 дек 2009, 14:20

Вот механика тоже прикольная

Ага, Тео Янсена тоже видел... Только, имхо, у него все сложнее и кривая, по которой ходит нога,
уж очень кривая... :)

Добавлено спустя 15 минут 43 секунды:
=DeaD= писал(а):Обожаю гипотетические бесконечно точные радары, простые помещения...


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

EdGull писал(а):у УЗ помимо погрешности еще и угол обзора не кошерный

Не факт, что это плохо...

Я использовал УЗ радары в работе.
Точность была порядка 2-3 сантиметра на расстоянии полтора метра при пятне 20 сантиметров в диаметре...

SkyStorm похожую идею пробовал реализовать с компасом...

Эмм... не могу найти :( , не ткнете пальцем?

Добавлено спустя 8 минут 46 секунд:
И, Dead, а собственно какие альтернативные предложения?
Точно таким же неточным радаром рисовать битовую карту в декартовых координатах?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Michael_K - записки, чтобы не терялись...

Сообщение =DeaD= » 21 дек 2009, 14:25

2Michael_K: Я верю что вы сможете объяснить другому человеку как пройти в туалет у себя дома. Вопрос в том, что на роботе пока нету ИИ, поэтому ему придётся писать алгоритм и выдумывать какую-то структуру данных чтобы решить эту задачу, а вот структуру данных вы пока даже близко не начали описывать, тем более в терминах 1 лишь дальномера.

Добавлено спустя 2 минуты 27 секунд:
По дальномеру посмотрите идеи SkyStorm'а: wiki/OR-TT-DiaNa.

Там про диаграммы направленности: wiki/Diagram_Navigation.

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

Re: Michael_K - записки, чтобы не терялись...

Сообщение Michael_K » 21 дек 2009, 14:58

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

Я пытался описать принцип, поэтому и не описывал структуры.
Имхо, реализация тут вторична.

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

Вопрос в том, что не удалось найти стабильную устойчивую к помехам функцию, по которой ориентироваться. Даже с компасом.

Да, вы правы. Я ж и написал - "есть над чем подумать".

Уравнивание плеч в фиксированных (по компасу) направлениях
я считаю менее подходящим кандидатом на такую функцию...
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Michael_K - записки, чтобы не терялись...

Сообщение =DeaD= » 21 дек 2009, 15:02

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

Re: Michael_K - записки, чтобы не терялись...

Сообщение Michael_K » 21 дек 2009, 18:08

Помеделировал слегка...
Очень плохой радар:
Код: Выделить всёРазвернуть
      
      j = j * (1 + (Rnd() / 2 - 0.25))
      j = Sqr(j / 5)
      angle_map(i) = Int(j)

16 направлений.
Нулевое направление случайно болтается на 1/16 оборота.

Едет в сторону, где сумма семи (дальность - противоположная дальность) максимальна...
Делает 200 шагов и ставит розовый кружочек.
simple_model.GIF
simple_model.GIF (13.27 КиБ) Просмотров: 4802

Получилась какая-то фигня... дорабатывать.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Michael_K - записки, чтобы не терялись...

Сообщение =DeaD= » 21 дек 2009, 18:17

вот и я о том же - надо чтобы функция генерила стабильные достаточно частые точки, а в длинных расширяющихся или ветвящихся коридорах абсолютно не ясно к чему цепляться :(

Добавлено спустя 56 секунд:
Может какой-то детектор углов поставить и максимизировать локально видимые углы?

Добавлено спустя 3 минуты 17 секунд:
Тут в целом какие проблемы - если мы пытаемся куда-то стремиться, мы будем постоянно вылетать из помещения в котором находимся и уезжать в светлое будущее, и только там стабилизироваться.

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

Добавлено спустя 1 минуту 40 секунд:
Может поставить детектор углов и запретить сваливать так далеко, что потеряли из виду все наши углы, а вот видя все наши углы пытаемся найти место, в котором, скажем, минимальное расстояние до каждого из видимых углов максимально, как такой вариант?

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

Re: Michael_K - записки, чтобы не терялись...

Сообщение Michael_K » 21 дек 2009, 18:35

Dead, я специально пытался сделать грубый радар.
у него погрешность +- 25%, зависимость нелинейная и дискрет дикий...
Фактически, ни в одной точке на этой картинке он не показывал значений больше 7 или 8.

Тем не менее видно, что даже в таком простом случае робот за конечное время (200 шагов) выходит
в несколько (немного) небольших зон (там у меня размер шага робота постоянный = 5 пикселей
и радиус фиолетового кружочка - тоже 5 пикселей...) и там уже крутится...

Для справедливости, в некоторых местах робот склонен "зависать"
- там есть "неустойчивые узлы".
Например - нижний маленький фиолетовый кружочек слева.
Есть еще точка рядом с верхним углом перегородки в длинном коридоре...
На картинке, правда он там не зависал, но по факту, там есть такая зона...
Хотя при небольших (относительно) отъездах от нее он тут же сваливается
в один из "больших" узлов.

На конкретные локальные признаки я специально старался не опираться,
так как точечные признаки считаю менее помехоустойчивыми.
Поэтому пытался взять "интегральные оценки".
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Michael_K - записки, чтобы не терялись...

Сообщение =DeaD= » 21 дек 2009, 18:58

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

Re: Michael_K - записки, чтобы не терялись...

Сообщение Michael_K » 21 дек 2009, 19:15

Чуть позже попробую, только, имхо, нифига она не поменяется.

Это то же самое, что мельче шаг взять - то есть чаще щелкать радаром,
Я, конечно, математику подзабыл, но кажется сумма случайных величин
с любым распределение стремится к гауссовому распределению...
Путь у нас - это фактически сумма смещений в разных точках.

Я же не сразу такой плохой радар сделал - сначала на "идеальном" пробовал :) .
Пути гладкие, понятно, а стабилизируется там же.

И еще, я ж когда направление считаю, фактически складываю 14 дальностей со знаками.
Там распределение уже даже после нелинейщины к гауссову начинает ползти...

Еще одна причина использовать интегральные оценки
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

След.

Вернуться в Блоги

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

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