Я сейчас именно этим и занимаюсь. Обрабатывать же видео начал ещё раньше, так как для этого нужны только вебкамеры(до них я обрабатывал стереокартинки из интернета, тут не нужны даже вебкамеры ), само шасси поначалу не важно. И всё что я говорил было основано на собственном опыте работы с видео. ИМЕННО по этому я сразу указал на то что название темы никогда не будет выполнено. ИМХО: Более того с каждым месяцем, а в будущем и годами, проходя через серии не удачных опытов вы не сможете реализовать тему топика(я имею ввиду построить реальную автономную навигацию, без заранее определёных маяков/меток, и с неотъемлимыми частями такой навигации, как определения координат робота и наличия карты). Если наконец не последуете моему совету и не будете использовать дальномеры. Хотя бы на основе лазерной указки.
При этом мне наоборот хотелось бы, чтобы я был не прав(так как и мне было бы от этого лучше). Но к сожалению то, с чем столкнулся я, в процессе работы, указывает что моё ИМХО всё так сбудется.
>Ну не знаю, как кто, а я умею передвигаться и без карты в голове и без знания о своих координатах Я тоже и что(точнее всё это есть, но на каком то подсознательном уровне)? В железе сможешь повторить? И ещё пробовал играть в трёхмерную стрелялку сначала в 2D(на обычном мониторе, как играют миллионы геймеров по всему миру), а потом и в 3D(на специальном мониторе или проекторе, ну или шлеме)? Если бы пробовал многое понял бы об ориентировании человека в пространстве(пускай на примере виртуального пространства) и где мозгу проще ориентироваться(и при этом на несколько порядков!). А я хочу реализовать навигацию именно в железе, и при этом возникло много проблем, которые я уже описывал. Предлагаю сфокусироваться на этих/других проблемах. Есть какое то третье решение, давайте возмём его, кто против. Ведь главное результат и как его достичь с помощью данных о расстояниях + Optical Flow я знаю. Есть другие идеи? Я например с удовольствием выслушаю. И хватит постоянно отвлекаться к теме человека, ведь НИКТО из нас не может утверждать(даже на своём примере) как и что происходит в нашем мозге, мы лишь косвенно судим об этом, при чём очень часто как выясняют наши учёные ошибочно.
Вот только с японскими форумами по робототехнике (которые на английском), пока что-то туговато. Нашел тут один, но там, похоже, просто игрушки обсуждают: Robot-japan.
Может, кто из вас знает больше о японских форумах робототехники, хотелось бы ссылки на них получить.
Новогодние выходные не прошли напрасно и вот результаты:
Итак, что показано в ролике Устанавливаем робота в контрольной точке №1 и даём указание следовать в точку №0. Робот начинает осматриваться по сторонам, и когда видит ворота, которые соответствуют маршруту №0, начинает двигаться по коридору из «ворот» до контрольной точки №0. В контрольной точке №0 робот останавливается. Тогда роботу даётся указание следовать в контрольную точку №1, робот опять начинает осматриваться, находит ворота соответствующие маршруту №1 и возвращается обратно в точку №1.
Изменения В новой версии алгоритма навигации, область данных ворот содержит весовые коэффициенты для семи маршрутов, которые указывают, насколько важны данные ворота для каждого конкретного маршрута. В нижней части экрана добавлен индикатор «горизонта», который показывает, в каком направлении необходимо скорректировать движение робота для дальнейшего движения по маршруту. Область ворот окрашена в синий цвет, если эти ворота не участвую в данном маршруте (весовой коэффициент 0) и более тёплые цвета (заканчивая желтым цветом) показывают градацию «важности» ворот в текущем маршруте.
Процедура обучения на маршрут Для обучения необходимо в режиме установки ворот выбрать маршрут, на который будет обучаться робот и медленно (местами катаясь назад - вперёд), управляя роботом вручную, показать маршрут (ворота устанавливаются автоматически). В конце маршрута необходимо нажать на кнопку «контрольная точка» и робот, вращаясь несколько раз на одном месте, пометит текущее местоположение как контрольную точку.
Повысить точность в плане определения координат и масштаба образа используя алгоритм AVM навряд ли получится в виду специфики алгоритма, для этого придется разработать специальный «особо точный» в отношении координат местоположения и размера объекта метод. Такой метод будет удобно использовать в производстве видеоэффектов (монтаж реальность + виртуальное видео), местоположение отслеживаемых объектов будет определяться с высокой точностью, никаких рывком и подёргиваний, но такой метод уж точно не сможет работать в реальном масштабе времени.
В следующей версии алгоритма AVM я планирую увеличить количество хранимых образов, которое алгоритм AVM сможет обрабатывать в реальном масштабе времени. К слову, для того, что бы в ролике робот смог съездить туда и обратно AVM запомнил 14 тысяч образов.
=DeaD= писал(а):А повысить точность AVM в плане определения координат и масштаба образа пока не планируется?
EDV писал(а):Повысить точность в плане определения координат и масштаба образа используя алгоритм AVM навряд ли получится
Понимаю, что не вполне в рамках вашей задачи, но все же: А нельзя ли выдумать (сгенерировать, изобрести) такие специфические образы (искусственные маяки), на которых ваш алгоритм покажет более высокие скорости и/или точности?
Нет, не получится. Алгоритм AVM (в плане определения координат объекта) создан не для того чтобы быть точным, а для того чтобы быть быстрым и распознавать как можно большее количество образов.
2EDV: Не понимаю, как он может сильно тормозить? Если мы распознали образ - можно же быстро уточнить его координаты и масштаб?
Добавлено спустя 48 секунд: Можно выдать из AVM исходную картинку распознанного образа, чтобы я попробовал имея картинку и примерные координаты и масштаб вычислить точные координаты и масштаб?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
>Если мы распознали образ - можно же быстро уточнить его координаты и масштаб? ИМХО: В матрицах AVM уже потерянна(сокращенна) точная информация, придётся проходится по картинке повторно.
Можно попробовать сканировать область изображения в окрестности распознанного объекта методом Read и выбрать ту область, у которой максимальное значение схожести (Similarity).
// Associative memory class for integer 32-bit data class CvAssociativeMemory32S { ...
// Reading from associative memory cell (associative base) // // Notes: aInterestArea - interest area for object searching; // apObjRect - rectangle where object found; // appData - pointer to the data of associative cell; // apIndex - unique index of associative base; // apHitCounter - number of hitting to associative base; // apSimilarity - similarity of the interest area to an object (0 ... 1); // aTotalSearch - flag of the total search until end level of associative memory. bool Read(CvRect aInterestArea, CvRect* apObjRect, long** appData, uint64* apIndex = NULL, uint64* apHitCounter = NULL, double* apSimilarity = NULL, bool aTotalSearch = false); ... }
Если есть желание, можете поэкспериментировать, после того как метод ObjectRecognition или ObjectTracking вернёт вам координаты объекта, дополнительно поискать более точные координаты объекта, сканируя окошком (областью интереса) в окрестности с разным масштабом методом Read.
Возможно, получите более точные координаты, хотя Vorral прав, в поисковом дереве AVM нет исходного изображения, а лишь матрицы распознавания, в которых исходное изображение представлено в виде коэффициентов (то есть часть информации уже потерянна).