AnyMath 文档
Notebook

平台上的球(物理组件)

球板系统是测试机器人和机电一体化控制算法的经典测试台。

该系统模拟不稳定物体的动力学,要求通过控制球的倾斜来将球保持在平台上的给定点。

以物理组件的形式创建这样一个系统简化了建模,因为它允许您通过物理方程直接实现模型,物理组件的AnyMath建模语言接管了信息路由,并允许您在文本编辑器中紧凑地开发模型。

数学描述

球沿倾斜平面的运动由微分方程组描述,该微分方程组考虑了防滑滚动,阻尼和约束。

球的运动方程:

哪里:

  • -球在平台上的坐标,
  • -平台倾斜角度,
  • -球的质量,
  • -自由落体加速,
  • -阻尼系数,
  • -外力。

边界条件(墙)建模:

到达平台边缘时()发生弹性反应:

哪里 -平台的一半大小, -球的半径, -墙体刚度, -墙壁阻尼,以及 -Heaviside功能,仅在向墙壁移动时激活阻尼器。

启动模型

让我们研究模型在应用增加波动时的行为,即在没有轨迹控制和没有反馈的情况下。

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="位移,m",
          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-偏移量,m", ylabel="Y偏移量,m"),
    size=(900,400)
)
Out[0]:
No description has been provided for this image

此刻 在球上施加0.01n的力,持续时间为0.2s-我们将看到我们的控制对象所经历的轻推的效果。

image.png

结论

所提出的球和板模型清楚地展示了动力学和技术系统管理的关键原则。 该模型是研究和测试实时稳定算法的有效平台,也可以通过外部控制器进行控制,并可以通过这种方式调试控制算法。