Спорный момент по кинематике.

Было бы понятно, если бы была такая настройка $рывок, тогда сделав $рывок=0, то есть приравняв рывок к нулю, мы настраивали бы движение станка при наборе нужной скорости движения из останова всегда равноускоренным, то есть с одинаковыми ускорениями, выставленными в $120, $121, $122.
Равномерное движение (движение с постоянной скоростью), это когда его производная (ускорение, вернее составляющая ускорения, сонаправленная с вектором скорости) равно нулю.
Равноускоренное движение (движение с постоянным ускорением), это когда производная ускорения (вектора, сонаправленного с вектором ускорения) равна нулю (рывок равен нулю).
Вот интересно $11=0 (Junction deviation) - это эквивалентно тому, что ускорение всегда будет постоянным?
Аппроксимация острого угла дугой окружности. Движение по дуге, вместо обычного разбиения на хорды, рассчитывается аналитически.
1737136787292.png
 
Аппроксимация острого угла дугой окружности. Движение по дуге, вместо обычного разбиения на хорды, рассчитывается аналитически.
1737136787292.png
Дошло. Спасибо, Валер. Хотите обнулить "рывок", значит, выставляйте в GRBL $11=0 (отклонение от угла до дуги равно нулю, то есть никакой аппроксимации, движение точно по траектории) и порядок.
Это важно для GGEasy HLDI, где ускорение должно быть постоянным и никаких отклонений от траектории.
 
Дошло. Спасибо, Валер. Хотите обнулить "рывок", значит, выставляйте в GRBL $11=0 (отклонение от угла до дуги равно нулю, то есть никакой аппроксимации, движение точно по траектории) и порядок.
Это важно для GGEasy HLDI, где ускорение должно быть постоянным и никаких отклонений от траектории.
Если хочешь вникнуть в детали алгоритма "junction deviation" - скачай коды grbl и посмотри в planner.c Там отклонение от траектории происходит не из-за переменного ускорения, а из-за аппроксимации острого угла дугой. Таким образом ускоряют работу на острых углах за счет потери точности.
 
  • Причина: не успел дописать.
  • Последнее редактирование:
Причина: не успел дописать.
Последнее редактирование:
скачай коды grbl и посмотри в planner.c
Посмотрел. И где здесь хоть одно слово про изменение траектории? Вижу только про скорость и ускорение.
// Fields used by the motion planner to manage acceleration
float entry_speed_sqr; // The current planned entry speed at block junction in (mm/min)^2
float max_entry_speed_sqr; // Maximum allowable entry speed based on the minimum of junction limit and
// neighboring nominal speeds with overrides in (mm/min)^2
float max_junction_speed_sqr; // Junction entry speed limit based on direction vectors in (mm/min)^2
float nominal_speed_sqr; // Axis-limit adjusted nominal speed for this block in (mm/min)^2
float acceleration; // Axis-limit adjusted line acceleration in (mm/min^2)
float millimeters; // The remaining distance for this block to be executed in (mm)
// uint8_t max_override; // Maximum override value based on axis speed limits


Откуда у Вас информация про аппроксимацию угла в алгоритме"junction deviation"?
Ваши сообщения автоматически объединены:

Дошло. Спасибо, Валер. Хотите обнулить "рывок", значит, выставляйте в GRBL $11=0 (отклонение от угла до дуги равно нулю, то есть никакой аппроксимации, движение точно по траектории) и порядок.
Вы опять всё поняли не правильно. Метод "junction deviation" не меняет траекторию движения и не меняет отрезки движения после разбивки кривой на сектора. Метод меняет характер изменения скорости.
Уважаемый vvv1234 показал картинку объясняющею суть метода, но не описал смысл.
Черным нарисована реальная траектория, а красным виртуальная, по которой вычисляется замедление и ускорение на участке регулирования.
 
Instead of motioning all the way to junction point, the machine will just follow the arc circle defined here.
А ссылка есть на источник этих слов?
Теория это конечно хорошо, а Вы на практике убедились, что углы срезаются?
Я свои выводы выкладываю на основе практики, просто беру и проверяю на живом станке. Значение "0" еще не проверял, но завтра будет результат. В остальном всё проверено и работает без срезания углов, а с изменением скоростей согласно вашей картинке. Чем больше значение $11, тем меньше радиус виртуального скругления, тем жёстче работает станок, а при нуле вероятно будет задан максимально возможный радиус заданный в прошивке, либо вообще функция отключится (завтра проверю).
 
А ссылка есть на источник этих слов?
planner.c

Посмотрел сам алгоритм, глубоко не вникал, но похоже, что Вы правы: по дуге идет вычисление скорости, а результаты применяются к прямой. В результате в точку поворота шпиндель приходит с нулевой скоростью. А сама скорость, вместо того, чтобы быть постоянной, изменяется нелинейно путем изменения ускорения. При этом максимальная величина ускорения подстраивается таким образом, чтобы не превышать значения, заданного в $. Также, для соблюдения правильности траектории, скорости и ускорения для короткой траектории масштабируются так, что сохранить начальные пропорции (Vx/Vy).
1737151159432.png
 
Последнее редактирование:
А ссылка есть на источник этих слов?
planner.c
Junction_deviation.jpg
Ваши сообщения автоматически объединены:

А сама скорость, вместо того, чтобы быть постоянной, изменяется нелинейно путем изменения ускорения.
Валер, так там без поллитры не разберешься. Рисунок для объяснения приводится с острым углом, но тут же говорят, что "...что для прямых углов или при движении задним ходом рассчитанная максимальная скорость перехода равна нулю или близка к нулю...", то есть получается всегда через останов (траектория точная).
Junction_deviation_1.jpg
 
Последнее редактирование:
Валер, так там без поллитры не разберешься. Рисунок для объяснения приводится с острым углом, но тут же говорят, что "...что для прямых углов или при движении задним ходом рассчитанная максимальная скорость перехода равна нулю или близка к нулю...", то есть получается всегда через останов (траектория точная).
Я сначала смотрел по комментариям, а потом засомневался и слегка покопался в кодах. Останов в точке поворота - да, он происходит при любом δ. Точнее, не полный останов, а небольшой скачок скоростей, определяемый ранее обсуждавшимся ΔV. Но при ненулевом δ полное время прохода уменьшается. Из-за того, что модуль вектора скорости переносится с дуги на прямую. Если не ограничивать ускорение, то выигрыш по времени можно получить приличный. Но при большом ускорении можно и на потерю шагов нарваться. Можно посчитать выигрыш по времени для разных ускоренией и δ, но лень.

Вообщем, для оптимального выбора режима надо играться с двумя параметрами, задаваемыми в $: ускорением и δ. Но тебе, насколько я понимаю, важнее точность, а не время работы. Поэтому не бери в голову и работай с обычным полным остановом.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать