Автомобильное зрение

Сообщение slava » 27 май 2005, 00:09

Он же NM6403 Smile. Проблем с ним не много: эмулятор, драйвера и библиотеки есть под винду. Драйвер и библиотеку под линукс я написал сам (могу поделиться, оно под GNU, но я не публиковал)
Саму плату МЦ4.31 с ним покупал за $300.


Интересно, а где почитать можно, на сайте инфы мало ...


А этот процессор я выбрал для своего проекта в качестве головного. Точнее говоря, ~10 двухпроцессорных модулей... Smile


А можно поподробнее о проекте ?
slava
 
Сообщения: 188
Зарегистрирован: 12 апр 2005, 11:47
Откуда: Москва

Сообщение Mike_MA » 27 май 2005, 11:10

М-да, двух одинаковых проектов (до такой степени ) в мире быть не может, поэтому встаёт вопрос - кто с кого содрал идею или реализацию ?   :cry:  :cry:  :cry:
Mike_MA
 
Сообщения: 367
Зарегистрирован: 07 фев 2005, 17:41
Откуда: Санкт-Петербург

Сообщение gab » 27 май 2005, 13:13

slava писал(а):Интересно, а где почитать можно, на сайте инфы мало ...

На сайте можно бесплатно скачасть SDK с эмулятором. Под этот проц есть компилятор С, да и ассемблер там _так_ похож на С, что я аж прослезился, когда первый раз увидел.

slava писал(а):А можно поподробнее о проекте ?

В робоклабе его забраковали. Сказили, слишком дорого и круто. Ну, а я сижу, делаю, по-тихонечку... :)
Вкратце, проект состоит из иерархии вычислителей. От простых (датчики, моторы) и средних (уши, глаза) до мощных (нейронка на группе спецпроцессоров). Связь между процами - ethernet. Делается это для себя, но так, что б не было стыдно, как инженеру :)
Сейчас развожу плату для процессорного модуля датчиков/моторов и заканчиваю отладку и перевод алгоритма НС под NM6403.
gab
 
Сообщения: 212
Зарегистрирован: 30 апр 2005, 03:11
Откуда: Москва
прог. языки: C/C++, Verilog
ФИО: Гвоздев Александр Борисович

Сообщение slava » 27 май 2005, 13:59

В робоклабе его забраковали. Сказили, слишком дорого и круто. Ну, а я сижу, делаю, по-тихонечку... Smile
Вкратце, проект состоит из иерархии вычислителей. От простых (датчики, моторы) и средних (уши, глаза) до мощных (нейронка на группе спецпроцессоров). Связь между процами - ethernet. Делается это для себя, но так, что б не было стыдно, как инженеру Smile
Сейчас развожу плату для процессорного модуля датчиков/моторов и заканчиваю отладку и перевод алгоритма НС под NM6403.



Прикольно! А есть где-что глянуть ?
slava
 
Сообщения: 188
Зарегистрирован: 12 апр 2005, 11:47
Откуда: Москва

Сообщение gab » 28 май 2005, 03:46

slava писал(а):
В робоклабе его забраковали. Сказили, слишком дорого и круто. Ну, а я сижу, делаю, по-тихонечку... Smile
Вкратце, проект состоит из иерархии вычислителей. От простых (датчики, моторы) и средних (уши, глаза) до мощных (нейронка на группе спецпроцессоров). Связь между процами - ethernet. Делается это для себя, но так, что б не было стыдно, как инженеру Smile
Сейчас развожу плату для процессорного модуля датчиков/моторов и заканчиваю отладку и перевод алгоритма НС под NM6403.



Прикольно! А есть где-что глянуть ?


После тамошнего "приёма" мы с женой задумались: а стоит ли публиковать свою работу на стадии создания, а тем более, проектирования? "Робототехники" люди, в большинстве своём, "резкие". Т.е. если у меня в окрУге нет железа -- буду делать гвозди из г%вна. А с т.з. инженера это не правильно :).

Некоторое время описание проекта висело на робоклабе("конструктор"). Реакции -- ноль. За это время нам, ради прикола, удалось сделать систему зрения, обеспечивающую распознавание, сопровождение и снятие характеристик объектов (за основу взяли нашу НС)... Но это только эксперимент. Не особо удачный. Пока цель - четырёхколёсное шасси. 4х4 с прямым приводом от 3-х фазных двигателей. Ориентирующееся от вестибулярного аппарата и слуха. На нём можно будет обкатать ИИ. К концу лета, предположительно, закончим. Как раз поспеет первая партия процессорных модулей (:)) и можно будет подумать о промежуточной цели - четырехногом шасси, с возможностью скольжения, как на роликах и режимом рекуперации.
gab
 
