Роботостроение. Ищу математика.

+127
в блоге Электроброни
Требуется помощь математика в одном интересном проекте. Я его уже давно пилю в свободное от работы время и вот сейчас уперся в некоторые математические проблемы, которые меня здорово тормозят.

Да, проект имеет некоторое отношение к пони.
Если вы знаете про аппроксимацию полиномами, имеете представление о машинном обучении (нейросети и т.д.), а также можете в MatLab – добро пожаловать под кат.
Ну или если хотите узнать зачем нужен весь этот матан – тоже под кат.

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

Датчик давления.

Датчик нагрузки (тензодатчик и АЦП с инструментальным усилителем)

Цифровой штангенциркуль измеряет изменение длинны мышцы.

Китайские пневмоклапаны.

Управляется это все микроконтроллером CortexM3 stm23f100 подключенным к макетной плате.

Микроконтроллер получает команды от компьютера и отправляет данные через COM-порт.

Управляющие цепи запитаны от компьютерного блока питания

Ну и графический интерфейс я написал на C# в Visual Studio. Библиотека для построения графиков написана в MatLab.

И все это работает.

Там, где графики нагрузки, вы можете видеть, что у сигнала большой уровень шума. Я уже позже поковырялся в АЦП и теперь шум значительно ниже. Когда все компоненты будут запаяны на нормальную плату с нормальным источником питания, шум станет еще меньше.

Текущая конфигурация позволяет погонять мышцу под различной нагрузкой и собрать данные для системы управления. Выглядит это как-то примерно так:

Что тут происходит. На мышцу подается случайная последовательность команд. При этом я постепенно увеличивал нагрузку с шагом 1,25 кг.
Примерно на 50 кг сигнал с тензодатчика вышел из диапазона АЦП (коэф.усиления=128) и дальше я, уже из чистого любопытства, просто понавешивал все блины которые у меня были. Максимальный вес=65 кг и это, судя по всему, не предел.
В эксперименте участвовали эти черные ребята весом 20, 5 и 1,25 кг.


И теперь у меня есть 10К матлабовских точек. Что с ними можно делать?
Ну для начала длинна. В будущем проекте я хотел бы отказаться от непосредственного измерения длинны каждой мышцы, уж очень это громоздко и накладно.
Известно, что длинна пневмомышцы – это функция от давления и нагрузки.
Вот собственно одна из задач – найти эту самую зависимость и посмотреть можно ли вычислить длину, зная давление и нагрузку. А если можно, то с какой погрешностью. Для этих целей существует функция polifitX, которая аппроксимирует функцию полиномом заданного порядка. Я сейчас разбираюсь с ней, но если у кого уже есть опыт работы с подобными функциями в MatLab, то я буду благодарен за помощь.

Дальше больше. Клапаны управляются ШИМ и открываются с заданной скважностью 10 раз в секунду. Назовем эту скважность мощностью (в собранных данных этот параметр есть для каждой точки). Так вот, для нормального управления нужно, зная давление и нагрузку, а также требуемое изменение длинны за требуемое время (скорость), вычислить на какое время и с какой мощностью требуется открыть клапан.
Эта задача уже в разы сложнее. У меня есть пара идей и я все больше посматриваю в сторону нейросетей. Кстати, те данные, что я собрал отлично подходят на роль выборки для обучения.

В данный момент я как-раз пытаюсь раскурить нейросети, там много интересного, но область для меня новая и дело идет не очень быстро.
Если кто поможет – добро пожаловать в команду.

P.S. если тема вас заинтересовала и вы хотели бы поработать вместе со мной, то дайте знать. Проект конечно не коммерческий и денег на нем не заработать, но что-нибудь интересное в итоге точно получится.
Требуются Собственно, математик.
Электронщик (паять LQFP при моем зрении это адский ад). Москва и область.
Программист С++ для работы с STM32.
Программист C# для работы с управляющей программой. (начитался про Agile и давно хочу попробовать парную работу)
Инженер-механик.

62 комментария

