LIBRARY
tests.SlipWheelOnIncline
Slip Wheel on an inclined plane
Demonstrates the exact surface_frame.R-based contact normal. The road is a planar incline tilted by theta about the world z-axis: height y = tan(theta)*x, with the surface frame oriented so its y-axis is the (tilted) surface normal and its x-axis the slope heading. A wheel released from rest rolls/slides downhill under the tangential component of gravity — which only appears because the contact normal is non-vertical (a vertical-normal approximation would leave the wheel stationary along the slope).
Usage
MultibodyComponents.tests.SlipWheelOnIncline(theta=0.2)
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
theta | Incline angle about the world z-axis | rad | 0.2 |
Behavior
Source
dyad
"""
# Slip Wheel on an inclined plane
Demonstrates the exact `surface_frame.R`-based contact normal. The road is a
planar incline tilted by `theta` about the world z-axis: height `y = tan(theta)*x`,
with the surface frame oriented so its y-axis is the (tilted) surface normal and
its x-axis the slope heading. A wheel released from rest rolls/slides downhill
under the tangential component of gravity — which only appears because the
contact normal is non-vertical (a vertical-normal approximation would leave the
wheel stationary along the slope).
"""
example component SlipWheelOnIncline
world = MultibodyComponents.World() {}
wheel = MultibodyComponents.SlippingWheel(surface = true, radius = 0.3, m = 2, mu_A = 0.95, mu_S = 0.5, x(initial = 0), z(initial = 0), angles(initial = [0, 0, 0]), der_angles(initial = [0, 0, 0])) {}
"Incline angle about the world z-axis"
parameter theta::Angle = 0.2
relations
# The road height y = tan(theta)*x and the matching tangent-plane orientation
# are both built from the same height expression; surface_orientation derives
# the exact contact normal/heading, so no R matrix has to be written by hand.
wheel.surface_frame.r_0[2] = tan(theta) * wheel.surface_frame.r_0[1]
wheel.surface_frame.R = MultibodyComponents.surface_orientation(wheel.surface_frame.r_0[1], wheel.surface_frame.r_0[3], tan(theta) * wheel.surface_frame.r_0[1])
endFlattened Source
dyad
"""
# Slip Wheel on an inclined plane
Demonstrates the exact `surface_frame.R`-based contact normal. The road is a
planar incline tilted by `theta` about the world z-axis: height `y = tan(theta)*x`,
with the surface frame oriented so its y-axis is the (tilted) surface normal and
its x-axis the slope heading. A wheel released from rest rolls/slides downhill
under the tangential component of gravity — which only appears because the
contact normal is non-vertical (a vertical-normal approximation would leave the
wheel stationary along the slope).
"""
example component SlipWheelOnIncline
world = MultibodyComponents.World() {}
wheel = MultibodyComponents.SlippingWheel(surface = true, radius = 0.3, m = 2, mu_A = 0.95, mu_S = 0.5, x(initial = 0), z(initial = 0), angles(initial = [0, 0, 0]), der_angles(initial = [0, 0, 0])) {}
"Incline angle about the world z-axis"
parameter theta::Angle = 0.2
relations
# The road height y = tan(theta)*x and the matching tangent-plane orientation
# are both built from the same height expression; surface_orientation derives
# the exact contact normal/heading, so no R matrix has to be written by hand.
wheel.surface_frame.r_0[2] = tan(theta) * wheel.surface_frame.r_0[1]
wheel.surface_frame.R = MultibodyComponents.surface_orientation(wheel.surface_frame.r_0[1], wheel.surface_frame.r_0[3], tan(theta) * wheel.surface_frame.r_0[1])
metadata {}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses