Найдите местоположение, используя только расстояние и подшипник?

Триангуляция работает, проверяя ваш угол на три цели KNOWN.

"Я знаю, что Маяк Александрии, расположенный здесь (X, Y) на карте, и он справа на 90 градусов". Повторите еще 2 раза для разных целей и углов.

Trilateration работает, проверяя расстояние от трех целей KNOWN.

"Я знаю, что Маяк Александрии, расположенный здесь (X, Y) на карте, и я в 100 метрах от него". Повторите еще два раза для разных целей и диапазонов.

Но оба этих метода полагаются на знание того, на что вы смотрите.

Скажите, что вы в лесу, и вы не можете различать деревья, но знаете, где находятся ключевые деревья. Эти деревья были выбраны вручную как "ориентиры".

У вас есть робот, медленно перемещающийся по этому лесу.

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

1) Если это существует, то, что он назвал? Я ничего не могу найти.

2) Как вы думаете, какие шансы иметь два одинаковых "хита" местоположения? Я предполагаю, что это довольно редко.

3) Если есть два одинаковых "хита" местоположения, как я могу определить свое точное местоположение после того, как я переведу робот дальше. (Я предполагаю, что шансы иметь 2 вхождения ТОЧНЫХ углов подряд после того, как я переместил робота, было бы статистически невозможно, запретив рост леса в таких рядах, как кукуруза). Я бы просто вычислил позицию снова и надеюсь на лучшее? Или я каким-то образом включу свою предыдущую оценку позиции в свое следующее предположение?

Если это существует, я хотел бы прочитать об этом, а если нет, разработайте его как побочный проект. У меня просто нет времени изобретать колесо прямо сейчас, и у меня нет времени реализовать это с нуля. Так что, если этого не существует, мне придется выяснить другой способ локализовать робота, так как это не цель этого исследования, если это так, давайте надеяться, что он будет полулегким.

Ответ 1

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

Или почти что-нибудь из вероятностной толпы роботов, Делла, Траун, Бургард или Фокс. Если вы чувствуете амбициозность, вы можете попытаться найти полное решение SLAM - куча библиотек размещена здесь.

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

Ответ 2

Отличный вопрос.

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

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

  • Простейшим методом самолокализации во многих случаях является локализация Монте-Карло. Один из распространенных способов реализации этого - использование фильтров частиц. Преимущество этого в том, что они хорошо справляются, когда у вас нет отличных моделей движения, возможностей датчика и требуется нечто надежное, которое может справиться с неожиданными эффектами (например, перемещение препятствий или затенение ориентира). Частица представляет собой одно возможное состояние транспортного средства. Первоначально частицы равномерно распределены, когда транспортное средство перемещается и добавляется больше наблюдений за датчиками. Состояние частиц обновляется, чтобы отойти от маловероятных состояний. В приведенном примере частицы будут удаляться от областей, где диапазон/подшипники не соответствуют тому, что должно быть видно из текущей оценки положения. При достаточном количестве времени и наблюдений частицы имеют тенденцию объединяться в области, где существует высокая вероятность нахождения транспортного средства. Посмотрите работу Себастьяна Трона, в частности книгу "Вероятностная робототехника".

Ответ 3

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

Затем вы можете определить ориентиры, итерации через деревья и вычисления расстояния до всех его соседей. В Matlab вы можете использовать pdist, чтобы получить список всех (уникальных) попарных расстояний.

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

Как только вы найдете все ориентиры, вы просто triangulate.

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

Ответ 4

Думаю, вам нужно только расстояние до двух ориентиров и порядок их просмотра (т.е. слева направо вы видите точки A и B)

Ответ 5

  • (1) "Роботовое сопоставление" и "перцепционное сглаживание".
  • (2) Два одинаковых удара неизбежны. Так как робот может различать только конечное число X различимых конфигураций деревьев, даже если конфигурации полностью случайны, почти наверняка есть хотя бы одно место, которое выглядит "тем же", что и в другом месте, даже если вы встретите гораздо меньше X/2 разных дерева. Они называются "столкновения паранормальных дней". Возможно, вам повезло, что конкретное местоположение, на котором вы находитесь, фактически уникально, но я бы не стал спорить с моим роботом.

Итак, вы:

  • (a) имеют карту большой площади с некоторые, но не все деревья на нем.
  • (b) a робот где-то в самом лесу что, не глядя на карту, посмотрел на близлежащие деревья и создала внутреннюю карту всего деревья в крошечной области и ее относительное положение с ними
  • (c) К робот, каждое дерево выглядит так же, как любое другое дерево.
  • Вы хотите найти: Где находится робот на большой карте?

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

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

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

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

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

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

(Под "рядом" я имею в виду "достаточно близко, чтобы робот мог определенно подтвердить, что дерево на самом деле там", хотя, вероятно, проще приблизиться к этому с помощью чего-то типа "Мой робот может видеть все деревья в диапазон R, поэтому я только буду беспокоиться, даже пытаясь сопоставить деревья, которые находятся в круге R * 1/3 от моего робота, и мой список расстояний включает только деревья, которые находятся в круге R * 2/3 из определенного дерева, которое я пытаюсь сопоставить" ).

Если вы знаете свою ориентацию с севера на юг даже очень грубо, вы можете создать подписи, "более уникальные", т.е. иметь меньше ложных совпадений на карте и (надеюсь) в реальном лесу. "Соответствие" для дерева, на котором расположен робот, происходит, когда для каждого соседнего дерева на карте есть соответствующее дерево в лесу на "том же" расстоянии и направлении, насколько вы можете сказать, с вашего известного расстояния и angular. Скажем, вы видите, что дерево "Фред" на карте имеет другое дерево 10 метров в квадранте от N до W, но робот находится рядом с деревом, которое определенно не имеет деревьев на этом расстоянии в квадранте N-W, но у него есть дерево в 10 метрах от юга. В этом случае, используя более сложную подпись, вы можете определенно сказать, что робот не рядом с Fred, хотя простая подпись дала бы (ложное) соответствие.

Другой подход: "Цифровая бумага" решает аналогичную проблему... Можете ли вы посадить несколько деревьев в шаблон, который специально разработан, чтобы быть легко узнаваемым?