Подтвердить что ты не робот

Ищете способы, чтобы робот мог найти себя в доме

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

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

Прямо сейчас у моего робота есть:

  • Одна веб-камера
  • Три бесконтактных датчика (около 1 метра)
  • Компас (теперь не используется)
  • Wi-Fi
  • Его скорость может варьироваться, если батарея заполнена или почти пуста.
  • Нетбук Eee PC встроен в робота

У вас есть идея сделать это? Существует ли какой-либо стандартный метод для таких проблем?

Примечание: если этот вопрос принадлежит другому сайту, пожалуйста, переместите его, я не смог найти лучшего места, чем Stack Overflow.

4b9b3361

Ответ 1

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

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

  • Вы отслеживаете кучу частиц, каждая из которых представляет одно возможное местоположение в среде.
  • Каждая частица также имеет связанную вероятность, которая говорит вам, насколько вы уверены в том, что частица действительно представляет ваше истинное местоположение в окружающей среде.
  • Когда вы начнете, все эти частицы могут распределяться равномерно по всей вашей среде и получать равные вероятности. Здесь робот серый, а частицы зеленые. initial particle filter
  • Когда ваш робот перемещается, вы перемещаете каждую частицу. Вы также можете разделить каждую вероятность частиц, чтобы представить неопределенность в том, как двигатели фактически перемещают робота. particles after movement
  • Когда ваш робот что-то наблюдает (например, ориентир, видимый с помощью веб-камеры, сигнал Wi-Fi и т.д.), вы можете увеличить вероятность частиц, которые согласны с этим наблюдением. particles after observation
  • Вы также можете периодически заменять частицы с наименьшей вероятностью новыми частицами на основе наблюдений.
  • Чтобы решить, где именно находится робот, вы можете использовать частицу с наивысшей вероятностью, кластер с наивысшей вероятностью, средневзвешенное значение всех частиц и т.д.

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

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

Ответ 2

Если вы можете поместить некоторые маркеры в комнату, использование камеры может быть опцией. Если 2 известных маркера имеют смещение angular (слева направо), то камера и маркеры лежат на круге, радиус которого связан с измеренным углом между маркерами. Я не помню формулу сразу, но сегмент дуги (по этому кругу) между маркерами будет в два раза больше угла, который вы видите. Если у вас есть маркеры с известной высотой, и камера находится под фиксированным углом наклона, вы можете вычислить расстояние до маркеров. Любой из этих методов сам по себе может пригвоздить вашу позицию, учитывая достаточные маркеры. Использование обоих поможет сделать это с меньшим количеством маркеров.

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

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

Не уверен, что у вас есть математический фон, но вот книга: http://books.google.com/books/about/Applied_optimal_estimation.html?id=KlFrn8lpPP0C

Ответ 3

QR Code

Плакат QR Code в каждой комнате не только сделает интересную часть современного искусства, но и будет относительно легко заметить с камерой!

Ответ 4

Это не заменяет принятый ответ (это здорово, спасибо!), но я бы рекомендовал получить Kinect и использовать его вместо вашей веб-камеры либо через недавно выпущенные официальные драйверы Microsoft, либо используя взломанные драйверы, если ваш EeePC не делает У меня Windows 7 (предположительно это не так).

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


Независимо от того, что принятый ответ действительно не учитывает, как выбрать ориентиры в поле зрения, и просто предполагает, что вы можете. Хотя драйверы Kinect уже могут включать обнаружение функции (я не уверен), вы также можете использовать OpenCV для обнаружения функций на изображении.

Ответ 5

Одним из решений было бы использовать стратегию, похожую на "заливку залива" (wikipedia). Чтобы контроллер мог точно выполнять зачистки, ему нужно дистанционное расстояние. Вы можете откалибровать свой бот с помощью датчиков приближения: например, в течение 1 с = xx в непосредственной близости. С помощью этой информации вы можете переместить своего бота на точное расстояние и продолжить подметать комнату, используя заливку заливом.

Ответ 6

Предполагая, что вы не ищете обобщенного решения, вы можете действительно знать форму, размер, потенциальные препятствия и т.д. Когда бот существует factory, нет информации о его будущей операционной среде, какой тип заставляет его быть неэффективным с самого начала. Если вы это делаете, вы можете запрограммировать эту информацию, а затем использовать основные измерения (например, поворотные энкодеры на колесах + компас), чтобы точно определить его местоположение в комнате/доме. На мой взгляд, нет необходимости в триангуляции Wi-Fi или сумасшедших настройках датчиков. По крайней мере, для начала.

Ответ 7

Когда-либо рассматривали GPS? Каждая позиция на земле имеет уникальные GPS-координаты - с разрешением от 1 до 3 метров, а при использовании дифференциального GPS вы можете перейти в диапазон до 10 см - больше информации здесь:

http://en.wikipedia.org/wiki/Global_Positioning_System

И у Arduino есть много вариантов GPS-модулей:

http://www.arduino.cc/playground/Tutorials/GPS

После того, как вы собрали все ключевые точки координат дома, вы можете затем написать рутину для ардуино, чтобы переместить робота из точки в точку (как было собрано выше) - при условии, что он будет делать все эти препятствия. /p >

Более подробную информацию можно найти здесь:

http://www.google.com/search?q=GPS+localization+robots&num=100

И внутри списка я нашел это - специально для вашего случая: Arduino + GPS + локализация:

http://www.youtube.com/watch?v=u7evnfTAVyM

Ответ 8

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

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

Ответ 9

Используйте Ultra Sonic Sensor HC-SR04 или аналогичный. Как сказано выше, расстояние до стен от робота с датчиками и части комнаты с QR-кодом.

Когда вы приближаетесь к стене, поверните на 90 градусов и двигайтесь по ширине вашего робота и снова поверните на 90 градусов (т.е. на 90 градусов налево) и снова переместите свой робот, я думаю, что это поможет:)

Ответ 10

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

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

Удачи!

Ответ 11

Я работаю над проектом компьютерного видения Python на малине Pi, чтобы позволить роботу без кодировщиков более точно отслеживать использование слежения за камерой. Это не решает проблему навигации в комнате (что также меня интересует). Есть несколько хороших примеров использования ROS и LIDAR. Во всяком случае, это мой небольшой вклад, если вы заинтересованы (Работа в процессе). Подробнее см. Ниже. https://github.com/pageauc/motion-track/tree/master/cam-track