roboforum.ru

Технический форум по робототехнике.

Автономная навигация робота

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

Re: Автономная навигация робота

=DeaD= » 18 сен 2009, 10:03

2EDV: А какая точность определения образа в кадре? И может ли этот алгоритм выдавать линейные размеры образа с достаточной точностью?

Re: Автономная навигация робота

EDV » 18 сен 2009, 10:33

Метод классификации контрастных пятен (ККП) позволит проанализировать множество «особенностей» (features) входного изображения и ассоциировать их с текущим местоположением. В «ККП» анализируется не конкретный «маяк» а множество особенностей изображения. Этот алгоритм можно использовать как вспомогательный, для подстраховки AVM. А вот алгоритм AVM уже более точен, и находит конкретные «маяки», в направлении которых можно будет переместиться. Эти алгоритмы могут дополнять друг друга.

=DeaD= писал(а):2EDV: И может ли этот алгоритм выдавать линейные размеры образа с достаточной точностью?


«ККП» не сможет, AVM сможет. В AVM масштабирование производится с шагом 25% от размера ключевого изображения на каждом шаге (этот параметр можно изменить, см. «AssociativeMemory.h» -> ptSearchScaleStep, // Scale step of searching for recognition (0.25)).

Добавлено спустя 6 минут 51 секунду:
EdGull писал(а):а на МК например на ARM9 это переносится?


Пока что всё ПО разрабатывается на C++ под PC. На данном этапе важно отработать (создать) саму технологию навигации робота по визуальным ориентирам. Ну а там уже видно будет...

Re: Автономная навигация робота

=DeaD= » 18 сен 2009, 10:34

2EDV: Если просто менять этот параметр - производительность должна упасть вроде прямо пропорционально количеству шагов. А можно добить алгоритм, чтобы он мог уже распознанные фрагменты дораспознавать с высокой точностью определения положения в кадре и масштаба? Это вроде не должно сильно снизить производительность?

Re: Автономная навигация робота

EDV » 18 сен 2009, 10:39

Хорошая идея, я попробую реализовать...

Re: Автономная навигация робота

EDV » 21 сен 2009, 08:51

Траектория, полученная по визуальным ориентирам (AVM + "ККП"):



Демонстрационная версия с исходными текстами:
http://edv-detail.narod.ru/Navigator_Tool_Kit.zip
Navigator_Tool_Kit\samples\LocationTree

Re: Автономная навигация робота

=DeaD= » 21 сен 2009, 09:00

Это круто, а какая-нибудь оценка точности будет? :) типа точность +/- 5см от реальной или +/- 15см или как?

Re: Автономная навигация робота

EDV » 21 сен 2009, 09:25

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

Re: Автономная навигация робота

=DeaD= » 21 сен 2009, 09:28

А как же разбираться - улучшили мы идею или нет, если точность не меряем? :)

Добавлено спустя 35 секунд:
В сторону SLAM-ов всяких пока не смотрели?

Re: Автономная навигация робота

Vooon » 21 сен 2009, 09:53

Интересно :) Мой танк почти готов (исправить питание камеры). И видео-ввод уже есть.
Вы еще не пробовали сделать порт под линукс?

Re: Автономная навигация робота

EDV » 21 сен 2009, 10:13

=DeaD= писал(а):А как же разбираться - улучшили мы идею или нет, если точность не меряем? :)

Для тестирования алгоритма «Location tree» обязательно нужно будет разработать методику для оценки точности (ну или поискать готовую методику).

=DeaD= писал(а):В сторону SLAM-ов всяких пока не смотрели?

А смысл? Там махровая математика (высшая), а у меня все решения простые и математика попроще (немного тригонометрии и решение квадратных уравнений и всё пожалуй).

2Vooon:
Пока что порта под Linux не предвидится, сейчас важно развить технологию (идею) самой навигации по визуальным ориентирам. Но я не вижу никаких препятствий использовать текущие наработки под Windows. Ну а когда технология более-менее сформируется, можно будет и порт под Linux сделать.

Re: Автономная навигация робота

=DeaD= » 21 сен 2009, 10:28

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

Re: Автономная навигация робота

EDV » 21 сен 2009, 11:36

Всё что касается алгоритма «Location tree» и программного пакета «Navigator Tool Kit» представлено исходными текстами программ, с примерами, и подробными комментариями на русском языке.

Исключением является только «закрытая» технология AVM, которая представлена в бинарном виде (библиотека). Но для любителей развивать свои собственные алгоритмы распознавания я предоставляю альтернативный «распознаватель образов» в исходниках.

Алгоритм «Классификации контрастных пятен»:
Navigator_Tool_Kit\include\ImageIdentification.h

Пример:
http://edv-detail.narod.ru/Navigator_Tool_Kit.zip
Navigator_Tool_Kit\samples\LocationSearching

Добавлено спустя 50 минут 14 секунд:
У некоторых посетителей форума, начали появляться вопросы по использованию библиотек навигации. Поэтому я создал новую тему «Использование Navigator Tool Kit».

Так что если есть вопросы, спрашивайте.

Re: Автономная навигация робота

Amator » 05 окт 2009, 01:24

Ребята, кто нить юзал этот проект? Мне кажется тут можно кое что полезное найти по этой теме. Если у кого есть опыт, поделитесь впечатлениями :)
http://www.numenta.com/vision/vision-toolkit.php

Re: Автономная навигация робота

=DeaD= » 05 окт 2009, 07:46

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

Re: Автономная навигация робота

EDV » 26 окт 2009, 15:57

Попробую ещё раз объяснить идею :oops:

Идея: Location tree

Создаём первый экземпляр AVM для хранения в качестве ассоциации двух координат (P[0], P[1]) в формате float (точка, куда мы можем отправиться).

Изображение

Файл: AssociativeMemory192u.h
Код: Выделить всёРазвернуть
// Definition of coordinate structure
struct CvXYZ32F {
   float x,y,z;
    // Set a coordinate
   void Set(float aX, float aY, float aZ) { x = aX; y = aY; z = aZ; }
};

// Definition of data type
#define cType192U_c 24
#define cType192U_s 12
#define cType192U_f 6
#define cType192U_p 2

union CvType192U {
   char  c[cType192U_c];
   short s[cType192U_s];
   float f[cType192U_f];
   CvXYZ32F p[cType192U_p];
};


Запоминаем центральную часть экрана в AVM как начало отсчёта. Если расстояние от центра этого распознаваемого маркера превысит некое пороговое значение, то создаём новый маркер, в который записываем координаты смещения относительно начала отсчёта. Если расстояние от центра ближайшего маркера превысит порог, то снова создаём новый маркер и т.д. Таким образом, создаём экранные привязки (маркеры), наблюдение за которыми (как в случае с энкодерами) поможет дать ответ на вопросы: На какой угол повернулась камера? Сколько проехали от последнего сохранённого местоположения?

Создаём второй экземпляр AVM для хранения в качестве ассоциации текущего местоположения видеокамеры (точка, где мы находимся).

Файл: AssociativeMemory160u.h
Код: Выделить всёРазвернуть
// Definition of location structure
struct CvLocation {
   CvXYZ32F p; // Location point
   float   hA; // Horizontal survey angle
   float   vA; // Vertical survey angle
};

// Definition of data type
#define cType160U_c 20
#define cType160U_s 10
#define cType160U_f 5

union CvType160U {
   char  c[cType160U_c];
   short s[cType160U_s];
   float f[cType160U_f];
   CvLocation l;
};


Изначально указываем наше местоположение, как начало отсчёта (x=0,y=0, z=0; горизонтальный угол hA=0, вертикальный угол vA=0), и ассоциируем изображение с камеры с текущим местоположением (пишем во второй экземпляр AVM). Как только положение камеры изменится настолько, что новый вид из камеры уже не будет распознаваться AVM, формируем новую запись местоположения (координаты и угол наблюдения камеры определяем согласно пройденных привязок на этом интервале) и т.д.

Демонстрационная версия с исходными текстами (обновил):
http://edv-detail.narod.ru/Navigator_Tool_Kit.zip

Проект: Navigator_Tool_Kit\samples\src\LocationTree


Rambler\'s Top100 Mail.ru counter