LinuxCNC новый планировщик TP

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

LinuxCNC новый планировщик TP

Сообщение Nick »

Тут UAVpilot, ссылку на документацию постил, там уже есть описание параметров ini для нового планировщика.
Доекументация от 2.7.
Это получается, что скоро мы таки увидим новый планировщик? :cheesy:
The [TRAJ] section contains general parameters for the trajectory planning module in motion.

ARC_BLEND_ENABLE = 1 - Turn on new TP. If set to 0 TP uses parabolic blending (1 segment look ahead.) Default value 1.

ARC_BLEND_FALLBACK_ENABLE = 0 - Optionally fall back to parabolic blends if the estimated speed is faster. However, this estimate is rough, and it seems that just disabling it gives better performance. Default value 0.

ARC_BLEND_OPTIMIZATION_DEPTH = 50 - Look ahead depth in number of segments.

To expand on this a bit, you can choose this value somewhat arbitrarily. Here’s a formula to estimate how much depth you need for a particular config:

# n = v_max / (2.0 * a_max * t_c) # where: # n = optimization depth # v_max = max axis velocity (UU / sec) # a_max = max axis acceleration (UU / sec) # t_c = servo period (seconds)

So, a machine with a maximum axis velocity of 10 IPS, a max acceleration of 100 IPS^2, and a servo period of 0.001 sec would need:

10 / (2.0 * 100 * 0.001) = 50 segments to always reach maximum velocity along the fastest axis.

In practice, this number isn’t that important to tune, since the look ahead rarely needs the full depth unless you have lots of very short segments. If during testing, you notice strange slowdowns and can’t figure out where they come from, first try increasing this depth using the formula above.

If you still see strange slowdowns, it may be because you have short segments in the program. If this is the case, try adding a small tolerance for Naive CAM detection. A good rule of thumb is this:

# min_length ~= v_req * t_c # where: # v_req = desired velocity in UU / sec # t_c = servo period (seconds)

If you want to travel along a path at 1 IPS = 60 IPM, and your servo period is 0.001 sec, then any segments shorter than min_length will slow the path down. If you set Naive CAM tolerance to around this min length, overly short segments will be combined together to eliminate this bottleneck. Of course, setting the tolerance too high means big path deviations, so you have to play with it a bit to find a good value. I’d start at 1/2 of the min_length, then work up as needed.

ARC_BLEND_GAP_CYCLES = 4 How short the previous segment must be before the trajectory planner consumes it.

Often, a circular arc blend will leave short line segments in between the blends. Since the geometry has to be circular, we can’t blend over all of a line if the next one is a little shorter. Since the trajectory planner has to touch each segment at least once, it means that very tiny segments will slow things down significantly. My fix to this way to "consume" the short segment by making it a part of the blend arc. Since the line+blend is one segment, we don’t have to slow down to hit the very short segment. Likely, you won’t need to touch this setting.

ARC_BLEND_RAMP_FREQ = 20 - This is a cutoff frequency for using ramped velocity.

Ramped velocity in this case just means constant acceleration over the whole segment. This is less optimal than a trapezoidal velocity profile, since the acceleration is not maximized. However, if the segment is short enough, there isn’t enough time to accelerate much before we hit the next segment. Recall the short line segments from the previous example. Since they’re lines, there’s no cornering acceleration, so we’re free to accelerate up to the requested speed. However, if this line is between two arcs, then it will have to quickly decelerate again to be within the maximum speed of the next segment. This means that we have a spike of acceleration, then a spike of deceleration, causing a large jerk, for very little performance gain. This setting is a way to eliminate this jerk for short segments.

Basically, if a segment will complete in less time than 1 / ARC_BLEND_RAMP_FREQ, we don’t bother with a trapezoidal velocity profile on that segment, and use constant acceleration. (Setting ARC_BLEND_RAMP_FREQ = 1000 is equivalent to always using trapezoidal acceleration, if the servo loop is 1kHz).

You can characterize the worst-case loss of performance by comparing the velocity that a trapezoidal profile reaches vs. the ramp:

# v_ripple = a_max / (4.0 * f) # where: # v_ripple = average velocity "loss" due to ramping # a_max = max axis acceleration # f = cutoff frequency from INI

For the aforementioned machine, the ripple for a 20Hz cutoff frequency is 100 / (4 * 20) = 1.25 IPS. This seems high, but keep in mind that it is only a worst-case estimate. In reality , the trapezoidal motion profile is limited by other factors, such as normal acceleration or requested velocity, and so the actual performance loss should be much smaller. Increasing the cutoff frequency can squeeze out more performance, but make the motion rougher due to acceleration discontinuities. A value in the range 20Hz to 200Hz should be reasonable to start.

Finally, no amount of tweaking will speed up a toolpath with lots of small, tight corners, since you’re limited by cornering acceleration.
billsmith
Опытный
Сообщения: 128
Зарегистрирован: 04 июн 2012, 23:46
Репутация: 5
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение billsmith »

В 2.7 он уже работает, и работает ОТЛИЧНО ;)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Сергей Саныч »

billsmith писал(а):В 2.7 он уже работает, и работает ОТЛИЧНО ;)
Есть такое :)
Чудес не бывает. Бывают фокусы.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение aftaev »

billsmith писал(а):В 2.7 он уже работает, и работает ОТЛИЧНО
какие отличия от предыдущего?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение PKM »

В несколько раз быстрее на траекториях из мелких отрезков
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

Всем добра! Подскажите, кто в теме, пожалуйста. Сделал 3д принтер на линуксцнц 2.7. Новый планировщик отлично работает в двух осях: X и Y. Но когда добавляется ось экструдера (ось А) , то планировщик начинает тормозить на углах. Даже по окружности, состоящей из мелких сегментов, тормозит Пытался ускорение экструдера повысить - не помогло. В какую сторону копать, если в принципе эта проблема разрешима?
Аватара пользователя
Maxekb77
Мастер
Сообщения: 1658
Зарегистрирован: 05 окт 2013, 00:04
Репутация: 285
Настоящее имя: Максим
Откуда: Екатеринбург
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Maxekb77 »

из простого поигратся с g64
из сложно не использовать его как ось A
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Сергей Саныч »

Проблема известная. Обсуждалась и на этом форуме, и на буржуйских. Есть у планировщика такой грех - не умеет нормально работать с поворотной осью.
И G64 вряд ли поможет.
Можно придумать, как экструдером изобразить шпиндель.
Чудес не бывает. Бывают фокусы.
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

с g64 игрался. Не помогает. Что-то сильно ось А его тормозит
Maxekb77 писал(а): из сложно не использовать его как ось A
Думало о таком варианте, но пока идей как реализовать нет
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение MX_Master »

Гагарин писал(а): 17 янв 2021, 19:47 Всем добра! Подскажите, кто в теме, пожалуйста. Сделал 3д принтер на линуксцнц 2.7. Новый планировщик отлично работает в двух осях: X и Y. Но когда добавляется ось экструдера (ось А) , то планировщик начинает тормозить на углах. Даже по окружности, состоящей из мелких сегментов, тормозит Пытался ускорение экструдера повысить - не помогло. В какую сторону копать, если в принципе эта проблема разрешима?
Нет ничего проще. Надо юзать букву Z как экструдер, а букву А - как вертикальную ось :beer_blow:
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

Сергей Саныч писал(а): Можно придумать, как экструдером изобразить шпиндель.
обозвать ось экструдера буквой S и сделать связь пина оборотов шпинделя со степгеном?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение MX_Master »

Гагарин писал(а): обозвать ось экструдера буквой S и сделать связь пина оборотов шпинделя со степгеном?
Это довольно длинный крюк к желаемому результату. Можно застопорится уже на синхронизации оборотов шпинделя с подачей осей XY. Самое быстрое - указать в постпроцессоре слайсера для экструдера букву Z, а для вертикальной оси - A. К выходу степ/дир оси Z подрубить драйвер экструдера, а драйвер вертикальный оси - к степ/дир выходу оси А.

Итого - 5 минут и всё готово :hottabych:

Но в целях самообучения попробуйте и с буквой S :)
Последний раз редактировалось MX_Master 17 янв 2021, 22:14, всего редактировалось 1 раз.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Сергей Саныч »

Точно не в курсе, сам не пробовал, но вроде как само наличие четвертой оси вводит планировщик в ступор.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Serg »

Попробуйте ось W.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

Будем пробовать
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

Запустить с осью W не удалось на axis.

Если поменять местами z и a, вроде и есть эффект, но вроде и хуже чем чисто 2оси(XY).

Если ось A обозвать буквой S, то толку ноль - тормозит.

Походу этот планировщик хорош только при работе с двумя осями.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение MX_Master »

Гагарин писал(а): Если поменять местами z и a, вроде и есть эффект, но вроде и хуже чем чисто 2оси(XY).
Ну и, что-то типа G64 Q0.1 P0.1, в начале G кода надо не забыть :)

Но вообще-то неплохо бы снять видео с пояснениями, что и где с движением не так, и как должно быть.
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

MX_Master писал(а): Ну и, что-то типа G64 Q0.1 P0.1, в начале G кода надо не забыть
Не забываю, без них совсем грустно)

Тестовою программу наглядней как-нибудь сделаю, может и сниму, но не факт: блогер из меня так себе)

Скорость на траектории сильно скачет. А когда новый планировщик нормально работает, то там где была чуть-ли не остановка, скорость падает не так сильно, а где раньше не сильно притормаживало -летит на максимальной скорости. Понятно дело я всякими способами это частично компенсирую, но этого мало. Стараюсь использовать постпроцессор g1tog23 , допуск слайсинга понижаю и про G64 не забываю. Но хотелось бы побыстрее...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Serg »

Гагарин писал(а): Запустить с осью W не удалось на axis.
У меня на стенде работает... :wik:

В инете есть рассказы о постройке 3D принтеров на LinuxCNC, будет желание - поищите...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: LinuxCNC новый планировщик TP

Сообщение Гагарин »

Serg писал(а): У меня на стенде работает...
Было мало времени на попытку, будем еще тогда пробовать.
Serg писал(а): В инете есть рассказы о постройке 3D принтеров на LinuxCNC, будет желание - поищите...
Поищем, главное чтоб там эту проблему решили. Остальное, вроде работает у меня.

Тормоза компенсируются еще одним способом - увеличением ускорений больше 5000 мм/с^2. Но конструкция пока не справляется)
Ответить

Вернуться в «LinuxCNC»