Предотвращение препятствий с помощью 2 стационарных камер на роботе - PullRequest
5 голосов
/ 24 сентября 2011

Я начну работать над робототехническим проектом, в котором участвует мобильный робот, который установил 2 камеры (1,3 Мп), закрепленные на расстоянии 0,5 м. У меня также есть несколько ультразвуковых датчиков, но у них всего 10дальность действия метра и моя среда довольно велики (например, возьмите большой склад со множеством колонн, ящиков, стен и т. д.). Моя главная задача - определить препятствия, а также найти примерно «лучший» маршрут, по которому робот должен пройтиДля того, чтобы ориентироваться в «грубой» среде (первый этаж совсем не ровный).Вся обработка изображений производится не на роботе, а на компьютере с NVIDIA GT425 2Gb Ram.

Мои вопросы:

  1. Стоит ли устанавливать камеры на поворотный суппорт, чтобы они делали снимки под более широким углом?

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

  3. Если можно сделать приблизительно точное трехмерное представление окружающей среды, как его можно использовать в качествесоздание карты окружающей среды?(Рассмотрим следующий пример: робот должен охватить довольно большую площадь, и он будет энергоэффективен, если не будет проходить одно и то же место (или курс) дважды; однако, когда 3D-реконструкция выполняется с одного направления, как он может определитьесли он уже был там, если он идет в противоположном направлении)

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

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

Заранее спасибо, Тамаш

Ответы [ 2 ]

1 голос
/ 09 сентября 2012
  1. Я бы сказал нет, если вы имеете в виду, что каждый глаз вращается независимо. Вы не получите ту точность, которая вам нужна, чтобы сделать стерео соответствие и сделать калибровку кошмаром. Но если вы хотите, чтобы вся «голова» робота вращалась, это может быть выполнимо. Но у вас должны быть хорошие датчики на стыках.

  2. Если вы используете ROS, есть несколько инструментов, которые помогут вам превратить два стереоизображения в трехмерное облако точек. http://www.ros.org/wiki/stereo_image_proc. Существует компромисс между вашей базовой линией (расстоянием между камерами) и вашим разрешением на разных диапазонах. большая базовая линия = большее разрешение на больших расстояниях, но она также имеет большое минимальное расстояние. Я не думаю, что от статической стереосистемы можно ожидать более нескольких сантиметров точности. и эта точность только ухудшается, когда вы добавляете туда неопределенность местоположения робота.

    2.5. для картирования и обхода препятствий первое, что я бы попытался сделать, это отрезать плоскость земли. наземная плоскость переходит в картографирование, а все, что находится выше, является препятствием. проверьте PCL для некоторых рабочих функций облака точек: http://pointclouds.org/

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

Другие мысли: теперь, когда Microsoft Kinect был выпущен, обычно проще (и дешевле) просто использовать его, чтобы получить облако трехмерных точек, вместо того, чтобы использовать стерео.

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

1 голос
/ 27 сентября 2011

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

(2) Возможно ли создать разумную трехмерную реконструкцию, основанную только на двух видах на таком небольшом расстоянии между ними? Если да, то в какой степени я могу использовать это для избежания препятствий и лучшего построения маршрута?

Да, это возможно. Посмотрите на ROS и их vSLAM. http://www.ros.org/wiki/vslam и http://www.ros.org/wiki/slam_gmapping будут двумя из многих возможных ресурсов.

однако, когда 3D-реконструкция выполняется в одном направлении, как она может определить, была ли она уже там, если она идет в противоположном направлении

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

ЗАКЛЮЧЕНИЕ Это сложная задача!

На самом деле, это больше, чем один. Сначала у вас есть простое уклонение от препятствий (т. Е. Don't drive into things.). Затем вы хотите выполнить одновременную локализацию и отображение (SLAM, прочитайте об этом в Википедии) и, наконец, вы хотите выполнить планирование пути (то есть дважды подметать пол без покрытия).

Надеюсь, это поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...