Сообщения: 212
Зарегистрирован: 30 апр 2005, 03:11
Откуда: Москва
прог. языки: C/C++, Verilog
ФИО: Гвоздев Александр Борисович

Сообщение setar » 30 май 2005, 10:49

gab писал(а):После тамошнего "приёма" мы с женой задумались: а стоит ли публиковать свою работу на стадии создания, а тем более, проектирования? "Робототехники" люди, в большинстве своём, "резкие". Т.е. если у меня в окрУге нет железа -- буду делать гвозди из г%вна. А с т.з. инженера это не правильно :).

Забраковать - это подход некоторых "кулибиных" когда им не удаётся осмыслить проект с наскока.

:) по секрету скажу что тот уровень с которым Вы работаете на порядок превосходит средний уровень домашних роботостроителей, отсюда непонимание.

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

Вышесказанное моё личное виденье вопроса...
P.S.  безусловно есть ещё разряд разработок отнощясихся к шедеврам - все восхищаются но повторить не может никто, этот вариант я не рассматривал т.к. практической ценности для нас он не имеет.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Сообщение North » 16 сен 2005, 14:28

2Gab:
Ну и как продвижение? И хотелось бы узнать по подробнее про процессорные модули и принцип реализации на них НС.
Аватара пользователя
North
 
Сообщения: 197
Зарегистрирован: 27 июл 2005, 14:12
Откуда: Дмитров, Москва
прог. языки: С, asm

Сообщение gab » 17 сен 2005, 01:21

North писал(а):2Gab:
Ну и как продвижение? И хотелось бы узнать по подробнее про процессорные модули и принцип реализации на них НС.

Процессорный модуль - МС4.31 (http://www.module.ru)
Содержит в себе 64-х разрядный процессор с гарвардской архитектурой и ускорителем векторных команд.
Память модуля - 2 мб на каждой шине.
Глобальная шина доступна через PCI.

НС обсчитываем алгоритмиком, сидящем в локальной памяти, а через глобальную обеспечиваем передачу данных для обсчёта. В одну секунду можно обсчитать 2-18 тыс. нейронов. Это число зависит от кол-ва связей у каждого нейрона (12-1500 шт.)

Нейроны - bilogically-inspired. Примерный алгоритм реализации можно поглядеть в работах Емельянова-Ярославского.
В принципе - это аппроксимация работы обычного нейрона, где частота генерации выражена через скорость. Размер сети - динамический. Управление размером через "питание" и "самочувствие".
Используя возможность nm6403 оперировать любой разрядностью (1-64 бита) можно построить очень эффективный алгоритм. Главное не пытаться формировать и разбирать эти данные на PC :). Лучше это делать на ПЛИС, благо у nm есть 2 коммуникационных порта.
(я использовал 2 платы xdsp-3pc и одну мс4.31)

Генератор случайных чисел - хардварный, на шуме эммитерного перехода транзистора. Подключается к RS232. Дальнейшая обработка - немного переделанный драйвер random из linux 2.6.x.


Результаты - весёлые.
На модуле XDSP-3PC (http://www.setdsp.ru) сделал аналог уха. Через вейвлет преобразование, CIC и двухслойную резонансную НС. Получилась гибкая классификация звуков, отсев "шума", подстройка под дин. диапазон сигнала. Выходной паттерн можно было разделить на 2:
1-й -  "это мы знаем" (большая часть проекционной зоны) - классифицирует звук по знакомым компонентам (во времени)
2-й - "не знаем, но интересно"  - То, что не попало в первую классификацию, кроме шума.
Сложность кодирокания 1-го паттерна постепенно растёт при росте информационной ёмкости внешних воздействий. В опытах использовался паттерн 100х100 3-битных значений.

Если добавить такое же ухо и ещё один общий классификатор, то получается оценка направления и расстояния до источника звука.

С видео получается то же самое, только ресурсов больше жрёт.

Вся сложность такого подхода - трактовка результатов.
Сама по себе НС не требует обучения, как такового. Она учится по данным (в свЯзи - data-aided). Вот только выходные данные - "паттерн", и распознать, что он означает не менее сложная задача, чем его создание. Она по силам только второй НС.

Лично моё мнение - если замкнуть датчики через НС на "мускулы", то можно получить что-то интересное.
Как пример: в вышеперечисленных опытах камера и микрофоны направлялись серводвигателями и, в общем, следили за "активным" объектом.

Текущая работа: постановка всего на колёса :).
Датчики давления и ЭМ поля сегодня пришли, так что можно допаять вестибулярный аппарат.
Блок управления 3-х фазными двигателями спроектирован и ждёт зарплаты :).
Осталось немного:
Разработка элементарного блока обсчёта НС на 2-х процессорах nm6403 и  материнки для 4-х таких блоков.
Разработка платы с 4-мя spartan 3 для обработки звука и изображения.
Разработка группы ЭВМ для управления всем этим хозяйством.

Самая большая проблема - деньги и свободное время: тяжела жизнь инженера-тематика :(. Мне до начала октября нужно доделать 2 прошивки и отчёт :).
gab
 
Сообщения: 212
Зарегистрирован: 30 апр 2005, 03:11
Откуда: Москва
прог. языки: C/C++, Verilog
ФИО: Гвоздев Александр Борисович

Сообщение North » 19 сен 2005, 11:08

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

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

:oops: Ничего не понял :oops:
Размер сети - динамический. Управление размером через "питание" и "самочувствие".

По каким критериям выбирается размер сети? Меняются ли при этом связи нетронутых нейронов? Если меняются, то как?
Главное не пытаться формировать и разбирать эти данные на PC Smile.

Как-то тоже не понял: формируют данные вроде внешние устройства, такие как камера и/или микрофон (возможно имелась ввиду оцифровка сигнала и приведение его в форму пригодную для НС), а разбирает данные сама сеть. Или я не прав?
На модуле XDSP-3PC (http://www.setdsp.ru) сделал аналог уха.

Т. е. nm6403 в этом проекте не применялся?
Вот только выходные данные - "паттерн", и распознать, что он означает не менее сложная задача, чем его создание. Она по силам только второй НС.

А его обязательно распознавать? Может если поставить перед НС цель , а выходной паттерн пустить на исп. устройства, то путём проб и ошибок сеть научится совершать осмысленные действия? Т. е. паттерн видоизменится в конкретные сигналы на двигатели? Или мне стоит закатать губу?
Ладно спускаемся на землю:
Текущая работа: постановка всего на колёса Smile.

Что за платфрма-то? В смысле выглядеть как будет?
Датчики давления и ЭМ поля сегодня пришли, так что можно допаять вестибулярный аппарат.

Как из датчиков давления и ЭМ поля можно собрать вестибулярный аппарат? :shock:  Обычно при слове "вестибулярный аппарат" все вспоминают про акселерометры и гироскопы.
Разработка элементарного блока обсчёта НС на 2-х процессорах nm6403 и  материнки для 4-х таких блоков.
Разработка платы с 4-мя spartan 3 для обработки звука и изображения.
Разработка группы ЭВМ для управления всем этим хозяйством.

Вы собираетесь делать собственную плату на 2-х nm6403 или будет два модуля МС4.31? Материнка РС или собственного изготовления? Spartan 3 - это что за зверь?
Надеюсь не замучил вопросами? :)
Аватара пользователя
North
 
Сообщения: 197
Зарегистрирован: 27 июл 2005, 14:12
Откуда: Дмитров, Москва
прог. языки: С, asm

Сообщение gab » 20 сен 2005, 02:36

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

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

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

частота генерации выражена через скорость

:oops: Ничего не понял :oops:

f=1/v :)
Рекомендую, всё-таки прочитать первоисточник :).
При программной реализации логично (ради упрощения) заменить кодирование через частоту генерации кодированием через скорость генерации. (это никак не связано с классической структурой НС)

Размер сети - динамический. Управление размером через "питание" и "самочувствие".

По каким критериям выбирается размер сети? Меняются ли при этом связи нетронутых нейронов? Если меняются, то как?

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

Главное не пытаться формировать и разбирать эти данные на PC Smile.

Как-то тоже не понял: формируют данные вроде внешние устройства, такие как камера и/или микрофон (возможно имелась ввиду оцифровка сигнала и приведение его в форму пригодную для НС), а разбирает данные сама сеть. Или я не прав?

