Skip to content
LIBRARY
tests.SlipWheelInWorld.md

tests.SlipWheelInWorld

Slip Wheel In World

Ported from the Multibody.jl docs (docs/src/examples/wheel.md, SlipWheelInWorld). A slipping wheel on flat ground starts with large initial spin (der_angles = [0, 25, 0.1]) but zero linear velocity. The contact patch slips initially and then the wheel picks up speed as the slip-dependent friction model transfers torque to the road.

Useful for verifying that the slip-curve friction (mu_A, mu_S, sAdhesion, sSlide, vAdhesion_min, vSlide_min) is wired up correctly.

Usage

MultibodyComponents.tests.SlipWheelInWorld()

Behavior

Source

dyad
"""
# Slip Wheel In World

Ported from the Multibody.jl docs (`docs/src/examples/wheel.md`,
`SlipWheelInWorld`). A slipping wheel on flat ground starts with large
initial spin (`der_angles = [0, 25, 0.1]`) but zero linear velocity. The
contact patch slips initially and then the wheel picks up speed as the
slip-dependent friction model transfers torque to the road.

Useful for verifying that the slip-curve friction (`mu_A`, `mu_S`,
`sAdhesion`, `sSlide`, `vAdhesion_min`, `vSlide_min`) is wired up correctly.
"""
example component SlipWheelInWorld
  world = MultibodyComponents.World() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  wheel = MultibodyComponents.SlippingWheel(radius = 0.3, m = 2, I_axis = 0.06, I_long = 0.12, mu_A = 0.95, mu_S = 0.5, sAdhesion = 0.04, sSlide = 0.12, vAdhesion_min = 0.05, vSlide_min = 0.15, x(initial = 0.2), z(initial = 0.2), angles(initial = [0, 0, 0]), der_angles(initial = [0, 25, 0.1])) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 200, "y1": 20, "x2": 300, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
relations
  # Wheel starts at rest linearly (only spinning); needed to close the init system.
  # y-component is determined by the holonomic contact constraint (wheel resting on ground).
  initial wheel.body.v_0[1] = 0
  initial wheel.body.v_0[3] = 0
end
Flattened Source
dyad
"""
# Slip Wheel In World

Ported from the Multibody.jl docs (`docs/src/examples/wheel.md`,
`SlipWheelInWorld`). A slipping wheel on flat ground starts with large
initial spin (`der_angles = [0, 25, 0.1]`) but zero linear velocity. The
contact patch slips initially and then the wheel picks up speed as the
slip-dependent friction model transfers torque to the road.

Useful for verifying that the slip-curve friction (`mu_A`, `mu_S`,
`sAdhesion`, `sSlide`, `vAdhesion_min`, `vSlide_min`) is wired up correctly.
"""
example component SlipWheelInWorld
  world = MultibodyComponents.World() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  wheel = MultibodyComponents.SlippingWheel(radius = 0.3, m = 2, I_axis = 0.06, I_long = 0.12, mu_A = 0.95, mu_S = 0.5, sAdhesion = 0.04, sSlide = 0.12, vAdhesion_min = 0.05, vSlide_min = 0.15, x(initial = 0.2), z(initial = 0.2), angles(initial = [0, 0, 0]), der_angles(initial = [0, 25, 0.1])) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 200, "y1": 20, "x2": 300, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
relations
  # Wheel starts at rest linearly (only spinning); needed to close the init system.
  # y-component is determined by the holonomic contact constraint (wheel resting on ground).
  initial wheel.body.v_0[1] = 0
  initial wheel.body.v_0[3] = 0
metadata {}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses