roboforum.ru

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

Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение JoHn_Syber » 31 дек 2009, 00:11

После долгих шастаний по форуме, решил собрать махенького робота который будет иметь способность обучаться и предсказывать маршрут, то есть направление черной линии. И заодно победить в онлайн конкурсе. Второе пролетел по времени за полторы недели еще до нового года на коленках, тяжеловато собирать, но вот что на данный момент получилось.
Конструкция проста, теоретически, но! Так как я планировал, что эта штука будет пролетать трассу за 4 сек. Оно летает со скоростью 2 м/с, из-за этого на переднем колесе пришлось добавить мотор для маневренности.
Конструкция :
at90s8515, 2 ключа на irz48 (что было под рукой), фото барьер классик lm311, 2 мотора и одна серва.
Нейронная сеть :
4 – входных сенсорных нейрона (они же фотодатчики)
3 – выходных мотонейрона (1-й мотор прямого хода, 2-й на рулевом колесе, 3-й серводвигатель).
Сама нейронная сеть 16 нейронов, пока играюсь с 8-мю.
Самое прикольное: целую ночь отучал «Неуловимого Джо» от вредной привычки «оНо» разгоняясь заезжало под кровать и там сидело. Только под утро удалось это «оно» отучить от этого.
Вложения
pic01_1.jpg
Джо
pic02_1.jpg
Джо сзади
сеть.PNG
Начальная модель сети
сеть.PNG (5.82 КиБ) Просмотров: 4838
JoHn_Syber
 
Сообщения: 7
Зарегистрирован: 17 ноя 2009, 11:12
Откуда: Хмельницкий

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение MiBBiM » 31 дек 2009, 00:14

а как его обучать? константы щелкать?
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение JoHn_Syber » 31 дек 2009, 00:32

Обучение проходит, ставлю на стартовую позицию :
Кнопки для управления: 1-я старт – начало заезда и обучения.
Успешное Завершение – это езда по линии, с максимальным временем слета не более 0,1сек (пока так планирую), траса пишется в еепром и методом минимальных квадратов пересчитываются. Сейчас прорабатываю внутреннюю структуру нейронной сети и пробую оптимальный метод обучения. Конечно просто автомат было б проще .
2-я кнопка : пересчет весовых коэффициентов.
JoHn_Syber
 
Сообщения: 7
Зарегистрирован: 17 ноя 2009, 11:12
Откуда: Хмельницкий

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение avr123.nm.ru » 31 дек 2009, 02:10

Прикольно. Причесать бы их :D
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение ALHIMIK » 31 дек 2009, 12:26

а видео ? :oops:
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение =DeaD= » 31 дек 2009, 12:52

А поучаствовать в оффлайн-заезде? :oops:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение D1mcon » 31 дек 2009, 14:49

У меня возникли вопросы:
1) Какая функция активации используется?
2) Как определены весовые коэффциенты на начальном этапе?
3) По какой формуле они потом пересчитываются?
4) Что представляет собой нейрон программно?
5) Как программно представлены и реализованы связи?
6) Почему число нейронов входного и скрытого слоев одинаково?

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

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение JoHn_Syber » 31 дек 2009, 14:59

Самое первое мое видео, моя маленькая радость «ОНО» передумало ехать под кровать, а это означает, что нейронная сеть пытаеться учиться.



А оффлайн заезд похоже уже есть победитель кажись в 20-х числах объявили, я конечно расстроился, что не успел, но это я делаю потому что надо уже переходить на более серьезный уровень роботостроения, а не простые автоматы.
JoHn_Syber
 
Сообщения: 7
Зарегистрирован: 17 ноя 2009, 11:12
Откуда: Хмельницкий

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение =DeaD= » 31 дек 2009, 15:05

Так соревнования не закончились, это просто был отдельный приз - вот народ сейчас от НГ праздников отойдёт и объявим следующие призы :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение JoHn_Syber » 31 дек 2009, 15:51

D1mcon » Сегодня, 12:49
У меня возникли вопросы:
1) Какая функция активации используется?
2) Как определены весовые коэффциенты на начальном этапе?
3) По какой формуле они потом пересчитываются?

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

Ответы
1) Мотонейроны : двигатель «вперед» и «поворотный» двигатель – имеют два режима (вкл/выкл) – пороговая функция , внутренние нейроны – линейная, а для сервы извращенно моя – выход формируется импульс от 1мс до 2мс.

2) Этот вопрос как раз пересекается с вопросом про еепром. Когда «оНо» просыпается весовые коэффициенты загружаются с еепрома , пересчет и обучение происходит в оперативке. Еепром еще применяю, чтоб анализировать данные для обучения. После удачного заезда тоже ложиться в еепром, чтоб когда выключить все не пропало, и к тому же для размножения :). Стартовые весовые – это была целая баталия, пробовал с нулевых и с рандомайза, но в процессе «оНо» их выровняло и поехало, криво правда.
3) Формула – просто прохожу массив нейронов суммируя и на выход.

Проблемы пока такого типа :
1. Мало памяти, все микроконтроллер – буду еще упрощать методы пересчетов.
2. Нужна индикация – счас припаял дисплей – чтоб посмотреть что оно делает .
3. Буду малость переделывать всю сеть (НС), хочу добавить слои которые будут активироваться на подобные сегменты трассы, потому что такая линейная модель СН которую я пытался обучить похоже не эффективна.
4. Улучшить метод обучения – совместить с учителем и без, гибрид.
5. И «ОнО» вчера с разгона налетело но стену – отбило себе рулевое колесо и датчик линии, придется сделать прочнее корпус и усе остальное.
6. А .. чуть не забыл крутиться в голове идея отслеживать отмирающие связи между нейронами, чтоб на них не тратить время..
7. Трассу нормальную склеить надо :)

Прогу пишу на AVR Basice - простой зараза
JoHn_Syber
 
Сообщения: 7
Зарегистрирован: 17 ноя 2009, 11:12
Откуда: Хмельницкий

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение D1mcon » 31 дек 2009, 17:30

JoHn_Syber писал(а):1) Мотонейроны : двигатель «вперед» и «поворотный» двигатель – имеют два режима (вкл/выкл) – пороговая функция , внутренние нейроны – линейная, а для сервы извращенно моя – выход формируется импульс от 1мс до 2мс.
тоже ложиться в еепром, чтоб когда выключить все не пропало, и к тому же для размножения . Стартовые весовые – это была целая баталия, пробовал с нулевых и с рандомайза, но в процессе «оНо» их выровняло и поехало, криво правда.
3) Формула – просто прохожу массив нейронов суммируя и на выход.
3. Буду малость переделывать всю сеть (НС), хочу добавить слои которые будут активироваться на подобные сегменты трассы, потому что такая линейная модель СН которую я пытался обучить похоже не эффективна.
6. А .. чуть не забыл крутиться в голове идея отслеживать отмирающие связи между нейронами, чтоб на них не тратить время..

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

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение Lockdog » 01 янв 2010, 20:20

Обобщу вопросы D1mcon'а - можно код в студию?=)
Тоже очень интересны нейронные сети, сам их мучаю, потому интересна уже готовая реализация.
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение Michael_K » 01 янв 2010, 21:42

А как узнать, научается ли "оно" ездить по линии, или именно только по этой трассе?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение MiBBiM » 01 янв 2010, 23:20

этот вопрос можно поставить даже более широко: а не получится ли так, что участники соревнований будут подстраивать свои машины именно под каждую трассу (можно даже забить её в память, наподобие 10 сек влево, 50 щелчков энкодера и т.д.)?
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Мой первый Line Tracer c нейронной сетью «Неуловимый Джо»

Сообщение D1mcon » 01 янв 2010, 23:25

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

След.

Вернуться в Наши проекты

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

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