Шар на наклонной поверхности (физический компонент)
Шар на платформе (физический компонент)
Система «шар на платформе» (Ball and Plate) - классический испытательный стенд для отработки алгоритмов управления в робототехнике и мехатронике.
Система моделирует динамику неустойчивого объекта, где требуется удерживать шар в заданной точке платформы, управляя её наклоном.
Создание такой системы в виде физического компонента упрощает моделирование, поскольку позволяет напрямую реализовывать модель через физические уравнения, язык моделирования физических компонентов Engee берет на себя маршрутизацию информации и позволяет компактно разрабатывать модели в текстовом редакторе.
Математическое описание
Движение шара по наклонной плоскости описывается системой дифференциальных уравнений, учитывающих качение без скольжения, демпфирование и ограничения.
Уравнения движения шара:
Где:
- — координаты шара на платформе,
- — углы наклона платформы,
- — масса шара,
- — ускорение свободного падения,
- — коэффициент демпфирования,
- — внешние силы.
Моделирование граничных условий (стенки):
При достижении края платформы () возникает упругая реакция:
где — половина размера платформы, — радиус шара, — жесткость стенки, — демпфирование стенки, а — функция Хевисайда, активирующая демпфер только при движении к стенке.
Запуск модели
Изучим поведение модели при приложении нарастающих колебаний, то есть без траекторного управления и без обратной связи. В момент к шарику прикладывается усилие в 0.01 Н длительностью в 0.2 с - мы увидим последствие подталкивания, которое испытал наш объект управления.
engee.open("ball_and_plate.engee")
data = engee.run()
ball_x = data["ball_x"]
ball_y = data["ball_y"]
plate_angle_x = data["plate_angle_x"]
plate_angle_y = data["plate_angle_y"]
gr()
plot(
plot(
plot( plate_angle_x.time, (180/pi) .* [plate_angle_x.value plate_angle_y.value],
xlabel="Время, с", ylabel="Угол, град",
label = ["Угол по X" "Угол по Y"],
title = "Угол отклонения платформы",
left_margin = 10Plots.Measures.mm),
plot( ball_x.time, [ball_x.value ball_y.value],
xlabel="Время, с", ylabel="Смещение, м",
label = ["X" "Y"],
title="Перемещение шара на платформе",
left_margin = 10Plots.Measures.mm),
layout=(2,1),
),
plot(ball_x.value, ball_y.value,
title="Траектория шара", label="", aspect_ratio=:equal,
xlabel="Смещение по X, м", ylabel="Смещение по Y, м"),
size=(900,400)
)
Заключение
Представленная модель Ball and Plate наглядно демонстрирует ключевые принципы динамики и управления техническими системами. Данная модель является эффективной платформой для изучения и отработки алгоритмов стабилизации в реальном времени, ей также можно управлять через внешний контроллер и отлаживать алгоритмы управления таким образом.
