Не квадратный H-BOT
Модератор: Kaktus
Не квадратный H-BOT
Добрый день, уважаемые форумчане!
Разрабатываю свою прошивку для 3D принтера, хобби у меня такое своеобразное. Если кинематика квадратная, то всё довольно просто. А если не квадратная? Т.е. не со сторонами m*m, а m*n. Как двигаться влево/вправо, вперед/назад - понятно. А каким образом будет происходить движение по диагонали? Если система квадратная, то движение каретки по диагонали достигается вращением одного из двух двигателей, а вот в случае не квадратной системы как быть?
Разрабатываю свою прошивку для 3D принтера, хобби у меня такое своеобразное. Если кинематика квадратная, то всё довольно просто. А если не квадратная? Т.е. не со сторонами m*m, а m*n. Как двигаться влево/вправо, вперед/назад - понятно. А каким образом будет происходить движение по диагонали? Если система квадратная, то движение каретки по диагонали достигается вращением одного из двух двигателей, а вот в случае не квадратной системы как быть?
- 3D-SPrinter
- Сообщения: 10515
- Зарегистрирован: 19 ноя 2015, 14:23
- Имя: Андрей
- Откуда: Н.Новгород
- Благодарил (а): 76 раз
- Поблагодарили: 980 раз
- Контактная информация:
Re: Не квадратный H-BOT
Сам задавался этим вопросом лет 5-6 назад.
Но в результате оказалось, что Н-Боту квадратность не нужна, он на любом прямоугольном поле корректно работает.
Re: Не квадратный H-BOT
3D-SPrinter, я не совсем точно сформулировал проблему. Относительно конструкции диагональ будет, но движение ведь уже не под 45 градусов получается?
- 3D-SPrinter
- Сообщения: 10515
- Зарегистрирован: 19 ноя 2015, 14:23
- Имя: Андрей
- Откуда: Н.Новгород
- Благодарил (а): 76 раз
- Поблагодарили: 980 раз
- Контактная информация:
Re: Не квадратный H-BOT
Да ему без разницы диагональ. Под каким углом скажут, под таким и наваляет. Формулы-то преобразования движения универсальные.
Вон Марлин открытая прошивка, посмотрите в ней, как кинематика CORE-XY реализована.
- Alex Post
- Сообщения: 6993
- Зарегистрирован: 11 янв 2017, 17:22
- Имя: Александр
- Откуда: Брест, РБ
- Благодарил (а): 330 раз
- Поблагодарили: 817 раз
- Контактная информация:
Re: Не квадратный H-BOT
Под 45. Это не диагональ в прямом понимании. Диагональю такое движение называют для упрощения понимания. А на самом деле это будет движение под 45*. Для квадрата - да, диагональ. А для прямоугольника одна из осей просто упрется раньше в ограничение и все. Не обязан Н-бот ездить строго по диагоналям, а вот под 45* - обязан
Для упрощения понимания кинематики Н-бот: это тот же картезиан, но повернутый на 45* Соответственно каждый мотор ездит по своей "оси", но повернутой на 45* относительно привычной нам системы координат. Только и всего. Соответственно и все преобразования к этому сводятся: повернуть систему кординат на 45*.
Prusa i3 rework - трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
Re: Не квадратный H-BOT
Добрый день, уважаемые форумчане!
Вновь я на форуме после долго отсутствия, но все с тем же вопросом. Из-за сложности со временем идею решил отложить, но сейчас вновь в к ней вернулся. Использую кинематику coreXY и все тот же не квадратный корпус.
Так и не понял, каким образом реализовать смещение каретки на нужный градус.. Насколько я понимаю, преобразование системы координат - это матрица поворота? Но не могу сообразить, как мне это реализовать на практике.
Можно вычислять длины катетов и сдвигаться на один шаг вперед и на один шаг вправо, пока не пройду нужный путь, но это какой-то дикий костыль и наверняка не правильный.
Если крутить только правый двигатель вправо, то смещаюсь по диагонали (относительно корпуса) вправо. Если крутить левый влево, то по диагонали влево. Интуитивно, если смещать каретку на 45 градусов не относительно размеров корпуса, то должно быть какое-то соотношение между скоростью поворота левого и правого двигателя. Можно пробовать подобрать эмпирически, но для каждого угла что-ли это делать.. Какое-то соотношение ведь должно быть..
Прошу помощи и тыка меня носом. Пожалуйста )
Заранее извиняюсь за свое незнание..
Вновь я на форуме после долго отсутствия, но все с тем же вопросом. Из-за сложности со временем идею решил отложить, но сейчас вновь в к ней вернулся. Использую кинематику coreXY и все тот же не квадратный корпус.
Так и не понял, каким образом реализовать смещение каретки на нужный градус.. Насколько я понимаю, преобразование системы координат - это матрица поворота? Но не могу сообразить, как мне это реализовать на практике.
Можно вычислять длины катетов и сдвигаться на один шаг вперед и на один шаг вправо, пока не пройду нужный путь, но это какой-то дикий костыль и наверняка не правильный.
Если крутить только правый двигатель вправо, то смещаюсь по диагонали (относительно корпуса) вправо. Если крутить левый влево, то по диагонали влево. Интуитивно, если смещать каретку на 45 градусов не относительно размеров корпуса, то должно быть какое-то соотношение между скоростью поворота левого и правого двигателя. Можно пробовать подобрать эмпирически, но для каждого угла что-ли это делать.. Какое-то соотношение ведь должно быть..
Прошу помощи и тыка меня носом. Пожалуйста )
Заранее извиняюсь за свое незнание..
- 3D-SPrinter
- Сообщения: 10515
- Зарегистрирован: 19 ноя 2015, 14:23
- Имя: Андрей
- Откуда: Н.Новгород
- Благодарил (а): 76 раз
- Поблагодарили: 980 раз
- Контактная информация:
Re: Не квадратный H-BOT
Смотрю репозиторий Марлина на гите и не могу найти часть кода, которая отвечает за это.. Пытаюсь гуглить, но даже на английском на эту тему ни обсуждения, ни статей найти не могу..
- Alex Post
- Сообщения: 6993
- Зарегистрирован: 11 янв 2017, 17:22
- Имя: Александр
- Откуда: Брест, РБ
- Благодарил (а): 330 раз
- Поблагодарили: 817 раз
- Контактная информация:
Re: Не квадратный H-BOT
Да потому что преобразования там яйца выеденного не стоят, вот никто и не обсуждает Все максимально просто: если моторы обозвать как А и В, то ∆X=(∆A+∆B)/2 а ∆Y=(∆A-∆B)/2. Вот и все. Такие преобразования умещаются в одной строке кода, которая выполняется по проверке условия коре или картезиан
Prusa i3 rework - трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
- 3D-SPrinter
- Сообщения: 10515
- Зарегистрирован: 19 ноя 2015, 14:23
- Имя: Андрей
- Откуда: Н.Новгород
- Благодарил (а): 76 раз
- Поблагодарили: 980 раз
- Контактная информация:
Re: Не квадратный H-BOT
Я к тому, что не надо ничего придумывать. Можно просто использовать стандартную прошивку, настроив её под Н-Бот.
Re: Не квадратный H-BOT
Это я понимаю. Передвижение параллельное осям реализовал давно. Передвижение по диагоналям относительно системы (корпуса) тоже реализуются просто. А вот если нужно передвижение по диагонали, относительно квадратной рабочей области? Если система не квадратная, а прямоугольная, то ведь угол не 45 градусов будет. И в этом не могу никак разобраться. Уравнение ведь должно принять другой вид? Наверное, я очевидную вещь какую-то понять не могу.. Большая просьба помочь.. Никак не могу в голове это уложить.Alex Post писал(а): ↑04 мар 2020, 20:56Да потому что преобразования там яйца выеденного не стоят, вот никто и не обсуждает Все максимально просто: если моторы обозвать как А и В, то ∆X=(∆A+∆B)/2 а ∆Y=(∆A-∆B)/2. Вот и все. Такие преобразования умещаются в одной строке кода, которая выполняется по проверке условия коре или картезиан
Смотрю поворот системы координат по этой ссылке: https://lms2.sseu.ru/courses/eresmat/co ... 9_12z1.htm. Здесь умножают на матрицу поворота.
Получаем систему:
∆X = ∆X'*cos(45) - ∆Y'*sin(45) = sqrt(2)/2 * (∆X'-∆Y') = sqrt(2)/2 * ∆B
∆Y = ∆X'*sin45(45) + ∆Y'*cos(45) = sqrt(2)/2 * (∆X'+∆Y') = sqrt(2)/2 * ∆A
Это равно длинам катетов в равнобедренном прямоугольном треугольнике (a = b = c*sin(45)).
Но ведь не то получается?
Re: Не квадратный H-BOT
Если бы решал прикладную задачу, то наверное так и сделал бы.. И было бы оптимальным решением, но хочется до сути дойти.3D-SPrinter писал(а): ↑04 мар 2020, 21:07Я к тому, что не надо ничего придумывать. Можно просто использовать стандартную прошивку, настроив её под Н-Бот.
-
- Сообщения: 663
- Зарегистрирован: 31 янв 2019, 23:09
- Имя: Виктор
- Откуда: Королёв
- Благодарил (а): 29 раз
- Поблагодарили: 70 раз
Re: Не квадратный H-BOT
Domus, Вам уже всё объяснили, даже с формулами.
Никак не пойму, почему Вы привязываетесь к прямоугольному корпусу, если надо двигаться по диагонали в пределах квадрата (Ваше последнее сообщение). Какое значение имеет форма корпуса, если голова двигается не корпусом, а моторами? Им плевать на форму корпуса. Крутим один мотор - едем по диагонали. Другое дело, что вписав диагональ квадрата в прямоугольный корпус, одна из осей выберет весь ход, а другая не доедет до конца на величину разницы между длинами осей (сторон корпуса). Ну так и задайте ограничения на перемещение по осям, чтобы система знала свои границы. Именно это и делается в том же Марлине, когда задаются размеры стола. Хоть квадратного, хоть прямоугольного.
Вот если на моторы Н-бота разные шкивы поставить (с разным количеством зубьев), тогда диагонали будут не квадратными. Корпус тут при чём?
Никак не пойму, почему Вы привязываетесь к прямоугольному корпусу, если надо двигаться по диагонали в пределах квадрата (Ваше последнее сообщение). Какое значение имеет форма корпуса, если голова двигается не корпусом, а моторами? Им плевать на форму корпуса. Крутим один мотор - едем по диагонали. Другое дело, что вписав диагональ квадрата в прямоугольный корпус, одна из осей выберет весь ход, а другая не доедет до конца на величину разницы между длинами осей (сторон корпуса). Ну так и задайте ограничения на перемещение по осям, чтобы система знала свои границы. Именно это и делается в том же Марлине, когда задаются размеры стола. Хоть квадратного, хоть прямоугольного.
Вот если на моторы Н-бота разные шкивы поставить (с разным количеством зубьев), тогда диагонали будут не квадратными. Корпус тут при чём?
-
- Сообщения: 663
- Зарегистрирован: 31 янв 2019, 23:09
- Имя: Виктор
- Откуда: Королёв
- Благодарил (а): 29 раз
- Поблагодарили: 70 раз
Re: Не квадратный H-BOT
По диагонали прямоугольника? Должны работать оба мотора. С квадратом всё понятно - соотношение сторон 1:1, крутим один мотор - едем строго по диагонали квадрата.
Теперь прямоугольник, соотношение сторон к примеру 1:2. Допустим 1 это У, а 2 это Х. Представим схему: моторы вверху, голова исходно в левом нижнем углу, крутим правый мотор по часовой, левый стоит. Голова по диагонали квадрата доедет по У до упора (верх по схеме), а по Х только до середины. Чтобы по Х тоже доехать до упора (в итоге до правого верхнего угла), надо поработать одновременно и левым мотором в ту же сторону, но с числом оборотов 1/2 от оборотов правого. Таким образом, балка оси У пройдёт путь 1, а голова по балке (оси Х) пройдёт путь 2 - как раз по соотношению сторон прямоугольника. Если соотношение сторон 1:3, то и моторы надо крутить с тем же соотношением. Если соотношение обратное (У больше чем Х), то и левым мотором надо крутить с обратным отношением - не 1/2 а х2.
Отвлекитесь от прямого расчёта диагоналей, считайте так, как ездит балка и по ней голова - по сторонам поля (параллельно им). Вот и считайте перемещение осей пропорционально сторонам - получите диагонали.
- Alex Post
- Сообщения: 6993
- Зарегистрирован: 11 янв 2017, 17:22
- Имя: Александр
- Откуда: Брест, РБ
- Благодарил (а): 330 раз
- Поблагодарили: 817 раз
- Контактная информация:
Re: Не квадратный H-BOT
Почему? Убери из головы слово "диагональ", оно тебя путает. Вместо него применяй слово "под 45*" и все встанет на свои места. И если ты реализовал движение по прямым - в чем трудность реализовать движение под 45*? Считаешь приращение по одной оси - переводишь в шаги моторов. Считаешь приращение по другой оси - опять переводишь в шаги моторов. Складываешь эти шаги моторов с учетом знака. Итоговое движение получаем туда куда хотели. Не забивай себе голову диагоналями, это всего лишь частный случай.
По синусам-косинусам аналогично. Ну будет у тебя в каждой формуле sin 45* но это, по факту - КОНСТАНТА, грубо 0.7071. Можно прям ее в формулу подставить, а можно при калибровке осей просто учесть. Ведь все равно движение у тебя происходит в шагах на мм. Ну будет в 0.7071 раз меньше шагов (или больше, лень соображать) - какая нафиг разница для конечного результата?
Prusa i3 rework - трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
Черно-оранжевый 3D-SPrinter 232 - https://3deshnik.ru/forum/viewtopic.php?f=21&t=393