roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 22:06

Часовой пояс: UTC + 4 часа


Правила форума


В этом форуме новые темы не создаются, однако обсуждение допустимо.



Начать новую тему Ответить на тему  [ Сообщений: 496 ]  На страницу 1, 2, 3, 4, 5 ... 34  След.
Автор Сообщение
 Заголовок сообщения: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 09:44 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
И снова здравствуйте!

У меня возникло огромное желание прояснить вот какой вопрос:

Возможно ли что бы робот, использующий в качестве сенсорной информации только изображение с видеокамеры, был способен самостоятельно проехать из одной комнаты (пункт А) в другую (пункт Б)?

Вот мы и попытаемся ответить на этот вопрос в рамках этой темы.

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

Если кто-то не знает, как подключить радиоуправление моделью к компьютеру, тогда вот подробное описание:
Как из дешевого китайского танчика (радиоуправляемая модель) сделать робоплатформу для проекта "Автономная навигация робота"

Я подготовил первый вариант исходных текстов программы «Навигатор». Проект состоит из трех частей: драйвер управления роботом, приложение распознавания образов (GUI), и динамической библиотеки «Навигатор». Для компиляции приложения распознавания образов понадобится wxWidgets-2.8.x и OpenCV_1.0. Если у кого-то нет желания разбираться с GUI, то в проекте уже есть скомпилированный EXE-шник распознавателя и вам будет достаточно скомпилировать Navigator.dll, которая содержит алгоритм навигации. Для компиляции Navigator.dll необходима только библиотека OpenCV_1.0. Сборка проекта возможна компилятором Microsoft Visual C++ 6.0 (папка vc6.prj) и компилятором Microsoft Visual Studio 2008 (папка vc9.prj).

Исходные тексты «Навигатора» можно скачать здесь:
http://edv-detail.narod.ru/Navigator_src.zip

Тема по использованию библиотек навигации «Использование Navigator Tool Kit»

А вот что эти «исходные тексты» могут делать на практике:

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




Вот такие вот у нас с вами стартовые условия.

Дальнейшее развитие алгоритма навигации теперь зависит только от нас :)


Последний раз редактировалось EDV 27 окт 2009, 15:36, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 09:59 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
А что поменялось с прошлого раза? :)

Любая навигация из А в Б состоит из 2 важных компонент:

1. Global navigation - умение определить свои глобальные координаты на некоторой карте (возможно это не обычные декартовы координаты, а № локации в сети локаций или что-то типа того) + умение находить пути в этой карте из А в Б;

2. Obstacle avoidance - умение обнаруживать и объезжать препятствия на пути из пункта 1, а также заносить в пункт 1 информацию о закрытых проходах между локациями.

Если пункт 1 мне более менее понятен - определяем какие-то образы, составляем карту локаций по ним и перемещаемся, то с пунктом 2 пока вообще мутно, как будет определять препятствия?

Добавлено спустя 56 секунд:
PS: Повторю предложение - стандартизировать интерфейсы и сделать общие библиотеки для навигации.

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:08 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
Можно попробовать обучать распознаватель на прямоугольную область в центральной части экрана, размером в половину меньшим от размера экрана. И потом если распознаваемое изображение в центре быстро начинает увеличиваться в размерах при движении робота, значит мы подъезжаем в плотную к препятствию.

Добавлено спустя 2 минуты 49 секунд:
=DeaD= писал(а):
В рамках моего предложения готов активно участвовать в разработке этих самых библиотек, имею тестовую платформу для обкатки технологий.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:30 
Не в сети
Аватара пользователя

Зарегистрирован: 08 фев 2009, 10:13
Сообщения: 700
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий
Задумка интересна. Но вот что меня интересует.
Надо не только робота научит куда-то ехать да и что-то объезжать но и запоминать это. Ведь проще раз составив карту местности потом ее неоднократно использовать. А для этого необходимо определение его (робота) координат. Я считаю что система координат должна походить на Декартову, ее начало - первоначальное положение робота, остальное выщитывать относительного этого положения. Также было бы неплохо для определения координат использовать что-то типа компаса. Определение перемещения на основе энкодеров имеет склонность к большому накоплению ошибки. На мой взгляд этот компонент также важен, как и умение распознавать объекты. Предлагая это также пообсуждать

Кроме того, для упрощения задачи распознавания изображений - камеру нужно стабилизировать. Не всегда же кататься по линолеуму и паркету :) . Хотя камеру на робота еще не установил, могу и ошибиться в этом плане.

P.S. Где-то после 20.06.09 я постараюсь к вам присоединиться (если конечно возьмете :oops: ), опыт программирования, роботостроения есть. Камеру мне привезут на следующей недели.

_________________
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники


Последний раз редактировалось D1mcon 27 май 2009, 10:32, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:33 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ок, тогда движемся дальше, есть 2 темы:
1. Избегание препятствий: тут надо понять что именно может делать распознавалка и с какой скоростью. Например, можно ли из неё сделать простейший Optical-Flow запросив распознать с предыдущего кадра фрагаменты на текущем кадре?

2. Унифицированный интерфейс распознавалки образов: Я себе представлю это так, есть эта самая распознавалка, которая имеет внутри себя банк данных в котором хранит освоенные образы и какую-то подготовленную информацию.
К ней есть несколько процедур:
1. Обучить систему новому образу (тупо передаём туда ID образа и картинку);
2. Распознать на картинке образы из тех, которые уже знаем (передаём картинку, возращаются координаты центров, опорные вектора и ID найденных образов).
3. Убрать образ из памяти (передаём ID который очистить);

Так? Есть какие-то хитрые процедуры обучения на серии картинок и т.п.?

Добавлено спустя 1 минуту 12 секунд:
D1mcon писал(а):
Я считаю что система координат должна походить на Декартову, ее начало - первоначальное положение робота, остальное выщитывать относительного этого положения.

Это может и не присутствовать, человек в помещении мыслит в терминах локаций, а не абсолютных координат, точно также можно делать с роботом.

Добавлено спустя 59 секунд:
По глобальной карте еще вопрос есть - как будем делать? Картой локаций или полноценными координатами? Я бы конечно и тот и тот вариант попробовал сделать, а потом посмотрел, хотя по карте локаций у меня нету пока наработок...

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:41 
Не в сети
Аватара пользователя

Зарегистрирован: 08 фев 2009, 10:13
Сообщения: 700
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий
Я считаю Obstacle avoidance лучше поручить не камере, а, например у-з сонару, не проще ли получится?
А камера пусть ищет только нужный объект. Тогда камера - намечает цель, сонар - прокладывает путь.
А чтобы не сложилось впечатления что камера мало чем будет занимать, пусть она ищет кошку, а робот гоняет ее по все квартире. :D

Добавлено спустя 1 минуту 12 секунд:
Повторюсь я за декартову систему координат.

Добавлено спустя 3 минуты 47 секунд:
2=DeaD=
Банк образов это интересно, но я вот о чем задумался. Например есть куб его мы запомним как КУБ, а если он чрезмерно освещен,то куб будет интепретирован как другой объект, возможно, что одному реальному объекту будут соответствовать 2 образа, причем один из них - ложный. Наверное, это еще одна проблема, потребующая решения.

_________________
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники


Последний раз редактировалось D1mcon 27 май 2009, 10:43, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:42 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
D1mcon писал(а):
Я считаю Obstacle avoidance лучше поручить не камере, а, например у-з сонару, не проще ли получится?

Проще, но EDV то хочет чисто на камере :) не вижу причин не попробовать, хотя-бы с целью убедиться, что это не будет работать пока, как минимум без стереозрения :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:46 
Не в сети
Аватара пользователя

Зарегистрирован: 08 фев 2009, 10:13
Сообщения: 700
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий
Давайте попробуем.
Блин руки чешутся начать этим заниматься. Вот только еще и диплом надо оформить :( . Поэтому займусь вплотную этими проблемами позже. :cry:
Вот на эту платформу буду ставить камеру.


Вложения:
IMG_0256.JPG
IMG_0256.JPG [ 110.97 КиБ | Просмотров: 39058 ]

_________________
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:52 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
=DeaD= писал(а):
... тут надо понять что именно может делать распознавалка и с какой скоростью. Например, можно ли из неё сделать простейший Optical-Flow запросив распознать с предыдущего кадра фрагаменты на текущем кадре?


Да, такой опыт уже есть:
Navigator\include\OpticalFlow.h

Пункты меню распознователя:
Главное меню\
Распознавание\Показать векторное поле движения Ctrl-F
Распознавание\Показать движение в цвете Ctrl-C


Цитата:
Обучить систему новому образу (тупо передаём туда ID образа и картинку)

Модуль: AssociativeMemory.h
Код:
// Writing to associative memory cell
void Write(CvRect aInterestArea, long* apData, bool aDeepLearning = true);



Цитата:
Распознать на картинке образы из тех, которые уже знаем (передаём картинку, возращаются координаты центров, опорные вектора и ID найденных образов)

Код:
// Object recognition
void ObjectRecognition(CvRcgAMFunc32S RcgAMFunc, void *args = NULL);
void ObjectTracking(CvRcgAMFunc32S RcgAMFunc, void *args = NULL,
              bool   aTrainingDuringTracking = true,
              double aSimilarityUpTrd = cAM_SimilarityUpTrd,
         double aSimilarityDnTrd = cAM_SimilarityDnTrd);


Цитата:
Убрать образ из памяти (передаём ID который очистить)

Такого пока что нет, но есть возможность создания нескольких ассоциативных деревьев:
Код:
//        aTreeTotal  - total number of independent associative trees.
//        aClustering - flag of using cluster tree
void Create(CvSize aKeyImgSize, short aLevelMax = 0,
            int aTreeTotal = 1, bool aClustering = true);

// Set the active associative tree
void SetActiveTree(int aTreeIdx);
// Removing all data out from associative tree
void ClearTreeData();


Извиняюсь за комментарии на английском, пока ещё руки не дошли их там попереводить на русский (в будущем переведу).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 10:59 
Не в сети
Аватара пользователя

Зарегистрирован: 08 фев 2009, 10:13
Сообщения: 700
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий
Комментарии можно и не переводить и так понятно. А этот код собственная разработка или какая-то библиотека?

Добавлено спустя 1 минуту 59 секунд:
Также предлагаю определится с языком программирования. Я за C# ,но и С++ меня вполне устроит, а Вы?

_________________
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 11:09 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
2EDV: В функции распознавания образов не понял где картинка и какой формат распознанных образов? И еще - надо наверное функцию распознавания подмножества образов или конкретного образа.

В функции трекинга - обучение во время трекинга понятно, хотя не ясно, какая там защита от всяких шалостей, например, если плавно вращать объект перед роботом - чего у него в обучении отложится?

Добавлено спустя 2 минуты 52 секунды:
Про несколько ассоциативных деревьев не понял, это твоя специальная разработка для ведения набора образов - это то ясно, а вот зачем их может быть нужно несколько? Чтобы распознавало только из набора образов этого дерева? А насколько менее эффективно будет распознавать 100 образов, если их разбить на 5 деревьев по 20 образов, чем если все 100 в одном дереве?

Добавлено спустя 51 секунду:
По языку - я за C++, чтобы на линух можно было адаптировать.

Добавлено спустя 48 секунд:
2EDV: Еще не понял что такое double aSimilarityUpTrd = cAM_SimilarityUpTrd, double aSimilarityDnTrd = cAM_SimilarityDnTrd :(

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 11:23 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2007, 15:19
Сообщения: 1016
Откуда: Украина, Лисичанск
ФИО: Дмитрий Еремеев
D1mcon писал(а):
Комментарии можно и не переводить и так понятно. А этот код собственная разработка или какая-то библиотека?

Associative Video Memory (AVM) – это моя собственная разработка, которой я занимаюсь уже второй год подряд. Бросать разработку пока не собираюсь, потому что не могу себе доказать, что развитие идеи AVM дальше уже не возможно. Алгоритм AVM похож на живой организм, и порой мне кажется, что не я его разрабатываю, а что но развивается сам по себе (эволюция), а я всего лишь среда для развития (многие решения, которые потом легли в его основу, я нашел абсолютно случайно).
Цитата:
Также предлагаю определится с языком программирования. Я за C# ,но и С++ меня вполне устроит, а Вы?

Библиотека написана на C++. К сожалению, у меня нету опыта работы с C# (но в будущем можно попробовать).
=DeaD= писал(а):
В функции распознавания образов не понял где картинка и какой формат распознанных образов?

Код:
// Set an image for processing
void SetImage(const void* apSrcImg, const void* apObjMaskImg = NULL);


Результаты распознавания возвращаются в call-back функции:
Код:
// Parameters structure for recognition function
struct CvAM_Parameters {
   CvRect   ObjRect;            // Rectangle where object found
   double   Similarity;         // Similarity of the interest area to an object (0 ... 1)
   long     TotalABases;        // Total number of associative bases
   void**   ppUserTrackingInfo; // Pointer to the tracking info data written by user
};

// Definition of object recognition function
typedef void (*TYPE_RcgAMFunc32S)(CvAM_State aState, long* apData, CvAM_Parameters* apParam, void* args);
typedef TYPE_RcgAMFunc32S CvRcgAMFunc32S;

Цитата:
И еще - надо наверное функцию распознавания подмножества образов или конкретного образа.

Ну это наверное несколько ассоциативных деревьев (SetActiveTree)
Цитата:
В функции трекинга - обучение во время трекинга понятно, хотя не ясно, какая там защита от всяких шалостей, например, если плавно вращать объект перед роботом - чего у него в обучении отложится?

Защита по сходству (Similarity), если объект исчез, но трекер знает где он был на предыдущем кадре и оценка сходства (с искомым объектом) не слишком низкая, значит дообучить на эту область изображения.

Добавлено спустя 4 минуты 45 секунд:
=DeaD= писал(а):
Еще не понял что такое double aSimilarityUpTrd = cAM_SimilarityUpTrd, double aSimilarityDnTrd = cAM_SimilarityDnTrd :(

Это та самая защита от «лишнего» при дополнительном обучении.
cAM_SimilarityUpTrd – верхний порог подобия (объект распознаётся но плохо);
cAM_SimilarityDnTrd – нижний порог подобия (объект не распознаётся, но сходство всё ещё допустимое для дополнительного обучения).


Последний раз редактировалось EDV 27 май 2009, 11:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 11:30 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Порог подобия отмеряется от последнего обученного или от первого обученного образа?

Добавлено спустя 41 секунду:
И какой формат данных сейчас возвращает функция распознавания?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 11:38 
Не в сети

Зарегистрирован: 11 сен 2008, 17:18
Сообщения: 873
Откуда: Москва
прог. языки: Delphi
ФИО: Владислав
Очень интересно как система распознавания отнесётся, например к монотонно чёрной кружке? На которой будут ходить разного рода блики? Т.е. фрагменты одного объекта будут делится в разных пропорциях(разные блики), но всё же в сумме всегда будет получаться форма кружки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автономная навигация робота
СообщениеДобавлено: 27 май 2009, 11:39 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
2Vorral: А может подробности работы системы распознавания в другой ветке? :)

Добавлено спустя 20 секунд:
2EDV: Дай линк людям, куда такие вопросы задавать, плиз?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 496 ]  На страницу 1, 2, 3, 4, 5 ... 34  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO