Выбрать главу

После того как взаимное положение камер известно, можно для любой точки одного изображения найти прямую на другом, которая будет проходить через точку, соответствующую в пространстве первой. Эта прямая называется эпиполярной и соответствует проекции (e’p’, см. рис. справа внизу) на вторую камеру прямой (OP), соединяющей точку в пространстве (P) с оптическим центром первой камеры (O). Понятно, что конфигурация эпиполярных линий определяется только параметрами пары камер и не зависит от конфигурации 3D-сцены.

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

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

Вспомним про третий инструмент человеческого восприятия трехмерного пространства – выявление знакомых предметов со знакомыми размерами. Этот метод применим только для довольно узкого класса задач. Например, индустриальный робот только и делает, что перекладывает пять различных типов заготовок с места на место и вполне может их «узнавать», а вот для ориентирования в произвольном помещении такой метод вряд ли подойдет. Знаменитый робот-собака Aibo может находить и узнавать свои игрушки, но для этого они специальным образом раскрашиваются.

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

Теперь рассмотрим возможности, которые недоступны человеку, но вполне могут быть реализованы в роботах. Существенно увеличить точность восстановления 3D можно, используя третий глаз. Именно так и поступила компания Sony, спроектировав робота Qrio. Правда, он использует третий глаз не только для ориентирования в пространстве, но и для увеличения многозадачности.

Все описанные методы являются пассивными – робот не генерирует никаких сигналов. Существуют также и активные системы; некоторые из них сродни эхолотам дельфинов и акустическим радарам летучих мышей. Робот посылает направленную акустическую или электромагнитную волну и по отраженной волне, которую сам и принимает, получает информацию о расстоянии до преграды. Такой аппаратурой обычно оснащаются роботы, действующие на открытой местности, где оптические методы не всегда эффективны (выбрать соответствующие друг другу точки очень трудно из-за сложной формы объектов и обилия сильно текстурированных областей).

Рассмотрим системы с оптической подсветкой. Если установить на робота одну камеру и лазер, который создает яркое пятнышко на поверхности предметов, то по скорости перемещения пятна можно судить о дистанции до предмета, а по ускорению – о наклоне поверхности (при наличии двух или более камер). Таким образом, можно «прощупать» лазером все поле зрения робота. Но согласитесь, многим не понравится, если механический курьер в офисе будет всюду шарить лазером. Впрочем, можно взять лазер, излучающий в невидимом диапазоне. Еще более изящное решение – использовать структурированную подсветку. Все поле зрения робота засвечивается лазерной решеткой, и расстояние до преграды определяется по шагу решетки на кадре: чем он больше – тем и расстояние больше. Такие системы не смогут работать с зеркальными поверхностями, но согласитесь, что в стеклянном лабиринте не сможет сориентироваться даже человек, поэтому всерьез этот недостаток воспринимать не следует.

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

Система зрения робомобиля Stanley

Гонку робомобилей DARPA Grand Challenge выиграл колесный кибер Stanley. Автопробег был организован американским Агентством содействия оборонным разработкам (DARPA) и проводился в пустыне Мохаве, штат Невада. Участникам пришлось преодолеть 240-километровую трассу по пересеченной местности. Автомобиль Stanley, созданный специалистами Стэнфордского университета на базе джипа Volkswagen Touareg, был оснащен мощным комплексом цифрового зрения и системой GPS, предназначенной для определения местонахождения.

При медленном движении Stanley использовал систему лазерного сканирования, которая позволяла распознавать даже небольшие препятствия в радиусе 25 метров. Но этого не хватало для движения на большой скорости. Более того, лазерный дальномер принимает лужу за идеально ровную поверхность, из-за чего в прошлом году многие участники сошли с трассы: их машины выбрали путь через заполненные водой ямы.

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

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

Своими руками: Пультсериал

Автор: Сергей Ключко kobser@mail.ru

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

В продаже есть фотоприемники, предназначенные для телевизоров, их можно прекрасно приспособить для наших нужд. Эта небольшая деталь включает в себя датчик ИК-излучения и усилитель. Питание для него можно взять из порта компьютера, на который и будем передавать данные. В COM-порту нет нужных нам 5 вольт, но есть сигнальные линии, выходной уровень которых близок к 12 вольтам, а тока вполне достаточно для нашей схемы.

Всего нужны пять деталей. Самая дорогая – фотоприемник типа ТК-19 (TSOP1738, SFH56-38 и др. – С.Л.) – стоит 60 рублей. Еще желателен, но не обязателен стабилизатор напряжения (можно заменить 5-вольтовым стабилитроном. – С.Л.). Я взял 78L05, подойдет и отечественный КРЕН5A (точнее, КР142ЕН5А (В). – С.Л.), ценою 5 рублей. Остальные детали – сопротивление 4,7 кОм (для некоторых фотоприемников имеет смысл увеличить номинал до 10 кОм. – С.Л.), конденсатор 4,7 мкФ/10 В и диод КД521 или подобный. Понадобится также разъем для COM-порта типа «мама» (можно распотрошить старую мышь, будет не очень эстетично, но кто там за системным блоком видит…).