Чувак, это круто!
SL-RU
+1
Могу тебе помочь как механик. Алсо, у самого есть задумка типа этой, но с гидравликой.
Flame
0
Отлично! Сейчас пока все уперлось в теорию, но как дойдем до практики — я к тебе обращусь. А гидравлика это конечно мощно, но она капризная, малейшая дырочка и кирдык. Ну и сложнее там все очень.
Stefan
0
У меня как раз специальность — системы приводов. Как разберусь со своим курсовым, так всеми руками смогу тебе помочь. Алсо, я ещё и сварщик, так если вдруг понадоблюсь — пиши, обращайся.
Flame
0
А если найдётся, можно как-нибудь после НГ встретиться? Я пытаюсь вникнуть в преобразования Фурье, там аппроксимации почти везде, и не тоько полиномами.
RAT
0
Да можно, почему бы и нет.
Stefan
0
В двух словах — что ты пытаешься решить?
Liksys
0
ну если в двух словах, то мне нужен алгоритм, который, в зависимости от требуемой скорости сокращения мышцы, выставит соответствующую скважность в ШИМ, управляющий клапаном подачи воздуха.
как-то так. Не знаю как еще описать.
Stefan
0
ну это задача. Основывается на предположении что скорость сокращения мышцы зависит от величины открытия клапана.
Зависимости там не линейные, нужно учесть много переменных и нужно эту зависимость как-то аппроксимировать, ну то есть получить формулу.
Способов аппроксимации много разных, самые распространенные это полиномами и нейросетями.
Stefan
0
Мда. И после таких постов хейтеры говорят что пони для девочек/маленьких детей, и брони — голубоцветные/лохи? Тогда почему при всём моём опыте я не видел чтобы такие же просьбы были на сайте Winx меня не е*ет как оно пишется к примеру?

А так, извини, я только в лицей на физ-мат поступил. Не думаю что такой тип «специалиста» тебе понадобится.
MolniaKseroX
+1
Если можешь в матлаб — то ты уже неплох, остальное изучишь по ходу.
Stefan
0
Я сибирский. Я не уверен в качестве. Впрочем если ты знаешь качество образования маленького города нефтедобытчика, то спасибо.
MolniaKseroX
0
Я думаю, что если у тебя есть желание учится, то никто тебе помешать не сможет. И будь ты хоть из Зимбабве, вот честно. Интернет есть — бери и учись.
Stefan
0
Я сам заканчивал Кумертауский горный колледж. Это в Кумертау, в маленьком когда-то угледобывающем городе. Потом я поступил в универ в Питере, но это уже другая история.
Stefan
0
Ну и другое, я больше физик чем математик. Ну уж нравится мне узнавать о мире.
И да, переведи матлаб, плиз
MolniaKseroX
0
Физики без математики нет, там все повязано. А MatLab — это специальная программа для работы с матрицами. Там куча математический функций и можно дофига чего с данными делать.
Stefan
+1
Так задача то жеребячья, так что с хейтерами ничего не меняется
Renha
0
Ой-ой-ой, зачем я зашел. Слишком много терминов для бедного гуманитария.
Kaldr
+1
«Ты не можешь посчитать потОМУ ЧТО ТЫ ГУМАНИТАРИЙ?!!»© Мульт-инженер
MolniaKseroX
+2
Ух ты как круто!
К сожалению помочь ничем не могу, но я поспрашиваю.
mutronics
+1
Вчитался.

Я не понял зачем ты отказываешься от измерения длины? Без обратной связи получится разомкнутая САУ с жёстко заданной программой управления, которые сейчас уже почти не используются.

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

Если он будет вычислять давление по формуле, то каждый раз перед поднятием груза нужно будет взвешивать груз и вносить вес в алгоритм. Если же робот сможет постоянно контролировать длину мышцы то он сможет динамически подстраиваться под вес груза, такие САУ строятся на базе ПИД-регуляторов (статья не очень, но для начала сойдет).
mutronics
0
Короче, для того чтобы контролировать длину мускулы нужен только датчик длины.

Но если ты хочешь решить задачу именно в таком виде: «зная давление и нагрузку, а также требуемое изменение длинны за требуемое время (скорость), вычислить на какое время и с какой мощностью требуется открыть клапан» то тут уже надо вести речь о модели системы, которая будет прогнозировать недоступные измерению переменные состояния объекта (длину) и осуществлять управление используя это вычисленное значение. Задача очень интересная и пахнет диссером, особенно если тебе удастся под это дело нейронную сеть запустить. Гугли адаптивные САУ.

В любом случае я советую начать со стандартного ПИДа на датчике длины.
mutronics
0
Вот если бы у меня был компактный датчик длинны, который можно встроить в мускул, то да, проблем было бы меньше.
Кроме того, система очень инертна, клапаны чертовски медленно открываются и закрываются (по сравнению с транзисторами) и без системы, которая предскажет результат (а потом ещё и скорректирует сама себя в зависимости от ошибки) не о какой точности и плавности движений не может быть и речи.
Stefan
0
Вот например (1,2) или можно попробовать достать направляющие рейки уже со встроенными потенциометрами. Но на данном этапе пойдет и штангенциркуль, стендовые испытания можно провести с ним.
mutronics
0
Вывешивать груз можно в процессе поднятия до 200 раз в секунду. Для измерения давления также существуют дешёвые, точные и быстрые датчики. А зная зависимость L=f(P,F) можно очень быстро вычислять длину для любого давления и любой нагрузки.
Stefan
0
Хотелось бы но… я даже слов таких не знаю!
У меня еще все впереди, я первокурсник на ИТ-направлении, тут полно матемаки.

Теперь буду ссылку на этот пост давать тем, кто говорит, что математика никогда не пригодится в жизни. Наконец-то у меня есть чем ответить им!
Kitmouse
0
так-то это интересно, и если читать научные журналы 80-х — еще интереснее. Но современное состояние науки и технологии — сколько. Всего. Так далеко. Error.
Где мой MS-DOS.
Entropifier
0
Можно ссылку? Я вижу много книг, типа «программирование для чайников», но ничего вроде «высшая математика для чайников».
Kitmouse
0
Относительно электроники: nedopc.org/forum (указатель), radio.ru/archive
Относительно математики: wwwrus.imm.uran.ru (указатель)
«для чайников» их и нет, пожалуй. Другое дело, что некоторые книги могут быть удобнее других
Напр.: А.М.Тер-Крикоров, М.И.Шабунин «Курс математического анализа», 2007
Ф.А.Шолохович «Лекции по дифференциальным уравнениям», 2005
— Очень мощные книги
Entropifier
+2
Спасибо.
Kitmouse
0
stm32 рулит :D
sleeply4cat
+2
Intel Edison
Renha
0
Зачем Matlab то? Мало того что из пушки по воробьям, так ещё и из пушки по воробьям
Renha
0
В матлабе очень просто можно делать очень сложные вещи.
Stefan
0
-Зачем ехать на пикник на камазе?
-На камазе можно перевозить очень большие вещи
:)
Renha
0
Если задача стоит математическая, а не практическая то неважно на чем.
mutronics
0
Ну сначала математическая, а потом можно и к практике будет перейти.
Stefan
0
Кстати в составе матлаба есть xPC Target — полноценная RTOS, которую можно запустить на x86 совместимых компьютерах. А симулинк модели можно хоть на распберри запускать. Так что why not?
mutronics
+1
Кроме того, скрипты из матлаба можно скомпилировать в библиотеку, специально обернутую под c#, и использовать полноценные матлабовские функции в своей программе. Кстати, довольно шустро работает.
Stefan
0
Зачем собирать свой велосипед, если уже есть рабочий бесплатный* КАМАЗ?
*при использовании торрентов
Stefan
0
Незачем, если есть сотни серийно выпускаемых велосипедов, мопедов, мотоциклов, легковых автомобилей от запорожца до Tesla Model X, у каждого могут оставаться ключи на видном месте, пока хозяин отвернулся (более корректное сравнение для торрентов). И любой из этих вариантов лучше камаза тем, что не требуется водитель с категорией C, или желающий ходить в автошколу с целью её получения :)

Не пойми меня неправильно, матлаб не плох (наверное), но вообще мне лично не понятно почему ты ограничиваешь так набор инструментов. Я не просто поболтать зашёл, я бы хотел помочь, но с матлабом дел не имел и не собираюсь. Легко тебе выдам аппроксимацию для набора точек, только какая вообще разница, на пюрешечке я это накодю или один запрос в вольфрам альфа напишу?
Renha
+1
Вау, ты крут. Я еле еле матлаб осилил и то не до конца. Выбрал я его, за универсальность и за распространенность. И библиотеки он под .NET компилирует.
А про сложность ты зря, там нужно всего один раз мозги повернуть, чтобы уяснить матричную природу переменных, и потом все – можно работать.
Stefan
0
Немного не понял, Matlab нужен только для поиска функции длины (вернее, приближенной к ней полиномиальной), или для чего-то еще?
Automaturgist
0
Для начала да, именно так.
Stefan
0
А можно взглянуть на Ваш массив данных? Тема интересная, постараюсь изучить ее подробно. Кстати, а другими СКА пользуетесь?
Automaturgist
0
Да, можно конечно. Я сейчас на работе, завтра домой приеду -отправлю.
Stefan
0
Интересные у Вас вещи! Я бы и рад помочь, но пригодится ли вам моя помощь? (Я немного разбираюсь в математике и электронике, но далеко не профи.)
Automaturgist
0
Ты знаешь, я думаю пригодиться. Вот только не прям сейчас, но пригодится точно. Я обращусь к тебе при случае.
Stefan
0
Эх, читаю вас и чувствую себя горе-специалистом. Хоть и не с механикой работаю.
С горем пополам дружу только с маткадом.
Defbie
0
Вопрос школьника. Чем аппроксимация по точкам отличается от интерполяции? Суть то вроде одна — найти промежуточные значения и воссоздать функцию.
RAT
0
Интерполяция — нахождение точки внутри диапазона.(промежуточные значения)
Экстраполяция — тоже, только вне диапазона.
А аппроксимация — нахождение именно функции.
для интерполяции и экстраполяции может использоваться аппроксимация.
вот какбэ пример аппроксимации
Stefan
+2
Эх как обидно, так хочется пайкой выручить, но 3500км между нами. Успеха с этим проектом интересно его назначение.
OSENSEI
0
*Некропостинга мод эктивейтед*
Автор, я смотрю на Табуне вы появляетесь, но продолжение интересной мне эпопеи так и не выкладываете.
Итак, успехи то с расчетом пневмопривода есть? =)
Escatello
0
Привет! Да отлично все получалось, апроксимировал и полиномами и нейросетями, точность до 1-2 мм была. Натолкнулся на то, что кабельная оплетка не подходит для пневмомышц http://tokifuko.tumblr.com/post/108478798070/%D0%B2%D1%8B%D1%82%D1%8F%D0%B3%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B2%D0%BE%D0%BB%D0%BE%D0%BA%D0%BE%D0%BD-%D0%B8%D0%BB%D0%B8-%D1%85%D0%B7 Снизил давление — опять тажа фигня. Делать станок для плетения оплетки, которая не будет расползаться как-то не очень интересно. Сейчас примкнул к команде товарища mutronics -а, делаем обычного робота на обычных электрических двигателях.
Кстати пригодились бы кодеры на С, и конструктора со знанием солидворкса.
Stefan
+2
Привет!
Да, я тоже кстати, когда задумывался над идеей пневмомышц, задавался вопросом, мол как у экспериментаторов грыжи на мышцах не появляются, в такой оплетке же жилы никак друг к другу не прикреплены и свободно сдвигаются в сторону наименьшего сопротивления. В теории — пара сотен сокращений и вуаля. Ну у вас, как я смотрю, они прожили гораздо дольше. =)
А если не секрет, какого типа робот у вас строится и для каких целей? =)

PS
К сожалению знаний С и Солида у меня как у балерины.
Просто недавно заткнулся на Али на датчики мышечной активности для ардуино, и заинтересовался идеей позиционирования через усилие. Поначалу интересовался для этих целей пневмоприводом(поэтому и вспомнил о вашем проекте), но потом с удивлением обнаружил полное отсутствие подобных крупных проектов, использующих мышцы на нитиноле. В итоге заказал два метра поиграться. =)
Escatello
0
Да, забавная штука этот нитинол. Правда пока не могу представить, как его в мышцах использовать. Вопрос как и чем нагревать/охлаждать, чтобы по два сокращения в секунду хотябы было, воображение рисует элементы Пельтье. И робота с температурой тела 36 градусов. Обнимательного.
Stefan
0
У нитинола эл. сопротивление даже больше чем у нихрома, поэтому греется он тупо подачей на него напряжения.
И при этом, судя по скупой информации про него, он имеет небольшой, но все же диапазон температур, при котором возможно промежуточное состояние «недосрабатывания». Т.е в идеале напряг такой мышцы тоже можно наращивать просто повышая подачу напряжения на нее.
Сложность лишь в том, чтобы действительно изолировать жгут от окружающего воздуха, и поддерживать вокруг нее постоянную температуру чуть ниже температуры расслабления для быстрого ее срабатывания и расслабления. Т.е либо просто проветривать ее мощным потоком воздуха, либо пойти еще дальше и утопить их в циркулирующем трансформаторном масле.
Иначе робота на нитиноле можно будет смело называть «Ленивец-1» или «Слоупок-Ультра». XD
Escatello
0
А про робота я наверно неуполномочен какие-либо анонсы делать, но можно догадаться, что робот имеет некоторое отношение к пони. :-)
Могу только сказать, что там все очень клево пока получается. Если очень хочется поучаствовать — свяжись с mutronics
Stefan
0
Уууууууу, пневмопих!
f13proxima
+1
Ну у меня высшее математическое образование, работаю программистом на С++. Работал много с MATLAB. Но при этом ваще хз, могу я тут чем-то помочь или нет)
FoxyShadow
0
Да, помощь не помешает. Если интересно — свяжись с mutronics
Stefan
0
Если использовать серво и шаговые двигатели то можно задавать точные перемещения по координатам. Правда при нагрузках шаговые могут пропускать шаги и при повышении скоростей тоже… Пневмо цилиндры как и прочая пневматика используются для ограниченных задач точно позиционировать ими что либо в широком диапазоне очень сложно. Тут либо большие допуски либо обратная связь. Прикрепите к нужному месту маяк, чтоб кричал где он по координатам. И гоните его в нужные координаты подавая снижая давление. Тогда вам поровну температура, влажность атмосферное давление, усталость резины, инертность компрессора, силы противодействия и содействия… Ведь проще увидеть куда ты тянеш руку и если что скорректировать движение чем в слепую попасть рукой куда надо исходя из неверных умозаключений…
Vigend Изменён автором
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать