Робототехника и компьютерное зрение

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

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

моя главная проблема в том, есть ли лучший способ отслеживать дорогу? или веб-камера работает для работа?

EDIT:

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

7 ответов


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


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

возможно, Вам будет интересно посмотреть OpenCV,

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

Это может дать вам некоторые идеи для вы осуществления, или даже быть полезным для вас, если вы в конечном итоге с помощью C++

edit: хотя использование LDR, как Андрей М предложенное может быть более простым решением:)


Я сделал похожего робота в школе и сделал два маленьких датчика, в основном просто LDR в светонепроницаемой трубке со схемой управления порогом света, который сделал сальто от включения до выключения. Это сделало логику очень простой - Есть ли черная линия под этим датчиком? Да / Нет.

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

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


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

Если вы идете по маршруту камеры, я бы предложил вам эмулировать простой датчик; возможно, возьмите среднее значение левой и правой половин входа в качестве указания на прямой/левый/правый.

но, если вы хотите потратить меньше времени на создание пользовательских частей, вы можете проверить LEGO NXT kit. Они приходят с оптически датчиком и графической средой программирования. Даже если вы не покупаете его, вы можете узнать из дискуссий сообщества вокруг него.


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

Найди бывшего участника Robot Wars :)


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


Я сделал что-то подобное и писал его в модуль. http://letsmakerobots.com/node/38883#comments