Испортим интригу заголовка сразу? Речь пойдёт о промышленной руке робота «за не очень дорого», во много раз дешевле нового аналога. Почему чёрной? Всё просто, наше применение манипулятора одно из моря возможных и довольно редкое: робот таскает камеру и нужно максимально убрать отражения света от самой руки.
Зачем же так усложнять видеосъёмку? Ответ прост: робот даёт скорость, точность и многократную повторяемость траектории движения камеры, не говоря уже о сложных траекториях, для достижения которых живому оператору придётся стать гибридом бабочки и шланга от пылесоса. Чётко заданный цифрами путь камеры хорош ещё тем, что отснятый материал можно без особого труда использовать в 3D-сценах на компьютере. То есть, стирается граница между камерой реальной и виртуальной при создании видео с элементами компьютерной графики.
Готовые съёмочные решения робототехники напугали ценой (примерно $150 000 и дальше в космос без остановок), поэтому был выбран путь голодранцев, когда цена платится в меньшей степени денежными знаками и в большей — временем, пОтом, матом и седыми волосами.
Многомесячные тематические просмотры ютуба и сравнения спецификаций на официальных сайтах, длинные и зачастую пустопорожние переписки с продавцами китайских и не очень рук в итоге всё-таки вылились в покупку робота. Им стал вышедший на преждевременную пенсию ветеран европейского автопрома родом из нулевых годов, бывший сварочный 6-осевой манипулятор KUKA KR125/2 с установленными новыми китайскими моторами и контроллерами с полезной нагрузкой 90 кг.
Что же у нас в коробке? То есть, под стретч-плёнкой? Там у нас сам робот, сделанный из куска бронепоезда шкаф с платами и кабелями, плюс проводной пульт управления с тачскрином (teach pendant). Общая масса всего этого счастья примерно 1,3 тонны, включая дополнительное восьмиугольное стальное основание, разгружающее бетонный пол нашего… 4-го этажа
После шумного и пыльного монтажа к роботу была добавлена коробка для камеры из станочного профиля. Коробка выполняет роль крепления
Первые включения и пробные съёмки выявили сильный уровень вибраций. Изучение мануалов и настройка параметров в драйверах двигателей позволили убрать эти вибрации, но одна заметная проблема осталась.
Дело в том, что программа в teach pendant пишется построчно, текстовый файл с G-кодом (есть и свой язык в контроллере, но в нем не нашлось особо ничего, чего бы не было в G-коде). Проблема оказалась в том, что рука выполняет программу построчно. То есть, прочитала строку — сдвинулась — остановилась. Прочитала вторую и сдвинулась дальше. После исполнения каждой строки в программе происходит остановка. Настройками можно лишь указать ускорения и замедления, но нет возможности убрать сам факт этой остановки. Производитель моторов и контроллеров подтвердил, что так оно и есть. В итоге все мечты о плавном сложном многоосевом движении камеры ушли в небытие.
В дальнейшем проявились косяки математики контроллера в виде неверной интерполяции при движении руки. Рука — это 6 осей, 6 двигателей, контроллер производит интерполяцию не финальной траектории движения инструмента (в нашем случае камеры), а сглаживает движение каждого двигателя. На практике прямая линия остается прямой лишь при очень больших ускорениях, без плавных разгонов и плавных остановок.
Попытки связаться с рукой через компьютер особым успехом не увенчались. Для связи используется протокол Modbus RTU, но это не полноценное управление а всего лишь имитация нажатия кнопок на teach pendant. Это позволило подключить через компьютер обычный геймпад вместо тяжелого teach pendant, но тоже с кучей ограничений как например невозможности нажатия 2х клавиш одновременно для движения по диагонали.
Все эти приключения подвели к мысли, что контроллер для робота надо делать свой. И снова изучение мануалов, общение с производителем драйверов для двигателей. Драйверы имеют поддержку протокола Ethernet powerlink, что само по себе неплохо. Попытки собрать из исходников Powerlink пока в процессе, так как документации мало.
Подводя промежуточный итог, можно сказать, что даже текущий вариант руки работа выглядит вполне рабочим для самых разных съёмок.
Но хочется куда большего, просто надо настроить Powerlink и написать свой софт. На практике минимальный контроллер будет лишь программой, умеющей поворачивать оси с нужной скоростью в нужную сторону по заранее готовой таблице. Тут вполне пригодилась бы корыстная помощь светлого ума из зала, после чего рассказ можно будет смело продолжить.
n0isy
Что ж, смотреть надо в сторону программных стоек ЧПУ станков: LinuxCNC (иии больше не помню навскидку, но только не Mach3), либо на софт управления 3d принтером (который нынче аж «12ти осевые» агрегаты поддерживает — Marlin допустим).
lab412 Автор
Вообще для анимации камеры я импользую связку Maya+Mimic. На выходе получается CSV таблица — время + повороты всех 6ти осей. инверсную кинематику расчитывает сам Mimic. Мне лишь нужно по Powerlink заставить двигатели вращаться туда куда указано в таблице.
n0isy
Не знаю что такое Powerlink. Может выкинуть мозги, а степ-диры считать какой-то опен соурс платой? Почему я и предложил Marlin / LinuxCNC / grbl. Вот допустим на grbl www.youtube.com/watch?v=-LXOr3PHTPQ
lab412 Автор
Плохая идея. Хотя бы потому что они дорого стоят и их надо 6 штук. Ethernet Powerlink — это промышленная шина позволяющая управлять разными устройствами. Не такая крутая как EtherCat, но и в реализации куда проще получается. Это исключительно софтовая реализация поверх TCP/IP стэка. В итоге подключить можно к любому компьютеру обычным сетевым кабелем, а дальше из открытых исходников собрать Powerlink и дописать свои костыли под него. Собственно этим и пытаюсь заниматься, но все больше понимаю что осилить лично для меня это будет сложно
n0isy
кто стоит дорого? я не понимаю:
там внутря у неё неонка, предполагаю что там шаговые двигатели, контроллеры ШД, и плата мозгов. Даже если там сервы, это ничего не меняет. будет сервы / контроллеры серв / мозги.UPD: вот же контроллеры серв:
lab412 Автор
в промышленных роботах не используются шаговые двигатели. Там стоят нормальные такие, весом по 10кг, 3х фазные движки. Конкретно в нашей руке 3 больших двигателя и 3 поменьше. Большие естественно на первые оси. Двигатели имеют скорости вращения 3000 об/мин. Так же в них установлены абсолютные энкодеры и тормоза (безопасность она важна). Все это дело подключается к драйверу двигателя который уже и крутит куда надо и общается с энкодером. Выше в цепочке стоит контроллер который управляет двигателями по Powerlink. В контроллере все мозги и зашиты по расчету кинематики и т.п. Дальше подключен Teach Pendant — это такой пульт в руках который держат и тыкают в него пальцами. Фактически это терминал для настройки и написания программы. В нашем случае мы хотим сделать свой контроллер и подключить его к компьютеру. На компьютере же считать кинематику и прочее, но это уже готово как я писал выше. Цены на всё это дело большие учитывая много-киловатные моторы, драйверы для них и т.п. Рука весит почти тонну и для её перемещения надо реально большие моторы. В холостом ходу, когда к руке не прицеплена полезная нагрузка — вся конструкция потребляет кажется 6кВт электроэнергии. Теоретический максимум (до срабатывания защиты по току в движках) — 18кВт. Можете погуглить цены — но скажу что это сотни тысяч если что…
n0isy
Сотни тысяч, а «на конце» схемы сейчас стоит контроллер который не умеет то, что делает контроллер любого 3d принтера за 2 тыс. рублей: плавно перемещать оси, учитывая рывки-ускорения-скорости с планировщиком перехода от кадра к кадру (слово кадр в данном случае относится к G-code термину)
lab412 Автор
Вы не правы. он умеет перемещать точно и туда куда надо. Данный контроллер используется например в сварочном роботе и все варит и точно и куда надо. Проблема в том, что контроллер может двигать руку робота лишь как «руку робота». Видели мужиков на арбате которые роботов изображают стоя на улице? Двигаются угловато, останавливаются и всё такое. Вот именно так всё и у нас — двигается ровно. И останавливается после каждой строки G-кода. Только мне надо плавные движения, не по прямой или круговой орбите (в G-коде 2 варианта перемещения, прямо и по дуге). Мне надо нарисовать кривую движения произвольную, скорее органическую. Я могу разбить кривую на прямые отрезки и запустить — но каждый отрезок это строка G-кода и после каждой строки следует остановка руки…
n0isy
В этом и отличие. Посмотрите как двигается голова 3d принтера: от кадра к кадру (от строки к строке) она переходит плавно, с учётом «рывка» и «ускорения», если там небольшой угол, то переход будет вообще без остановки.
В Mach3 (фрезерование, DSP программа) это называется параметр Exact Stop / Constant Velocity.
Он даёт либо полный останов в точке, либо прохождение её аппроксимацией в дугу.
И ещё. В G-code есть кадры G2/G3 — робот умеет их?
UPD: посмотрите видео www.youtube.com/watch?v=XT2Jq76NChM тайминги 1:40 и 3:40
vbifkol
Добавьте осей и просто принтер не сдюжит. Собственно, если уж знаете про g2/g3 (которое по определению в g17/18) представьте себе перевод расширяющегося спирального движения в трех осях одновременно с удержанием направления инструмента поворотом 4й и 5й. Поверьте, это сложная фигота.
Nehc
А промышленные роботы, вроде этого — предназначены для автоматических сборочных линий, куда люди не допускаются…
У вас как в этом плане? Если под него попасть — он ведь не остановится, да?
lab412 Автор
в данный момент так и есть — никакой защиты. но мы работаем над этим вопросом параллельно. пока решение есть на основе простых оптических датчиков расстояния которые можно обвесить со всех сторон… но на практике руки которые «чувствуют» столкновения обычно в 10-50 раз меньше по весу и имеют куда более слабые движки. там просто следят за током и в случае столкновения он скакнёт и можно тормозить. в нашей руке с многокиловатными моторами — она не заметит что сбила человека, стол или стену )) там только внешние датчики. вообще в моторах есть тормоза которые просто блокируют двигатель и на них можно подавать свои сигналы мгновенно останавливая руку. в общем это в процессе, а пока стараемся так сказать «не стоять под стрелой»
Nehc
Ну… Берегите себя!
Такая штука… Не очень предназначена для студии. Больше для зон, куда человек не может попасть в принципе… Один неловкий клик мышкой и… Все-таки для каждой области применения — свои технологии.
ciuafm
Я тоже не настоящий сварщик, но станцевал бы от Ethernet'a. Вставьте в разрыв Ethernet'a хаб, подключите компьютер и перехватите трафик. Не думаю что там так уж тяжело разобраться, тем более если есть представление о протоколе и возможность посылать любые команды с пульта. Сомневаюсь что трафик шифрованый — параноя туда ещё не докатилась. В лучшем случае увидите текстовый обмен, в худшем — бинарные пакеты с фиксированными позициями переменных. Сравнить пару сотен пакетов и сможете составлять их сами…
Вот тут люди вроде бы тоже пробовали:
www.researchgate.net/publication/231167196_Application_of_Ethernet_Powerlink_for_Communication_in_a_Linux_RTAI_Open_CNC_system