Исправление колебаний, точных ошибок и большее количество алгоритма управления скоростью. Мой подход правильный?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Исправление колебаний, точных ошибок и большее количество алгоритма управления скоростью. Мой подход правильный?

Сообщение Anonymous »

Проблема: < /h3>
Я хочу, чтобы моя «Следующая система координат (FCS)» достигла положения «установленной системы координат (SCS)», сохраняя при этом профиль трапециевидной скорости с использованием заданных параметров как ограниченная скорость и ускорение. Тем не менее, я сталкиваюсь с такими проблемами, как колебания скорости и отсутствие целевой позиции, возможно, из -за точных ошибок. Несмотря на тестирование различных решений, я не смог достичь неизменно положительных результатов. < /P>
поведение системы: < /h3>

Позиции для FCS и SCS являются случайными. Как только FCS достигает
целевой позиции SCS (

Код: Выделить всё

linear_distance < 1e-3< /code>), SCS перемещается случайным образом на новую позицию ... пока, но
[b] в будущем я хочу, чтобы SCS двигался случайным образом и непредсказуемо в любой момент, не ожидая FCS Чтобы добраться до него < /strong>. < /li>
 Каждый шаг начинается с расчета линейной скорости
fcs, а затем скорость пропорционально разделена между x, y,
и z оси, основанные на нормированном векторе направления от FCS до SCS. Начиная мои расчеты с ускорения и перехода от ускорения
к скорости, а затем от скорости до положения стало слишком сложным, и
трудно отладить, но я готов дать ему еще один шанс. < /Li>
< /ul>
 мой алгоритм сбоя (Python): < /h3>
 Часть 1. Расчеты линейной скорости: < /h4>
for step in range(cycles):

axis_distance = np.array(current_scs[:3]) - np.array(current_fcs[:3])
linear_distance = np.linalg.norm(axis_distance)

breaking_distance = (linear_velocity[-1]**2) / (2 * max_deceleration)

# Acceleration or constant velocity phase
if linear_distance > breaking_distance:
if np.abs(max_velocity - linear_velocity[-1]) > max_acceleration * cycle_time: # Preventing overshooting max_velocity
linear_velocity.append(linear_velocity[-1] + max_acceleration * cycle_time)
else:
linear_velocity.append(max_velocity)
# Deceleration phase
else:
if linear_velocity[-1] > max_deceleration * cycle_time: # Preventing overshooting 0
linear_velocity.append(linear_velocity[-1] - max_deceleration * cycle_time)
else:
linear_velocity.append(0)

linear_acceleration.append((linear_velocity[-1] - linear_velocity[-2]) / cycle_time)
< /code>
 Часть 2. Разделение линейной скорости между XYZ: < /h4>
    for i in range(3):

factor = axis_distance[i] / linear_distance if linear_distance != 0 else 0

new_axis_velocity = linear_velocity[-1] * factor

if velocity[i][-1] < new_axis_velocity:
velocity[i].append(velocity[i][-1] + np.min([max_acceleration * cycle_time, new_axis_velocity - velocity[i][-1]]))
#print(f"{step} accelerating at axis {i}")
elif velocity[i][-1] > new_axis_velocity:
velocity[i].append(velocity[i][-1] - np.min([max_deceleration * cycle_time, velocity[i][-1] - new_axis_velocity]))
#print(f"{step} decelerating at axis {i}")
else:
velocity[i].append(velocity[i][-1])
#print(f"{step} target velocity for axis {i} reached")

acceleration[i].append((velocity[i][-1] - velocity[i][-2]) / cycle_time)

current_fcs[i] += velocity[i][-1] * cycle_time
< /code>
 output: < /h3>
Чтобы отслеживать прогресс, я регистрирую данные и отображаю их на графиках. Вот почему, например, Скорость сейчас массива массивов. Это не будет, когда я закончу. Вот один набор графиков:

Как вы видите, что FCS траектория сначала пропустила SCS, Но затем он нажимал и нажимает снова, это следующие позиции с правильным замедлением. < /p>
SCS reached at 5574 : linear_distance = 0.0008199809854013105, linear_velocity = 2.7999999999649416
SCS reached at 9163 : linear_distance = 0.0008934633980521272, linear_velocity = 0.7999999999478358
Неправильная легенда: Orange здесь - линейное ускорение! [/b]

и вот линейная скорость после деления на xyz
< /p>
Проблемы: < /h3>
Я мог бы продолжать пытаться исправить, но я не уверен, что это правильный подход в первое место. Мне не хватает фон в теории управления и планировании движения.
Я ищу обратную связь и любые советы по решению проблем, с которыми я сталкиваюсь!>

Подробнее здесь: https://stackoverflow.com/questions/794 ... gorithm-is
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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