# No. 371 (Brown 1868): "Modification of mangle-wheel motion. The large wheel is toothed on both faces, and an alternating circular motion is produced by the uniform revolution of the pinion, which passes from one side of the wheel to the other through an opening on the left of the figure."
#
# Reading of the figure (cm, gravity on; Brown's face view): the large wheel's rim carries 55 radial teeth (bars, one every 6 degrees
# on a 12 cm radius) standing clear of both faces, with an opening of 36 degrees at the lower left. The pinion (10 teeth,
# pitch radius 2 cm) is on a radial shaft at the left; its carriage slides along the wheel's axis, and a follower on it runs in a
# groove round the rim's outer face, two tracks (one before, one behind the teeth) joined by half-rounds about the end teeth. So the
# pinion works on the front face until it reaches the opening, passes round the end tooth to the back face, and drives the wheel back
# the other way: an alternating circular motion from the pinion's uniform revolution. The one driven joint is the pinion, 60 rev/min.
# Generator: opencode-runs/batch12/gen371.py.
number: 371
slug: mangle-wheel-both-faces
name: Modification of mangle-wheel motion
brown: "Modification of mangle-wheel motion. The large wheel is toothed on both faces, and an alternating circular motion is produced by the uniform revolution of the pinion, which passes from one side of the wheel to the other through an opening on the left of the figure."
units: cm
sim: {timestep: 0.0002, integrator: implicitfast, iterations: 100, solver: CG, multiccd: true, duration_s: 13.5, floor: false}
bodies:
  - id: wheel
    shape: part
    pos: [0, 0, 0]
    density: 7800
    friction: 0.05
    color: "#e8dec6"
    pieces:
      - {kind: disc, center: [0, 0], radius: 11.0, inner: 10.0, y: [-0.5, 0.5], collide: 0}   # the rim, inside the teeth
      - {kind: disc, center: [0, 0], radius: 2.2, inner: 1.0, y: [-1.2, 1.2], collide: 0}   # the hub
      - {kind: rod, from: [1.4142, 0, 1.4142], to: [4.7669, 0, 9.3556], radius: 0.55, collide: 0}
      - {kind: rod, from: [-1.4142, 0, 1.4142], to: [-9.3556, 0, 4.7669], radius: 0.55, collide: 0}
      - {kind: rod, from: [-1.4142, 0, -1.4142], to: [-4.7669, 0, -9.3556], radius: 0.55, collide: 0}
      - {kind: rod, from: [1.4142, 0, -1.4142], to: [9.3556, 0, -4.7669], radius: 0.55, collide: 0}
      - {kind: rod, from: [-4.5229, 0.0, -10.1586], to: [-5.1167, 0.0, -11.4924], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-3.4363, 0.0, -10.5757], to: [-3.8874, 0.0, -11.9643], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-2.312, 0.0, -10.877], to: [-2.6155, 0.0, -12.3051], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-1.1624, 0.0, -11.0591], to: [-1.315, 0.0, -12.5111], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-0.0, 0.0, -11.12], to: [-0.0, 0.0, -12.58], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [1.1624, 0.0, -11.0591], to: [1.315, 0.0, -12.5111], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [2.312, 0.0, -10.877], to: [2.6155, 0.0, -12.3051], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [3.4363, 0.0, -10.5757], to: [3.8874, 0.0, -11.9643], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [4.5229, 0.0, -10.1586], to: [5.1167, 0.0, -11.4924], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [5.56, 0.0, -9.6302], to: [6.29, 0.0, -10.8946], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [6.5362, 0.0, -8.9963], to: [7.3943, 0.0, -10.1774], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [7.4407, 0.0, -8.2638], to: [8.4177, 0.0, -9.3488], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [8.2638, 0.0, -7.4407], to: [9.3488, 0.0, -8.4177], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [8.9963, 0.0, -6.5362], to: [10.1774, 0.0, -7.3943], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [9.6302, 0.0, -5.56], to: [10.8946, 0.0, -6.29], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [10.1586, 0.0, -4.5229], to: [11.4924, 0.0, -5.1167], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [10.5757, 0.0, -3.4363], to: [11.9643, 0.0, -3.8874], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [10.877, 0.0, -2.312], to: [12.3051, 0.0, -2.6155], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [11.0591, 0.0, -1.1624], to: [12.5111, 0.0, -1.315], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [11.12, 0.0, -0.0], to: [12.58, 0.0, -0.0], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [11.0591, 0.0, 1.1624], to: [12.5111, 0.0, 1.315], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [10.877, 0.0, 2.312], to: [12.3051, 0.0, 2.6155], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [10.5757, 0.0, 3.4363], to: [11.9643, 0.0, 3.8874], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [10.1586, 0.0, 4.5229], to: [11.4924, 0.0, 5.1167], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [9.6302, 0.0, 5.56], to: [10.8946, 0.0, 6.29], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [8.9963, 0.0, 6.5362], to: [10.1774, 0.0, 7.3943], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [8.2638, 0.0, 7.4407], to: [9.3488, 0.0, 8.4177], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [7.4407, 0.0, 8.2638], to: [8.4177, 0.0, 9.3488], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [6.5362, 0.0, 8.9963], to: [7.3943, 0.0, 10.1774], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [5.56, 0.0, 9.6302], to: [6.29, 0.0, 10.8946], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [4.5229, 0.0, 10.1586], to: [5.1167, 0.0, 11.4924], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [3.4363, 0.0, 10.5757], to: [3.8874, 0.0, 11.9643], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [2.312, 0.0, 10.877], to: [2.6155, 0.0, 12.3051], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [1.1624, 0.0, 11.0591], to: [1.315, 0.0, 12.5111], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [0.0, 0.0, 11.12], to: [0.0, 0.0, 12.58], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-1.1624, 0.0, 11.0591], to: [-1.315, 0.0, 12.5111], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-2.312, 0.0, 10.877], to: [-2.6155, 0.0, 12.3051], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-3.4363, 0.0, 10.5757], to: [-3.8874, 0.0, 11.9643], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-4.5229, 0.0, 10.1586], to: [-5.1167, 0.0, 11.4924], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-5.56, 0.0, 9.6302], to: [-6.29, 0.0, 10.8946], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-6.5362, 0.0, 8.9963], to: [-7.3943, 0.0, 10.1774], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-7.4407, 0.0, 8.2638], to: [-8.4177, 0.0, 9.3488], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-8.2638, 0.0, 7.4407], to: [-9.3488, 0.0, 8.4177], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-8.9963, 0.0, 6.5362], to: [-10.1774, 0.0, 7.3943], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-9.6302, 0.0, 5.56], to: [-10.8946, 0.0, 6.29], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-10.1586, 0.0, 4.5229], to: [-11.4924, 0.0, 5.1167], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-10.5757, 0.0, 3.4363], to: [-11.9643, 0.0, 3.8874], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-10.877, 0.0, 2.312], to: [-12.3051, 0.0, 2.6155], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-11.0591, 0.0, 1.1624], to: [-12.5111, 0.0, 1.315], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-11.12, 0.0, 0.0], to: [-12.58, 0.0, 0.0], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-11.0591, 0.0, -1.1624], to: [-12.5111, 0.0, -1.315], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-10.877, 0.0, -2.312], to: [-12.3051, 0.0, -2.6155], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-10.5757, 0.0, -3.4363], to: [-11.9643, 0.0, -3.8874], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-10.1586, 0.0, -4.5229], to: [-11.4924, 0.0, -5.1167], radius: 0.22, capsule: true, collide: 1}
      - {kind: rod, from: [-9.6302, 0.0, -5.56], to: [-10.8946, 0.0, -6.29], radius: 0.22, capsule: true, collide: 1}
      - {kind: band, center: [0, 0], r: [12.85, 14.2], a: [4.2935, 9.9484], y: [-1.45, 1.45], collide: 1}   # the island between the tracks
      - {kind: band, center: [0, 0], r: [12.85, 14.2], a: [4.2935, 9.9484], y: [-3.15, -2.55], collide: 1}   # the front wall
      - {kind: band, center: [0, 0], r: [12.85, 14.2], a: [4.2935, 9.9484], y: [2.55, 3.15], collide: 1}   # the back wall
      - {kind: rod, from: [-5.4096, -1.0, -12.1502], to: [-5.5926, -1.0, -12.5613], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-5.7943, -0.9239, -11.9715], to: [-5.9903, -0.9239, -12.3765], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-6.1157, -0.7071, -11.8105], to: [-6.3227, -0.7071, -12.2101], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-6.3281, -0.3827, -11.6981], to: [-6.5422, -0.3827, -12.0939], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-6.4022, 0.0, -11.6577], to: [-6.6188, 0.0, -12.0521], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-6.3281, 0.3827, -11.6981], to: [-6.5422, 0.3827, -12.0939], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-6.1157, 0.7071, -11.8105], to: [-6.3227, 0.7071, -12.2101], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-5.7943, 0.9239, -11.9715], to: [-5.9903, 0.9239, -12.3765], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-5.4096, 1.0, -12.1502], to: [-5.5926, 1.0, -12.5613], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-5.4096, 0.0, -12.1502], to: [-5.5926, 0.0, -12.5613], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-5.3689, -2.9, -12.0588], to: [-5.6333, -2.9, -12.6526], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-5.8633, -2.8559, -11.8263], to: [-6.1521, -2.8559, -12.4086], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-6.3332, -2.7251, -11.5815], to: [-6.645, -2.7251, -12.1518], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-6.7647, -2.5115, -11.3348], to: [-7.0978, -2.5115, -11.893], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.1465, -2.2215, -11.0981], to: [-7.4984, -2.2215, -11.6446], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.4695, -1.8641, -10.8833], to: [-7.8373, -1.8641, -11.4193], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.7267, -1.45, -10.7022], to: [-8.1072, -1.45, -11.2292], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.9135, -0.9919, -10.5649], to: [-8.3031, -0.9919, -11.0852], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-8.0266, -0.5036, -10.4792], to: [-8.4219, -0.5036, -10.9952], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-8.0645, 0.0, -10.4501], to: [-8.4616, 0.0, -10.9646], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-8.0266, 0.5036, -10.4792], to: [-8.4219, 0.5036, -10.9952], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.9135, 0.9919, -10.5649], to: [-8.3031, 0.9919, -11.0852], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.7267, 1.45, -10.7022], to: [-8.1072, 1.45, -11.2292], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.4695, 1.8641, -10.8833], to: [-7.8373, 1.8641, -11.4193], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-7.1465, 2.2215, -11.0981], to: [-7.4984, 2.2215, -11.6446], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-6.7647, 2.5115, -11.3348], to: [-7.0978, 2.5115, -11.893], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-6.3332, 2.7251, -11.5815], to: [-6.645, 2.7251, -12.1518], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-5.8633, 2.8559, -11.8263], to: [-6.1521, 2.8559, -12.4086], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-5.3689, 2.9, -12.0588], to: [-5.6333, 2.9, -12.6526], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-11.5181, -1.0, -6.65], to: [-11.9078, -1.0, -6.875], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.3002, -0.9239, -7.0139], to: [-11.6826, -0.9239, -7.2512], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.1065, -0.7071, -7.3168], to: [-11.4823, -0.7071, -7.5643], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-10.9725, -0.3827, -7.5162], to: [-11.3438, -0.3827, -7.7705], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-10.9246, 0.0, -7.5857], to: [-11.2943, 0.0, -7.8423], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-10.9725, 0.3827, -7.5162], to: [-11.3438, 0.3827, -7.7705], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.1065, 0.7071, -7.3168], to: [-11.4823, 0.7071, -7.5643], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.3002, 0.9239, -7.0139], to: [-11.6826, 0.9239, -7.2512], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.5181, 1.0, -6.65], to: [-11.9078, 1.0, -6.875], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.5181, 0.0, -6.65], to: [-11.9078, 0.0, -6.875], radius: 0.45, capsule: true, collide: 1}
      - {kind: rod, from: [-11.4315, -2.9, -6.6], to: [-11.9945, -2.9, -6.925], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-11.1486, -2.8559, -7.0674], to: [-11.6976, -2.8559, -7.4154], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.8561, -2.7251, -7.5091], to: [-11.3906, -2.7251, -7.8788], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.5656, -2.5115, -7.9125], to: [-11.0859, -2.5115, -8.3021], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.2903, -2.2215, -8.2674], to: [-10.797, -2.2215, -8.6745], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.0429, -1.8641, -8.5662], to: [-10.5375, -1.8641, -8.988], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.8359, -1.45, -8.8031], to: [-10.3203, -1.45, -9.2366], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.6799, -0.9919, -8.9744], to: [-10.1565, -0.9919, -9.4164], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.5828, -0.5036, -9.078], to: [-10.0547, -0.5036, -9.525], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.5498, 0.0, -9.1127], to: [-10.0201, 0.0, -9.5614], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.5828, 0.5036, -9.078], to: [-10.0547, 0.5036, -9.525], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.6799, 0.9919, -8.9744], to: [-10.1565, 0.9919, -9.4164], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-9.8359, 1.45, -8.8031], to: [-10.3203, 1.45, -9.2366], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.0429, 1.8641, -8.5662], to: [-10.5375, 1.8641, -8.988], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.2903, 2.2215, -8.2674], to: [-10.797, 2.2215, -8.6745], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.5656, 2.5115, -7.9125], to: [-11.0859, 2.5115, -8.3021], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-10.8561, 2.7251, -7.5091], to: [-11.3906, 2.7251, -7.8788], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-11.1486, 2.8559, -7.0674], to: [-11.6976, 2.8559, -7.4154], radius: 0.35, capsule: true, collide: 1}
      - {kind: rod, from: [-11.4315, 2.9, -6.6], to: [-11.9945, 2.9, -6.925], radius: 0.35, capsule: true, collide: 1}
  - id: carriage
    shape: part
    pos: [0, 0, 0]
    density: 2700
    friction: 0.05
    color: "#8f8a80"
    pieces:
      - {kind: rod, from: [-13.374999999999998, -2.0, 0], to: [-13.674999999999999, -2.0, 0], radius: 0.5, capsule: true, collide: 2}   # the follower in the groove
      - {kind: rod, from: [-14.5, -2.0, 0], to: [-21, -2.0, 0], radius: 0.45, collide: 0}   # the carriage's arm, round the shaft
      - {kind: poly, points: [[-22.5, -1.4], [-19.5, -1.4], [-19.5, 1.4], [-22.5, 1.4]], y: [-3.4, -0.6000000000000001], collide: 0}   # its block, sliding in the guide
  - id: pinion
    shape: part
    mount: carriage
    pos: [-12.0, -2.0, 0]
    density: 7800
    color: "#c9a95c"
    pieces:
      - {kind: rod, from: [-12.5, -2.0, 0], to: [-28, -2.0, 0], radius: 0.3, collide: 0, color: "#8f8a80"}   # the pinion's shaft, running in the carriage
      - {kind: rod, from: [-25, -2.0, 0], to: [-26.2, -2.0, 0], radius: 3.2, collide: 0, color: "#8f8a80"}   # its driving pulley
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#cfc6b4"
    pieces:
      - {kind: rod, from: [0, -1.5, 0], to: [0, 9, 0], radius: 0.9, collide: 0, color: "#8f8a80"}   # the wheel's shaft
      - {kind: poly, points: [[-23, -1.4], [-19, -1.4], [-19, -2.0], [-23, -2.0]], y: [-6.5, 2.5], collide: 0}   # the guide, under ...
      - {kind: poly, points: [[-23, 2.0], [-19, 2.0], [-19, 1.4], [-23, 1.4]], y: [-6.5, 2.5], collide: 0}   # ... and over the block
