Документация Engee
Notebook

Шар на платформе (физический компонент)

Система «шар на платформе» (Ball and Plate) - классический испытательный стенд для отработки алгоритмов управления в робототехнике и мехатронике.

Система моделирует динамику неустойчивого объекта, где требуется удерживать шар в заданной точке платформы, управляя её наклоном.

Создание такой системы в виде физического компонента упрощает моделирование, поскольку позволяет напрямую реализовывать модель через физические уравнения, язык моделирования физических компонентов Engee берет на себя маршрутизацию информации и позволяет компактно разрабатывать модели в текстовом редакторе.

Математическое описание

Движение шара по наклонной плоскости описывается системой дифференциальных уравнений, учитывающих качение без скольжения, демпфирование и ограничения.

Уравнения движения шара:

Где:

  • — координаты шара на платформе,
  • — углы наклона платформы,
  • — масса шара,
  • — ускорение свободного падения,
  • — коэффициент демпфирования,
  • — внешние силы.

Моделирование граничных условий (стенки):

При достижении края платформы () возникает упругая реакция:

где — половина размера платформы, — радиус шара, — жесткость стенки, — демпфирование стенки, а — функция Хевисайда, активирующая демпфер только при движении к стенке.

Запуск модели

Изучим поведение модели при приложении нарастающих колебаний, то есть без траекторного управления и без обратной связи.

In [ ]:
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)
)
Out[0]:
No description has been provided for this image

В момент к шарику прикладывается усилие в 0.01 Н длительностью в 0.2 с - мы увидим последствие подталкивания, которое испытал наш объект управления.

image.png

Заключение

Представленная модель Ball and Plate наглядно демонстрирует ключевые принципы динамики и управления техническими системами. Данная модель является эффективной платформой для изучения и отработки алгоритмов стабилизации в реальном времени, ей также можно управлять через внешний контроллер и отлаживать алгоритмы управления таким образом.