Serg-tmn писал(а):Как известно, момент ШД падает с увеличением скорости. Соответственно, для оптимального разгона есть смысл при низких скоростях задавать бОльшие значения ускорения, а при высоких - меньшие.
Сначала подумал - а может быть тут ошибка - ведь с ростом скорости растет и отдаваемая двигателем мощность при постоянном моменте...
Но нет - кинетическая энергия пропорциональна квадрату скорости, соответственно, если скорость увеличивается линейно - мотору нужно будет отдавать возрастающую мощность.
Nick писал(а):На уровне планировщика траекторий, боюсь это будет также сложно как и S-кривая разгона.
А про S кривые могу рассказать следующее:
S кривая - постепенное (трапецеидальное) изменение ускорения. Можно сравнить с движением на легковом автомобиле, когда вы плавно нажимаете/отпускаете педаль газа,
а не как на троллейбусе - то газ в пол то тормоз до упора.
S кривая в первую очередь позволяет избавиться от вибраций станка в начале и конце ускорения (aftaev где-то приводил пример видео сервоактуатора с маятником).
Можно ощутить это на себе в дешевых лифтах - он когда трогается, его трясет, когда останавливается - тоже (хотя тут может быть вообще ступенчатое изменение скорости).
А вот в крутых лифтах вообще не замечаешь, как он трогается и останавливается, и это было бы невозможно с линейным увеличением скорости, т.к. тогда чувствовалось бы резкое изменение ускорения свободного падения в лифте (чувствовалось бы изменение веса).
Когда решался - стоит ли покупать KFlop, на другом форуме меня уверяли, что он поддерживает S кривые изменения скорости.
Оказалось - поддерживает, но только при холостых перемещениях. ((((
Разработчик очень хотел бы сделать поддержку в планировщике траектории, но сказал, что в ближайшее время надеяться не стоит.
Я себе представляю следующий алгоритм расчета траектории с S кривыми:
Рассчитываем траекторию стандартными методами
Строим графики скоростей и ускорений
Корректируем это все так, чтобы на графике ускорений были не прямые грани а наклонные, как у трапеции (или, хотя бы ступеньками).
Соответственно, придется растянуть/сжать в соответствии с ускорениями графики скорости и положения.
Придется изменять графики всех осей одновременно, чтобы не было отклонений от траектории.
Как это сделать - могу нарисовать, тогда станет намного понятнее.
Возможны две проблемы
1. Полученный результат может оказаться неидеальным, возможно, некоторые участки можно было бы пройти немного быстрее (где раньше траектория упиралась в скорость одной из осей).
2. Алгоритм может оказаться не реализуемым (почему -не знаю, просто я не все тонкости продумал, когда писал).
И второй вариант расчета:
По идее, для расчета нужно лишь уметь рассчитывать движение по прямой исходя из начальной скорости и зная допустимую конечную скорость (частный случай, когда обе скорости равны нулю).
И то же самое для дуговых сегментов (к сожалению - в пространстве, а не на плоскости).
Научившись это рассчитывать можно получить требуемый профиль изменения скорости.
Затем данные можно квантовать и передавать, практически в любой аппаратный контроллер (т.к. для многих есть открытые библиотеки), или плату типа MESA.