актуально ли применение нейросети в моей задаче?

Тема в разделе "WASM.ZEN", создана пользователем maksim_, 9 ноя 2009.

  1. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    задача такая: есть 6 манипуляторов, на каждом стоит тензодатчик (измеряет усилие). каждый манипулятор имеет по 2 степени свободы. задача - научить их правильно двигаться. под правильно я понимаю - движение по заданным траекториям + распределение усилия между манипуляторами. вот думаю над вариантом решения - посчитать всё аналитически и вбить алгоритмы управления в контрорллер или спроектировать нейросеть - научить на обычном компе, а затем получившуюся нейросеть с ужу известными весовыми коэффициентами прошить в контроллер.

    получается примерно так: 6 входных сигналов от датчиков, несколько управляющих сигналов, задающих тип движения, 12 выходных сигналов для серв. задача довольно сложная - вот я и думаю - справится ли нейросеть и каковы необходимы вычислимтельные ресурсы.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    вполне справится.
    Обучать можно генетическим алгоритмом.
     
  3. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    хватит ли производительности контроллера (частота ~80Мгц) и не получится ли так, что скорость отработки манипуляторов будут ограничивать вычислительные ресурсы, а не сервы?
    я нейросетями особо не занимался, поэтому нужен совет - какую конфигурацию сети лучше выбрать для моей задачи (тип пороговой функции, конфигурацию сети, размеры сети и т.п.).
     
  4. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Может и точность нам скажете?
     
  5. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    не понял вопроса. что значит точность? обучили сеть - получили минимальную величину ошибки (отклонение от нужной траектории). в чём проблема? задача нейросети состоит лишь в апрксимации неизвестной функции управления, никаких предсказаний на фондовой бирже тут не требуется.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    я похожую модель делал. движение объекта с заданными условиями. Правда там всего 4 "манипулятора" было.
     
  7. Clear__Energy

    Clear__Energy New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    432
    n0name
    На НС?
    Расскажи подробнее =)
     
  8. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Вот именно, что апроксимация. Функции апроксимириуют с определённой точностью (относительной или абсолютной). С некоторой низкой точностью я тебе вообще любую задачу с помощью НС решить смогу. :) Только никому такие результаты ненужны будут.

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

    Да это всё фигня. То, что ты получаешь на этапе обучения лишь квадратичная невязка. Её хоть до нуля догнать можно (правда это уже переобучение).
     
  9. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    *с плавающей точкой
     
  10. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    W4FhLF
    Точность в НС задается, и апроксимировать можно с любой точностью.
     
  11. author2009

    author2009 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    310
    Сеть может обучатся достаточно вяло. А вот уже обученная нейросеть будет работать свходными данными быстро. А что твой девайст конкретно должен делать и цена его ошибки. ТИпа игрушкая для детей или новый БПЛА? Когда распишеш картину маслом, тогда можно будет и детальнй поговорить о конфигурации и точности , архитектуре. Больше данных нуждно для разымшлений.
     
  12. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    фотка плохого качества - с телефона и сам паук в полуразобраном состоянии. но, думаю, смысл понять можно. вобщем эту заразу нужно научить ходить. если всё по честному - получается зависимость уоординат лапы от углов поворота серв примерно такая:

    Код (Text):
    1. x = n * sin(psi) + m * sin(theta) * cos(psi) - a[1] * cos(theta) * cos(psi) - a[0] * cos(psi) - a[2];
    2. y = -n * cos(psi) + m * sin(theta) * sin(psi) - a[1] * cos(theta) * sin(psi) - a[0] * sin(psi) + a[4];
    3. я = m * cos(theta) + a[1] * sin(theta) - a[3];
    4. a = 2 * p * y;
    5. b = 2 * p * x;
    6. c = x * x + y * y + pow(m * cos(theta) + a[1] * sin(theta) - a[3], 0.2e1) + p * p - l * l;
    7. fi1 = arccos(  (-b * c + a * sqrt(b * b + a * a - c * c)) / (a * a + b * b) );
    вобщем psi, theta - азимутальный, полярный углы поворота лапы, fi1 (fi2 имеет почти такой же вид) - углы поворота серв, x, y, z, a, b, c - промежуточные переменные, всё остальное - параметры механики. довольно весёлые формулы для вычислений... x86 справляется с ними за доли микросекунд, а вот avr'у придётся несладко.

    это всего лишь даёт мне возможность задавать координаты лап. ими ещё нужно рулить, причём, управлять нужно не только координатами, но и скоростями (сглаживание движений) - там формулы тоже получаются довольно весёлыми :))). а.. совсем забыл про тензодатчики - придётся писать что-то типа ПИД регуляторов (опустить лапу, поднять лапу, распределить давление между лапами и т.п.)
    вот я и думаю - может проще/лучше собрать нейросеть?
    что я от неё хочу получить и что могу получить?
    1. думаю, что если нс апроксимирует вышеприведённые формулы - считать быстрее она их не будет (если только за счёт потери точности, хотя, меня точность не особо беспокоит).
    2. ну.. задача поднять лапу, опустить лапу - тоже, думаю, ей под силу. а вот распределение нагрузки - тут придётся писать не 6 отдельных (одинаковых) нс, типа, датчик - серва1, датчик - серва2; тут нужно связывать сигналы от всех 6 датчиков, т.е. величина отклонения сервы зависит от показания всех датчиков.
    3. задача управления скоростью - я вообще не представляю как нс может тут помочь.

    х.з. я в нс далеко не специалист, так что жду Ваших советов.
     
  13. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    239
    cupuyc
    я шокирован вашим мастерством, честна
     
  14. Qorlum

    Qorlum New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2009
    Сообщения:
    26
    cupuyc
    Ваще круто...
    А на нейросети будет еще круче..!
    Делай на нейросети. будет лучше + практика.
    ЗЫ .Очень классный паук=) Он вдохновляет.!
     
  15. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    это, типа, диплом.
     
  16. author2009

    author2009 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    310
    Как резко звучит дикое словосочетание (х.з.), на таком форуме. Пособирались интелектуалы, и так выражамся. Ладно, по идее тебе нужно обучение с учителем. Т.е. сначало нужно паука привести в действие (заставить двигатся так как он должен двигатся в идеале), дивжение у тебя будут результирующими данными (вернее масиво результирующих данных), а вот в качестве входных, сигналы с пульта, или параметры простарнства в котором он находится. Т.е. сначала скармилаваеш своему пауку это все добро. А после завершения обучения, уже только скармлваеш входные данные а он отправляет на сервоприводы маив своих данных, которые в принципе должны быть достаточно праивльными ибо шумов у тебя должно быть не густо. Может нужно детальней, я распишу картину маслом только скажи с какого момента.
     
  17. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    прошу прощения, не доходит такой момент. допустим нужно сделать пол шага:
    1. начально положение - лапа повёрнута ну полярный угол theta0, азимутальный -fi0.
    2. начинаем движение - поднятие вдоль theta и перемещение перемещение вдоль fi - скорость плавно увеличивается от нуля до некоторых постоянных значений omega_trheta, ometa_fi.
    3. движение с постоянными скоростями omega_theta, ometa_fi.
    4. плавное торможение до углов theta0, fi1

    представим движение в виде массима точек - скоростей, типа [theta][fi][omega_theta][omega_fi]. то есть чтобы управлять лапой нужно задать этот массив + улгоритм ускорения. это если всё делать без нс - алгоритм довольно прост.
    как нс может помочь в этой задаче? она ведь не может по одному моему запросу генерировать послендовательность сигналов. или я ошибаюсь? если, например в кучестве управляющих сигналов брать не только мой запрос, но и текущее положение лапы - на вход подаем текущие значение скоростей, углов и управляющий сигнал, на выходе получаем значения скоростей и углов в следующий момент времени?
     
  18. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    cupuyc
    Мне в упрощённом виде алгоритм перемещения видится так:
    Делим ноги на чётные и нечётные.
    1) Опускаем нечётные ноги и поднимаем чётные.
    2) Опущенные ноги перемещаем назад относительно оси движения, а поднятые вперёд.
    3) Поднимаем нечётные ноги и опускаем чётные.
    4) то же что и в пункте 2.
    Ну а дальше смотрим что получилось, и начинаем опускать некоторые ноги быстрее в зависимости от показаний датчиков, чтобы сам паук стоял ровно.
    Совмещаем соседние пункты(поворот можно начинать как только три ноги оторвались от земли).
    Добавляем проверку что опускаемая нога не достаёт до земли, в этом случае пятимся назад, подняв эту ногу,пытаемся поставить её снова и переместиться в другую сторону.
    Корректируем углы повоторота ног в зависимости от их расположения относительно оси движения.
    Ну и прочие баги вылавливаем.
     
  19. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Black_mirror
    Вы говорите уже о более сложной задаче. Сейчас меня интересует как описаный выше алгоритм можно реализовать при помощи нс.
     
  20. author2009

    author2009 New Member

    Публикаций:
    0
    Регистрация:
    11 май 2009
    Сообщения:
    310
    Вообще, есть конечно оперделенные пробелы в мой теории, но вообще теб нужно посмотреть на кукольный театр, на сами кресты и веревки с помощью которых приводятся в действия куклы. Тебе нужно нечто подобное только естсвенно электронное. Если бы ты соорудил. некий подобный пульт, да поганял с помощью его своего паука (если не хватает рука попроси друзей помочь), после вот таких вот обкаток (типа как лошадей по манежу учат по кольцу бегать), у НС накопится уже инфорация, как рагировать на окружающую среду или на команды, ибо аналогичным образом будет работать твой мозг и твоих товарищей. Т.е. все команды (а там чувстую масив громандны получится) , для сревоприводов это выходные даные, а в качестве входных это вншняя среда. либо сиграл от датчиков, либо же с пульта, либо первое +второе. По поводу количества входов/выходов. Особо не пугайся, я на слабых машинах ганял сети по 20 на входе на 30 на выходе и нормально. МОжет сильно эпатежно изложил, но поверь смысл в этом есть, самое главное тут реалистичные обучение.