как научить робота видеть?
- Войдите на сайт для отправки комментариев
Сб, 18/02/2012 - 15:48
Здравствуйте! Подскажите, пожалуйста, какую систему сенсоров (или может камеру или видео контроллер?) нужно использовать для того, чтобы робот "видел" объекты? Если точнее, робот должен знать расстояние до объекта, определять скорость объекта, если он движется, определять одушевленный он или нет...то есть на примерах: робот должен уметь отличить дерево от человека, в толпе людей выделить ближнего к нему, определить стоит возле него человек или идет к нему навстречу.
>>должен знать расстояние до объекта<<
Всевозможные дальномеры.
>>определять скорость объекта, если он движется<<
Только если сам он неподвижен.
Все остальное из области ИИ.
>>определять одушевленный он или нет<<
Все просто . ставите детектор души и определяете.
>>определять одушевленный он или нет<<
Все просто . ставите детектор души и определяете.
В качестве такого детектора можно использовать тепловизор - всего-то пяток-другой тысяч. Свежеубитых енотов.
>>В качестве такого детектора можно использовать тепловизор<<
Ой не факт.
Ложных сигналов будет вагон.
Температура "поверхности человека" вожет варьироваться в больших пределах пределах.
Зависит от температуры воздуха и того во что одет/не одет человек.
Ой не факт.
А Arduino (=8-битный контроллер) в качестве платформы вы готовы рассматривать?
>>А Arduino (=8-битный контроллер) в качестве платформы вы готовы рассматривать? <<
Не понял. Это вы очем ?
Задача, что Вы описали, до конца еще не решенная. Тема очень объемная, нет даже не так - ОЧЕНЬ ОБЪЕМНАЯ. Если охота погрузиться можно попробовать (при наличие английского) посмотреть вот этот курс https://www.ai-class.com/home/ сейчас он закрыт уже, но материалы доступны. Компьютерное зрение темы 16-18, но вообще весь курс интересный. Я, например, влюбился в алгоритм Particle filters, описанный в теме 11 - видео 18, это алгоритм нахождения себя в пространстве роботом, ну очень элегантный и относительно несложный в программирование алгоритм.
Обсчитывать это конечно надо на более производительном процессере, чем на Ардуино, но Ардуино все равно удобен будет для общение с железом (сенсорами и двигателями).
>>А Arduino (=8-битный контроллер) в качестве платформы вы готовы рассматривать? <<
Не понял. Это вы очем ?
А вы считаете, что arduino.ru - это место, гле активно обсуждается что-то более мощное, чем 8-битовые контроллеры?
>>А вы считаете, что arduino.ru - это место, гле активно обсуждается что-то более мощное, чем 8-битовые контроллеры?<<
Из десятка таких МК можно собрать гораздо более интересную вещь.
Но вы правы задачи озвученые топик стартером слишком сложны для дуины.
Смотря какие обьекты рассматривать для распознавания
вот пример на ардуино
http://www.youtube.com/watch?v=DIGZXcg0NIA
Смотря какие обьекты рассматривать для распознавания
Топик-стартер четко определил - одушевленных человеков. Надо полагать - имелись в виду духовно богатые люди, цитирующие Бальмонта и Сашу Черного.
вот пример на ардуино
http://www.youtube.com/watch?v=DIGZXcg0NIA
Ндя. Вот что-то подобное и предполагал увидеть...
У меня на даче солнечная панель на солнышко с помощью двух фоторезисторов наводится. Получается, я тоже распознаванием графических образов овладел.
На самом деле там все обстоит несколько по другому.
Но для обработки (полноценного) видеосигнала у дуины явно не хватит мозгов.
У меня занакомые инженеры видеонаблюдения написали прогу для камеры.
Так вот камера наводится на лицо человка (подобные технологии задествованы в фотоаппаратах) .
Если человек начинает двигаться камера отслеживает изменение пикселей и поворачивается в соответствующюю сторону.
Подобным образом определяется и движение к камере/от камеры.
Ндя. Вот что-то подобное и предполагал увидеть...
У меня на даче солнечная панель на солнышко с помощью двух фоторезисторов наводится. Получается, я тоже распознаванием графических образов овладел.
Ну ты и сравнил, муху с бегемотом.
Здесь реально обрабатывается изображение и выводятся координаты найденного обьекта.
"Здесь" ищется массив пикселов, имеющих цвет, отличный от цвета фона, а потом в массиве координат найденных пикселов находятся максимумы-минимумы. Эти максимумы-минимумы используются для рисования описанного вокруг объекта прямоугольника. Это не распознавание образов - это банальный фильтр.
А тебе извесны иные типы распознавания?
Помоему даже извесная библиотека OpenCV в основном своей использует фильтры
Разпознавание образов на нейронных сетях пока толком не работает, тоесть работает но с большими ограничениями.
Если прицепить к Ардуине внешнюю оператвку и обучить на ПК нейронную сеть нужным образам и после обучения перенести все веса нейронов на ардуину , то ардуино вполне справится с небольшим разрешением и с ЧБ изображением
Но сравнивать фоторезистор с обработкой видеосигнала, не совсем корретно.
Топикстартеру с его задачей нужно смотреть в сторону Kinect и OpenCV
А тебе извесны иные типы распознавания?
Задача распознавания образов - перевести реальную картинку в подобие того, что приведено на ролике. Далее в дело вступают общематематические методы фильтрации, сортировки, ... В приведенном ролике присутствует лишь то, что в задаче распознавания образов обрабатывается на самом последнем этапе.
В основе своей она использует 4 арифметических действия. Можно ли по этому критерию любую арифметическую задачу относить к задачам распознавания образов?
вполне справится с небольшим разрешением и с ЧБ изображением
Переход на ЧБ только усложняет задачу распознавания образов. Банальный пример - африканские травоядные очень плохо видят желтого гепарда на фоне зеленой растительности. Почему? Да потому что зрение у них черно-белое.
Но сравнивать фоторезистор с обработкой видеосигнала, не совсем корретно.
Видеоматрица - это массив фоторезисторов (фотодиодов, фототранзисторов, ...). Два фоторезистора - это тоже массив. Причем, массив весьма эффективно используемых элементов, отыскивающих в телесном угле почти 180 градусов объект с угловыми размерами 1/2 градуса.
))Так и думала, что "знатоки" привяжутся к слову "одушевленный". Если бы написала "отличать живых от неживых", это было бы не правильно с точки зрения биологии, ведь дерево тоже растет и питается (5 класс, природоведение), но его распознавать нужно на том же уровне, что и самый обычный камень, но оно стоит на месте, а та же машина, скажем, едет, но и на нее не надо обращать никакого внимания. Выделять нужно было только людей и кошек/собак на крайний случай.
В общем, крохи полезной информации, которые я извлекла из всего этого, поправьте, если ошибаюсь: камеру Arduino не потянет. Можно использовать комплекс датчиков. Кстати, почему нельзя определять скорость объекта, если робот находится в движении? как же понятие "относительная скорость"?
В общем, задача действительно очень сложная, поэтому я сюда и обратилась. Кстати, могу подкинуть еще пищу для критики:
есть такой вариант: (топорно, конечно, но...без изучения новых библиотек и т.д.) дальномер и 3 ИК-датчика с фиксированным углом определения - 110 градусов. Датчики расположены перекрёстно. Захватывают диапазон 270 градусов в сумме. То есть у нас появляется 5 "зон". Дальше всё понятно. Очень грубое определение местоположения, знаю)) Но. если заняться, скажем так, "аппроксимацией", то есть подключить большее количестко ИК, можно сузить размеры этих зон. Как вам?)
Для ясности: делаю робота-промоутера. При обнаружении объекта должен будет подъехать к нему на определенное расстояние и отдаль листовку. Очень строгое определение местоположения не обязательно.
>>Кстати, почему нельзя определять скорость объекта, если робот находится в движении? как же понятие "относительная скорость"? <<
А если они движуться в одном направлени , с одной скоростью ?
Если машина будет оснащена камерой то не вопрос.
А вот если аналоговыми датчиками которые определяют перемещение обекта относительно (не общего фона)
а некой средней точки между датчиками , то нет.
>>есть такой вариант: (топорно, конечно, но...без изучения новых библиотек и т.д.) дальномер и 3 ИК-датчика с фиксированным углом определения - 110 градусов. Датчики расположены перекрёстно. Захватывают диапазон 270 градусов в сумме. То есть у нас появляется 5 "зон". Дальше всё понятно. Очень грубое определение местоположения, знаю)) Но. если заняться, скажем так, "аппроксимацией", то есть подключить большее количестко ИК, можно сузить размеры этих зон. Как вам?)<<
Да не особо.
На моем роботе стоял всего один датчик , который вращался на серве.
Я свободно имел эффект 5-6 датчиков (хотя можно было увеличить до 180).
И этим одним (физически) датчиком определял полжение препятствия относительно рлобота.
>>Для ясности: делаю робота-промоутера. При обнаружении объекта должен будет подъехать к нему на определенное расстояние и отдаль листовку. Очень строгое определение местоположения не обязательно.<<
Это не вы на myrobot.ru пытались заказать изготовление подобного аппарата ?
>>Это не вы на myrobot.ru пытались заказать изготовление подобного аппарата ?<<
Нет, не я.)
>>А если они движуться в одном направлени , с одной скоростью ?<<
Это очень редкий случай. Простое исключение решит вопрос.
>>На моем роботе стоял всего один датчик , который вращался на серве.
Я свободно имел эффект 5-6 датчиков (хотя можно было увеличить до 180).
И этим одним (физически) датчиком определял полжение препятствия относительно рлобота.<<
Это отличная идея! Спасибо за советы, nestandart!
Можно использовать комплекс датчиков. Кстати, почему нельзя определять скорость объекта, если робот находится в движении? как же понятие "относительная скорость"?
Если робот имеет колесный привод то для определения скорости и пройденного расстояния используется энкодер.
>>Если робот имеет колесный привод то для определения скорости и пройденного расстояния используется энкодер. <<
Да, больше вроде нет способов
>>Да, больше вроде нет способов<<
Для определения скорости ?
А как же акселерометр ?
>>Если робот имеет колесный привод то для определения скорости и пройденного расстояния используется энкодер.<<
Определение пройденного расстояния тоже не простая задача (плавали , знаем).
Я применял комплекс датчиков (акселерометр , энкодеры , датчики тока моторов) и то получал погрешность на 100м пройденного пути.
Т.е была задача "туда по приборам , назад по сохраненным данным".
>>А как же акселерометр ?<<
Мой промах. Совсем забыла об этом устройстве. Наверняка, есть и другие...
А как насчер ультразвукового измерителя расстояния на приводе из сервомотора?
>>Наверняка, есть и другие<<
Есть.
Например скорость можно экспериментально рассчитать по току моторов.
>> Я применял комплекс датчиков (акселерометр , энкодеры , датчики тока моторов) и то получал погрешность на 100м пройденного пути.
Т.е была задача "туда по приборам , назад по сохраненным данным".<<
Погрешность получалась за счет неверного определения углов? Или каким образом?
>>А как насчер ультразвукового измерителя расстояния на приводе из сервомотора?<<
Дальность маленькая.
Можно поискать лазерный дальномер. Может попадаются не дорогие ?
Например скорость можно экспериментально рассчитать по току моторов.
А если едет в гору или с горы например.
Ток при прохождении препятствия может увеличиватся в разы
>>А как насчер ультразвукового измерителя расстояния на приводе из сервомотора?<<
Можно подробнее?
>>Можно подробнее?<<
Тоже самое что и ИК , только на ультразвуке (подобие эхолота).
Так же имеет свои достоинства перед ИК и недостатки перед им же.
>>А если едет в гору или с горы например.
Ток при прохождении препятствия может увеличиватся в разы <<
Да , так и будет.
Но это можно учитывать.
Если нужен точный рассчет скорости и траектории он будет не лишним.
Вместо "изобретения" машинного зрения я бы пересмотрел алгоритм работы.
Например управляемый робот.
Т.к. все равно нужен человек для того чтобы следить за дорогой машиной.
>>Погрешность получалась за счет неверного определения углов? Или каким образом?<<
Да везде была погрешность. Ее можно свести к минимуму , но избавиться не получилось.
Углы поворотов считали по времени поворота и количеству щелчков энкодера.
Просто там очень много факторов.
>>А как насчер ультразвукового измерителя расстояния на приводе из сервомотора?<<
Можно подробнее?
Вот пример но только без сервы
Еще есть оптический измеритель расстояния
у меня пока на данный момент система из трёх ИК детекторов (http://www.electronshik.ru/card/ik-detektor-passivniy-sen0018-114311) и дальномера (http://www.electronshik.ru/card/datchik-rasstoyaniya-20-150-sm-gp2y0a02yk0f-111918). Поробую поэкспериментировать. Посмотрим что получится. Может на серво посажу что-то.
Не путайте пирсенсор с ик детектором, это разные вещи
Дальномер радиусом всего на 1,5м , карту помещения на нем не построить
>>Не путайте пирсенсор с ик детектором<<
а в чем отличие?
Пирсенсор срабатывает только на движение предмета в узком спектре инфракрасного диапазона излучения.
ИК детектор срабатывает на отражение ИК луча от предмета
Так разве пирсенсор не лучше в этом случае? не дерево он не среагирует. Или нет?
>>Дальномер радиусом всего на 1,5м , карту помещения на нем не построить<<
А не подскажете дальномер мощнее? Желательно, с этого же сайта
>>Не путайте пирсенсор с ик детектором<<
а в чем отличие?
А зачем это все вам? Вы хотите чтобы робот ездил по комнате и не врезался в стенку?
Так разве пирсенсор не лучше в этом случае? не дерево он не среагирует. Или нет?
среагирует
>>Так разве пирсенсор не лучше в этом случае? не дерево он не среагирует. Или нет?<<
Не забывайте что имеете дело с дешевым китайским оборудованием , так что гемороя с отладкой будет море.
>>Вы хотите чтобы робот ездил по комнате и не врезался в стенку?<<
Там все несколько сложнее.
Нужно , не только обезжать препятствия , но и определять движущихся людей (именно людей!).
Вот вам алгоритм , который не так уж сложно создать.
Робот стоит , отслеживает пространство .
Когда в зоне детекции появляется обект выше 1.5м , машина начинает отслежитвать направление его движения (все просто , как движение за рукой) по двум ИК или УЗ датчикам.
И движется за ним .
Попутно можно попробовать "отстрелять" зону лица термодатчиком (но это потом).
Термодатчиком? Можно пример дешевле 100000 рублей?
И еще, как определить объект выше 1,5 м?
>>Термодатчиком? Можно пример дешевле 100000 рублей?<<
search.digikey.com/us/en/products/MLX90614ESF-BCI/MLX90614ESF-BCI-ND/2666249
Можно перебратьт что то такое (выбросить лишнее).
48000.ru/product.php
>>И еще, как определить объект выше 1,5 м?<<
Вести детекцию на этой высоте.
Термодатчиком? Можно пример дешевле 100000 рублей?
И еще, как определить объект выше 1,5 м?
если появляются такие вопросы, не думаю что эта задача в целом по силам вам..
Mastino, спасибо за Ваше мнение.
>>Вести детекцию на этой высоте.<<
Ну да, слишком усложняю всё в своей голове.