Комментарии 36
UPD: вот же контроллеры серв:
В Mach3 (фрезерование, DSP программа) это называется параметр Exact Stop / Constant Velocity.
Он даёт либо полный останов в точке, либо прохождение её аппроксимацией в дугу.
И ещё. В G-code есть кадры G2/G3 — робот умеет их?
UPD: посмотрите видео www.youtube.com/watch?v=XT2Jq76NChM тайминги 1:40 и 3:40
Посмотрите как двигается голова 3d принтера: от кадра к кадру (от строки к строке) она переходит плавно, с учётом «рывка» и «ускорения», если там небольшой угол, то переход будет вообще без остановки.
Добавьте осей и просто принтер не сдюжит. Собственно, если уж знаете про g2/g3 (которое по определению в g17/18) представьте себе перевод расширяющегося спирального движения в трех осях одновременно с удержанием направления инструмента поворотом 4й и 5й. Поверьте, это сложная фигота.
(безопасность она важна).А, кстати — на счет безопасности, которая важна… Обычно роборуки, которые работают в зоне присутствия людей, имеют очень продуманные системы безопасности, тормозящие их при малейшем взаимодействии с чем-либо (что может быть человеком).
А промышленные роботы, вроде этого — предназначены для автоматических сборочных линий, куда люди не допускаются…
У вас как в этом плане? Если под него попасть — он ведь не остановится, да?
Вот тут люди вроде бы тоже пробовали:
www.researchgate.net/publication/231167196_Application_of_Ethernet_Powerlink_for_Communication_in_a_Linux_RTAI_Open_CNC_system
Механика самодельная, привода от Festo, управление через EtherCAT, самописный драйвер и ROS.
Возможно схантите оттуда программиста.
yadi.sk/d/zBJ6CssnDwHrvQ
можно делать 3D даже без графики, при помощи проектора и синхронизацией с роботом.
www.youtube.com/watch?v=MO1_NK_s9zE
1. У роборуки как и у любого станка ЧПУ есть такая штука как Планировшик. Именно он по сути отвечает за безшовное движение между строкам GCode. При этом он не тупо пускает команду одну за другой, а смотрит что бы движение укладывалось в лимиты по ускорениям, и траектории. То есть если у вас движение 10см вперед, а потом 10 см резко вправо, он и остановит руку на какой-то момент, так-как поментально повернуть под острым углом не может. Если в мозгах руки есть что-то такое, то наверно стоит покопать там.
2. Раз у вас отдельные драйвера на сервы, то скорее всего они смогут обеспечить параллельное движение без особых проблем, может быть надо поменять мозги на что-то более современное. Врядли удастся заюзать grbl, так-как основная ветка рассчитана на 3х осевой станок, хотя есть вроде форки на 4 и больше.
3. Лично я не много охренел от количества матана необходимого для рассчета движения многозвенного робота. Если матрица вращение это еще куда не шло, то расчитать все шесть матриц для обратной задачи робототехники, задача уже не тривиальная.
А если учесть что мало расчитать сообсвенно куда двинуть (насколько повернуть) каждую серву, а ще надо расчитать ускорения и торможения, да с учетом всех моментов (особенно если конечная нагрузка разная...) то на 6 матриц выше, нужно еще столько же но уже со всякими ускорениями и ограничениями.
Короче говоря, имхо написание своей системы управления, задача крайне не простая и возможно проще поискать что-то готовое типа той же ROS что писали вверху.
P.S. По последнему пункту я смотрел довольно устарешвую литературу, может сейчас есть методы попроще и поэффективние.
P.P.S. Штука способная поднять 90кг, способна так же легко запустить любого зеваку на орбиту. Не даром на производстве роботов «садят в клетку».
Так что проблема как раз пока что лишь в том, чтобы достучаться до драйверов двигателей и передать им команду куда крутиться.
Кстати, ускорения и замедления делаются не на уровне контроллера, а на уровне построения траектории движения. У меня задача не в том чтобы упростить программу для робота оставив 3 строчки G-кода, а в том чтобы моя виртуальная камера в Maya двигалась на 100% как рука робота. Если же я сделаю такую анимацию которую рука не сможет воспроизвести — то сразу получу ошибку плагина который уведомит о превышении лимитов по скорости, ускорению, положению и т.п…
ps. дать поиграться с рукой — это не проблема. вопрос в том, что надо найти человека который знает что с этим делать а не просто ради любопытства постоять рядом
Ну вот как-то странно что у вас робот останавливается после каждой строчки. На выставке роботов, видел как они фрезеруют и печатают == это сотни и 1000 строк gcodе которые проходят без заминки. Так что либо мозги напрочь устарели либо ещё что.
Про Maya + mimic не знал, прикольная штука спасибо.
Вообще в настройках нашелся один параметр который отчасти убирает остановку, но он приводит к сильному замедлению руки, а во вторых все линии бывшие прямыми становятся волнистыми. Рука в принципе идет по траектории, но так сказать «срезает углы». Искривление траектории — следствие сглаживания не пути, а движения каждого двигателя без учета остальных. Сами можете прикинуть во что превратиться прямая линия когда все 6 моторов движутся не синхронно. Там даже на глаз видно как инструмент виляет при движении.
Кстати, даже без этих вот сглаживаний не верно рассчитываются движения с доворотами. начало и конец где надо, а между этими точками все моторы едут линейно условно говоря и в итоге ты хочешь чтобы камера проехала по прямой и «следила» за объектом, а на практике в центре траектории съезжает точка куда смотрит камера. Все по той же причине — для контроллера понятие доворота не существует. Eсть движение из точки в точку и оно линейное.
Понятно, видимо 10-15 лет разницы развития и дают такую пропасть в управлении. Похоже в авто индустрии требования были "приехать из А в Б, и не врезаться при этом в С" — вообщем-то типичный режим погружчика. Как оно будет вести себя в процессе перемещения никому не интересно. Удачи вам в покорении этого "монстра".
Конечно поздно что то говорить после…
Но судя по тому что:
- Закреплено все стационарно + тыква на столе (т.е. это для павильонных сьемок)
- Вес камеры не слишком большой (не 90 кг точно)
- Больших ускорений не нужно (камера не выдержит)
Я бы например, сделал бы на основе классической кран-балки (механику можно готовую, можно сделать) с обычными шаговыми двигателями (управление проще, и дешевле если не требуются большие ускорения) и платформой с двухосевым поворотным узлом.
ПО и математика для управления положением в декартовых координатах принципиально проще для такой конструкции, чем для многоосевой "руки".
Хотя, купить конечно проще. Но в таких случаях железка — это часть проблем. А вот математика для ее управления...
www.researchgate.net/search.Search.html?type=researcher&query=Powerlink%20cnc%20controller
З.Ы. Я не в теме, поэтому не понял. Это стойка (пульт оператора то есть) такая странная и допускает одну команду за раз или сами кишки контроллера не осиливают предвычисления?
З.З.Ы. Скорости и ускорения на видео визуально большие. Мне кажется, надо их уменьшать.
З.З.З.Ы. Вроде как искусство монтажа подразумевает, что камера не идеальная.
З.З.З.З.Ы. Вы пишите, что можно уменьшать паузу. Поставить паузу в ноль нельзя с одновременным разбиением траектории на очень мелкие кривые?
Наконец, есть профильные форумы по станкам и их программированию. Из мне знакомых cccp3d и chipmaker.
Все ваши проблемы приходят из за того, что купив робота подешевле, и подумав, «ай, ну и пусть не родной контроллер», вы выстрелили себе в ногу. При помощи другой ноги. Контроллеры SZGH — полухлам, предназначенный исключительно для «возьми это, дёрни релейкой, кинь туда». Конкретно в вашем экземпляре двойной выстрел в ногу произвёл ещё и «пересборщик», поставив туда самые убогие сервоприводы, которые очень не любят отсутствие жёсткости(по сравнению с большими пыщ-станками, хоть для робота жёсткости тут полно).
У настоящих производителей правильных роботов(не только Kuka) контроллеры подстраиваются под сервы годами, включая автоматическое тестирование и профилирование. Всё это уехало вместе с предыдущим контроллером в нарнию.
В оригинальных же контроллерах поддерживаются протоколы высокоскоростного управления роботами на низком уровне, в реальном времени. Для Kuka это RobotSensorInterface, и несмотря на имя, он не только для сенсоров. Стоит опция ~$5000, если брать для БУшного робота. Ну, или найти где надо ;)
Единственный для вас вариант(без сжигания денег) — выкинуть мозг SZGH(пульт и его breakout board), найти даташит сервоприводов, их полностью по одиночке оттюнить, и прикрутить к LinuxCNC, а туда уже нарисовать свой парсер для экспортов из Mimic.
Если хочется сжечь денег, то найти оригинальный KRC2… и сервы… и RDC плату… а потом купить ещё одного БУшного робота.
Если хочется посотрудничать, можно в ЛС, к диалогу готов.
К сожалению вам разрабатывать свой софт надо, «с матами и седыми волосами».
Не забывайте про безопасность, робот тяжелый, скорость может высокую выдать, человек столкновения не перенесет. На производстве они закрыты ограждениями, можно лазерные рамки использовать.
Не пытайтесь сделать контроллер с нуля. Есть опенсурс Odrive и аналоги.
они вам по ваттажу не подходят но надо с чего-либо начинать.
Да я о том скорее что с текущими контроллерами может и не получиться.
Чёрная рука бюджетной автоматизации