spurs:
  - {id: pg, body: pinion, pos: [0, 0, 0], teeth: 10, module: 0.4, width: 0.9, backlash: 0.1, phase: -0.31416, quat: [0.7071068, 0, 0, 0.7071068], meets_parts: true}
joints:
  - {id: j_w, type: hinge, body: wheel, axis: [0, -1, 0], damping: 0.02, frictionloss: 0.25}   # the wheel; + : anticlockwise as drawn
  - {id: j_y, type: slide, body: carriage, axis: [0, 1, 0], range: [-0.3, 4.3], damping: 0.05}   # the carriage, across from face to face
  - {id: j_p, type: hinge, body: pinion, axis: [1, 0, 0], damping: 0.001}   # the one driven joint: the pinion
contact: {solref: [0.002, 1.0], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_p, kind: velocity, rpm: 60, kv: 0.5, max_torque: 1}
checks:
  - {type: ratio, out: j_w, in: j_p, expect: 0.16667, tol: 0.01, settle_s: 2.0, window_s: 4.0}     # behind the teeth, after the first crossing
  - {type: ratio, out: j_w, in: j_p, expect: -0.16667, tol: 0.01, settle_s: 7.7, window_s: 4.3}   # in front again: back the other way
  - {type: penetration, max: 0.001, settle_s: 0.5}
camera: {target: [-5.0, 0, -7.5], position: [-20.0, -97.0, 6.0], fov: 34}
display:
  output: j_w
  labels: {j_p: "Pinion (driver)", j_w: "Wheel", j_y: "Pinion's carriage, face to face"}