Формированием данных занимался модуль xdsp-3pc (с ПЛИС на борту). Т.е. Звук шёл напрямую, через АЦП на ПЛИС (далее вэйвлет обработка/фильтрация, перекодирование, спектральная оценка, передача через внешний интерфейс на мс4.31). С видео: usb->cpu->pci->mc4.31. К сожалению, пока нет денег для покупки нормальной ПЗС матрицы с нормальным объективом :(.


На модуле XDSP-3PC (http://www.setdsp.ru) сделал аналог уха.

Т. е. nm6403 в этом проекте не применялся?

nm6403 считал сеть, а XDSP-3PC считал тупую предобработку сигнала (в данном случае - вейвлет), PID-управление и ШИМ для управления двигателями позиционирования уха.

Вот только выходные данные - "паттерн", и распознать, что он означает не менее сложная задача, чем его создание. Она по силам только второй НС.

А его обязательно распознавать? Может если поставить перед НС цель , а выходной паттерн пустить на исп. устройства, то путём проб и ошибок сеть научится совершать осмысленные действия? Т. е. паттерн видоизменится в конкретные сигналы на двигатели? Или мне стоит закатать губу?

Именно так и хочеться сделать! Именно это и есть цель!
Но уж очень много подводных камней.... :(

Текущая работа: постановка всего на колёса Smile.

Что за платфрма-то? В смысле выглядеть как будет?

Для начала - колёсная 4х4, с синхронными двигателями. Потом - 4х-ногая.

Датчики давления и ЭМ поля сегодня пришли, так что можно допаять вестибулярный аппарат.

Как из датчиков давления и ЭМ поля можно собрать вестибулярный аппарат? :shock:  Обычно при слове "вестибулярный аппарат" все вспоминают про акселерометры и гироскопы.

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

Разработка элементарного блока обсчёта НС на 2-х процессорах nm6403 и  материнки для 4-х таких блоков.
Разработка платы с 4-мя spartan 3 для обработки звука и изображения.
Разработка группы ЭВМ для управления всем этим хозяйством.

Вы собираетесь делать собственную плату на 2-х nm6403 или будет два модуля МС4.31? Материнка РС или собственного изготовления? Spartan 3 - это что за зверь?
[/quote]
собственная плата на 2-х nm6403. МС4.31 - хорошая плата для отладки/загрузки линейки процессоров, но там есть небольшой недостаток ввиде PC :(, который накладывает огромные ограничения.
Материнка - собственного изготовления, скорее всего - пассивная или на ARM или спец-процессоре (тот же nm6403). От PC охота сбежать, как от страшного сна :(. Да и питания жрёт эта PC...

Spartan 3 - ПЛИС (программируемая логическая интегральная схема - http://www.xilinx.com).

Надеюсь не замучил вопросами? :)

Нисколечки! :)
gab
 
Сообщения: 212
Зарегистрирован: 30 апр 2005, 03:11
Откуда: Москва
прог. языки: C/C++, Verilog
ФИО: Гвоздев Александр Борисович

Сообщение North » 20 сен 2005, 09:43

Тааак, продолжаем разговор :D
Рекомендую, всё-таки прочитать первоисточник

А нет ли его в виде www.первоисточник.ru?
Для начала - колёсная 4х4, с синхронными двигателями. Потом - 4х-ногая.

Как будет выглядеть четырёхногая? По паучьему типу, по кошачьему или как ящерица?
"шестое чувство" - электростатическое видиние (по большей части, для режима спячки).

Что ему даст это чувство и зачем оно в спячке (видеть электростатические сны :)  )
собственная плата на 2-х nm6403.

А вот это уже очень интересно. Там будут стоять 2 проца, питание к ним шина наружу и... что ещё? И почему именно два?
Разработка платы с 4-мя spartan 3 для обработки звука и изображения.
Spartan 3 - ПЛИС (программируемая логическая интегральная схема - http://www.xilinx.com).

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

В общем моё ИМХО это и есть правильное направление в развитии робототехники.
P. S. Было бы очень интересно посмотреть на всё это добро вживую.
Аватара пользователя
North
 
Сообщения: 197
Зарегистрирован: 27 июл 2005, 14:12
Откуда: Дмитров, Москва
прог. языки: С, asm

Сообщение gab » 20 сен 2005, 12:18

А нет ли его в виде www.первоисточник.ru?

http://www.aha.ru/~pvad/f0.htm

Как будет выглядеть четырёхногая? По паучьему типу, по кошачьему или как ящерица?

Паук. Для кошачьей сложно сделать позвоночник.

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

Что ему даст это чувство и зачем оно в спячке (видеть электростатические сны :)  )


Выход из сна/система охраны.

собственная плата на 2-х nm6403.

А вот это уже очень интересно. Там будут стоять 2 проца, питание к ним шина наружу и... что ещё? И почему именно два?

Этот проц заточен под работу в паре. С 3-мя блоками памяти.
Интерфейс простой: 4-ре коммуникационных порта и шины общей памяти

Разработка платы с 4-мя spartan 3 для обработки звука и изображения.
Spartan 3 - ПЛИС (программируемая логическая интегральная схема - http://www.xilinx.com).

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

Да. Такой подход гораздо эффективнее многогигагерцовых процессоров.

В общем моё ИМХО это и есть правильное направление в развитии робототехники.

На мой - тоже :)

P. S. Было бы очень интересно посмотреть на всё это добро вживую.

Скоро, скоро...  :roll:
gab
 
Сообщения: 212
Зарегистрирован: 30 апр 2005, 03:11
Откуда: Москва
прог. языки: C/C++, Verilog
ФИО: Гвоздев Александр Борисович

Сообщение GraphD » 01 окт 2005, 01:06

Блин! Пацаны, вас даже читать трудно! Стока непонятных слов!
Кто-нибудь в курсе есть ли вообще в мире РТС законченные системы техничесого зрения на базе
1. Стереопары (пары видеокамер)
2. Пары: ИК Камера + Веерно-сканирующий ИК лазер

А то щас делать надо алгоритм с самого нуля, а увидеть или почитать что это такое и чего от него ждать не могу пока найти.

На базе 1й моно-камеры видел много, а стерео - нет...

Интересны также демонстрашки, а не просто фото товара без подробного описания.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Сообщение North » 01 ноя 2005, 19:57

2Gab:
Как успехи?
Штурмую первоисточник. Очень тяжело перевариваемая штука. Особенно напрягает использование различных обозначений для одних и тех же параметров. Но интересная. Так и не разобрался в замене частоты на скорость. В книге имеется ввиду частота следования разрядов в серии. На скорость чего она заменяется? Ещё с трудом представляю себе как это всё реализовать программно. Но представляю. Но с трудом :)  На контроллере я имею ввиду.
Аватара пользователя
North
 
Сообщения: 197
Зарегистрирован: 27 июл 2005, 14:12
Откуда: Дмитров, Москва
прог. языки: С, asm

Сообщение gab » 03 ноя 2005, 02:39

North писал(а):2Gab:
Как успехи?

Нормально. Перевожу на дешёвые ПЛИС. С Virtex E/Vrtex 2, которые я использую, на Spartan 3, что позволит снизить стоимость модуля обработки в $4000 до $200. И, соответственно, подготавливаю документацию для опытного производства.

North писал(а): Штурмую первоисточник. Очень тяжело перевариваемая штука. Особенно напрягает использование различных обозначений для одних и тех же параметров.

Где?
North писал(а): Но интересная. Так и не разобрался в замене частоты на скорость. В книге имеется ввиду частота следования разрядов в серии. На скорость чего она заменяется?

На мгновенную скорость следования, 1/T.
North писал(а): Ещё с трудом представляю себе как это всё реализовать программно. Но представляю. Но с трудом :)  На контроллере я имею ввиду.

Если не на x86, то легко, там просто очень много таблиц. Собственно и на x86 легко, но исходники не буду выкладывать по идеологическим соображениям. Книга, в конце концов, самодостаточна.
На днях разговаривал с научным секретарём в своём НИИ. Он сказал, что поможет выбить грант на эту работу. Так что до  сентября 2006 постараюсь доделать бегающий прототип. Сейчас застрял на переработке калмановской фильтрации к 16К памяти LPC2124 - не влезает.
gab
 
Сообщения: 212
Зарегистрирован: 30 апр 2005, 03:11
Откуда: Москва
прог. языки: C/C++, Verilog
ФИО: Гвоздев Александр Борисович

Пред.След.

Вернуться в Железо

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

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