{
 "id": "joint-actuator",
 "version": "0.1",
 "title": "Test a robot joint actuator",
 "blurb": "A datasheet says what an actuator should do. These tests say what yours does. Nine measurements, in the order you run them, and the bench that runs them at three budgets.",
 "why": "China has a national standard for integrated robot joints, GB/T 43200-2023, in force since April 2024, plus reducer standards (GB/T 35089, GB/T 30819). Outside China there is none: motor standards (IEC 60034) cover only the motor, and most joints ship tested against nothing. This protocol strings together the methods robotics labs publish and the items GB/T 43200 names, so results from different benches can be compared.",
 "rig": [
  {
   "name": "Actuator under test",
   "note": "Runs in torque (current) control."
  },
  {
   "name": "Coupling",
   "note": "Bellows or jaw; takes up misalignment."
  },
  {
   "name": "Torque sensor",
   "note": "Inline rotary for running tests; reaction sensor when the output is locked."
  },
  {
   "name": "Coupling",
   "note": ""
  },
  {
   "name": "Load",
   "note": "A second actuator in speed control (most common, works in all four quadrants), or a powder or hysteresis brake (cheaper heat sink, cannot drive the actuator backwards)."
  }
 ],
 "tests": [
  {
   "id": "electrical",
   "title": "Winding resistance, inductance and back-EMF",
   "tells": "Whether the motor matches its datasheet before anything is assembled around it, and the numbers your driver needs.",
   "how": "Measure phase-to-phase resistance and inductance with an LCR meter. Spin the motor unpowered (a drill works) and read phase voltage on a scope to get the back-EMF constant.",
   "report": [
    "phase_resistance_ohm",
    "phase_inductance_uh",
    "kv_rpm_per_v"
   ],
   "needs": [
    "LCR meter",
    "Oscilloscope",
    "Multimeter"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395"
   ]
  },
  {
   "id": "kt",
   "title": "Torque per amp and saturation",
   "tells": "Real output torque for a given current, and where it stops rising linearly. Usually the first place a joint falls short of its datasheet.",
   "how": "Lock the output to a reaction torque sensor. Step the current from zero to peak in both directions and fit a line; note where the fit breaks.",
   "report": [
    "kt_output_nm_per_a",
    "peak_torque_nm",
    "saturation_current_a"
   ],
   "needs": [
    "Reaction torque sensor",
    "Locking fixture",
    "DC power supply"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395",
    "https://arxiv.org/pdf/2609.19194"
   ]
  },
  {
   "id": "stiffness",
   "title": "Backlash, lost motion and torsional stiffness",
   "tells": "How much the output moves before it carries load, and how far it twists under load. Matters most for strain-wave and cycloidal joints.",
   "how": "Lock the input side. Apply torque to the output in steps (+, 0, −, 0) and read output angle with a high-resolution encoder or a dial indicator on a torque arm. The loop gives backlash (width at zero torque), lost motion and stiffness (slope).",
   "report": [
    "backlash_arcmin",
    "lost_motion_arcmin",
    "stiffness_nm_per_arcmin"
   ],
   "needs": [
    "Torque arm or reaction torque sensor",
    "Dial indicator or output encoder",
    "Locking fixture"
   ],
   "sources": [
    "https://global.harmonicdrive.net/_hd/content/LegacyLit/HKS.pdf",
    "https://www.chinesestandard.net/PDF.aspx/GBT35089-2018"
   ]
  },
  {
   "id": "friction",
   "title": "Friction, breakaway and backdrive torque",
   "tells": "How much torque it takes to start the joint moving from the output side. Low backdrive torque is what makes a leg compliant on impact.",
   "how": "With the actuator unpowered, drive its output slowly with the load and record the torque to start and keep it moving. Repeat at several speeds to get a damping value.",
   "report": [
    "breakaway_torque_nm",
    "backdrive_torque_nm",
    "damping_nm_s_per_rad"
   ],
   "needs": [
    "Load actuator",
    "Inline torque sensor"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395",
    "https://mdpi.com/2076-3417/9/10/2146"
   ]
  },
  {
   "id": "ripple",
   "title": "Torque ripple and cogging",
   "tells": "How smooth the torque is over a revolution. Ripple shows up as vibration and poor force control.",
   "how": "Hold a constant current while the load turns the output just over one revolution very slowly (about 0.01 Hz). Log torque against position; report peak-to-peak and standard deviation.",
   "report": [
    "ripple_pk_pk_nm",
    "ripple_std_nm"
   ],
   "needs": [
    "Load actuator",
    "Inline torque sensor",
    "Data logger"
   ],
   "sources": [
    "https://blog.mjbots.com/2020/08/26/measuring-torque-ripple/",
    "https://github.com/mjbots/moteus/tree/main/utils"
   ]
  },
  {
   "id": "efficiency",
   "title": "Torque-speed curve and efficiency map",
   "tells": "The real operating envelope, and how much input power becomes output work at each point.",
   "how": "Step through a grid of torque and speed points in all four quadrants, holding each long enough to settle. Record DC input power and shaft output power (torque × speed).",
   "report": [
    "torque_speed_curve",
    "efficiency_map",
    "peak_efficiency_pct"
   ],
   "needs": [
    "Load actuator",
    "Inline torque sensor with speed",
    "Power analyzer or logging DC supply",
    "Brake resistor or regenerative supply"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395",
    "https://github.com/Capo01/odrive_based_electric_motor_dynamometer"
   ]
  },
  {
   "id": "thermal",
   "title": "Heating and continuous torque",
   "tells": "How long the joint holds a given torque before the windings hit their limit. Rated torque on most datasheets assumes a heat sink you may not have.",
   "how": "Calibrate winding temperature against resistance once with a thermal camera. Then run power steps and fit a two-stage thermal model to get thermal resistance, time constants and continuous torque.",
   "report": [
    "continuous_torque_nm",
    "time_to_limit_at_peak_s",
    "thermal_resistance_k_per_w"
   ],
   "needs": [
    "Thermal camera",
    "Locking fixture or load",
    "DC power supply"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395"
   ]
  },
  {
   "id": "bandwidth",
   "title": "Torque bandwidth",
   "tells": "How fast the joint can follow a torque command, which bounds how stiff and responsive your controller can be.",
   "how": "Apply current steps and a band-limited random current command with the output locked. Fit a transfer function from command to measured torque; run once without the actuator to remove the bench's own dynamics.",
   "report": [
    "torque_bandwidth_hz"
   ],
   "needs": [
    "Reaction torque sensor",
    "Fast data logger"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395"
   ]
  },
  {
   "id": "endurance",
   "title": "Endurance on a real duty cycle",
   "tells": "Whether backlash, friction and efficiency hold up. Wear shows here first.",
   "how": "Play back torque and speed recorded from your robot (a gait cycle, a pick motion) for 24 to 60 hours, then repeat the backlash, friction and efficiency tests.",
   "report": [
    "hours_run",
    "backlash_change_arcmin",
    "efficiency_change_pct"
   ],
   "needs": [
    "Load actuator",
    "Inline torque sensor"
   ],
   "sources": [
    "https://arxiv.org/pdf/2202.12395",
    "https://arxiv.org/html/2504.17249v1"
   ]
  }
 ],
 "standards": [
  {
   "name": "GB/T 43200-2023",
   "covers": "Performance and test methods for integrated (mechatronic) robot joints: the closest thing to a whole-joint standard. Includes torque and speed ripple, vibration, impact and noise; test supply within ±10% of rated voltage, instruments class 0.5 or better. In force April 1, 2024.",
   "url": "https://www.chinesestandard.net/PDF/English.aspx/GBT43200-2023"
  },
  {
   "name": "IEC 60034-2-1",
   "covers": "Motor losses and efficiency by direct torque measurement. Written for mains machines; partial fit for driver-fed BLDC.",
   "url": "https://standards.iteh.ai/catalog/standards/iec/9aa04680-cc41-4eb9-b358-c6f323e83ec3/iec-60034-2-1-2024"
  },
  {
   "name": "GB/T 35089-2018",
   "covers": "Test methods for robot precision reducers (harmonic, cycloidal, RV): efficiency, transmission accuracy, stiffness, lost motion, starting and backdrive torque, life.",
   "url": "https://www.chinesestandard.net/PDF.aspx/GBT35089-2018"
  },
  {
   "name": "GB/T 30819-2024",
   "covers": "Harmonic reducers for robots, including the stiffness hysteresis curve and no-load starting torque.",
   "url": "https://www.chinesestandard.net/PDF-EN/GBT30819-2024EN-P09P-H7528H-394879.pdf"
  },
  {
   "name": "ISO 9283",
   "covers": "Whole-robot pose accuracy and repeatability, not single joints.",
   "url": "https://robodk.com/doc/en/Robot-Validation-ISO9283.html"
  }
 ],
 "open_source": [
  {
   "name": "mjbots dynamometer and moteus utils",
   "url": "https://blog.mjbots.com/2025/06/03/improved-dynamometer/"
  },
  {
   "name": "ODrive-based motor dynamometer",
   "url": "https://github.com/Capo01/odrive_based_electric_motor_dynamometer"
  },
  {
   "name": "Urs et al., open-source actuator characterization",
   "url": "https://arxiv.org/pdf/2202.12395"
  }
 ],
 "kits": [
  {
   "id": "starter",
   "title": "Starter bench",
   "blurb": "The back-to-back bench most small teams build. A reaction sensor under the load joint's housing reads shaft torque at steady state; a dial indicator on a torque arm reads backlash. Data comes in through an HX711 at roughly 80 samples a second, too slow for bandwidth.",
   "covers": [
    "kt",
    "stiffness",
    "friction",
    "ripple",
    "efficiency",
    "thermal",
    "endurance"
   ],
   "items": [
    {
     "pick_from": "joint-actuators",
     "label": "A second joint as the load",
     "qty": 1,
     "role": "Load",
     "note": "Same model as the one you test is simplest; most teams already have one",
     "url": "https://parts.trymaglev.com/c/actuators/joint-actuators/"
    },
    {
     "pick_from": "drivers",
     "label": "A driver for the load joint",
     "qty": 1,
     "role": "Load control",
     "note": "ODrive or moteus in speed control",
     "url": "https://parts.trymaglev.com/c/motors/drivers/"
    },
    {
     "part": "te-ato-tqs-s03-50nm",
     "name": "ATO Flange-to-Square-Drive Reaction Torque Sensor, 50 N·m (ATO-TQS-S03)",
     "qty": 1,
     "role": "Reaction torque sensor",
     "note": "2 to 200 N·m ranges at the same price; pick one about twice your peak torque",
     "unit_usd": 134.92,
     "price_source": "https://www.ato.com/reaction-torque-sensor-flange-to-square-drive-2-to-200-nm",
     "price_as_of": "2026-10-31",
     "url": "https://parts.trymaglev.com/p/te-ato-tqs-s03-50nm/"
    },
    {
     "part": "te-sparkfun-hx711-sen-13879",
     "name": "SparkFun Load Cell Amplifier HX711 (SEN-13879)",
     "qty": 1,
     "role": "Bridge amplifier",
     "note": "",
     "unit_usd": 4.95,
     "price_source": "https://www.sparkfun.com/sparkfun-load-cell-amplifier-hx711.html",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-sparkfun-hx711-sen-13879/"
    },
    {
     "part": "te-pjrc-teensy-4-1",
     "name": "PJRC Teensy 4.1 (600 MHz Cortex-M7)",
     "qty": 1,
     "role": "Logger",
     "note": "",
     "unit_usd": 31.5,
     "price_source": "https://www.sparkfun.com/teensy-4-1.html",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-pjrc-teensy-4-1/"
    },
    {
     "part": "te-saunders-universal-fixture-plate-m6-14x6",
     "name": "Saunders Universal Aluminum Fixture Tooling Plate, M6, 14\" × 6\"",
     "qty": 1,
     "role": "Base plate",
     "note": "",
     "unit_usd": 179,
     "price_source": "https://saundersmachineworks.com/products/universal-aluminum-fixture-tooling-plate?variant=39379868221542",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-saunders-universal-fixture-plate-m6-14x6/"
    },
    {
     "part": "te-ruland-mbc51-25-20-a",
     "name": "Ruland MBC51-25-20-A Bellows Coupling, 25 mm × 20 mm",
     "qty": 1,
     "role": "Shaft coupling",
     "note": "Check its rating against your peak torque",
     "unit_usd": 168.99,
     "price_source": "https://www.zoro.com/ruland-motioncontrol-coupling-clamp-25mmx20mm-mbc51-25-20-a/i/G3145441/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-ruland-mbc51-25-20-a/"
    },
    {
     "part": "te-riden-rd6024-w",
     "name": "Riden RD6024-W 60 V / 24 A DC Power Supply Module (Wi-Fi)",
     "qty": 1,
     "role": "Bench supply, shows volts and amps",
     "note": "",
     "unit_usd": 165.21,
     "price_source": "https://www.laskakit.cz/en/riden-rd6024-w-diy-laboratorni-zdroj-0-60v--0-24a-wifi/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-riden-rd6024-w/"
    },
    {
     "part": "te-riden-rd-1500-68",
     "name": "Riden RD-1500-68 AC-DC Supply, 68 V / 22.1 A, 1500 W",
     "qty": 1,
     "role": "AC supply for the Riden",
     "note": "",
     "unit_usd": 117.98,
     "price_source": "https://www.laskakit.cz/en/riden-rd-1500-68-modulovy-napajeci-230v-ac-dc-zdroj-68v-22-1a-1500w/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-riden-rd-1500-68/"
    },
    {
     "part": "te-odrive-acc-0006",
     "name": "ODrive ACC-0006 Brake Resistor Set (8 × 2 Ω, 50 W)",
     "qty": 1,
     "role": "Brake resistors",
     "note": "Burn off the power the load joint generates",
     "unit_usd": 19,
     "price_source": "https://shop.odriverobotics.com/products/set-of-8-brake-resistors",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-odrive-acc-0006/"
    },
    {
     "part": "te-mitutoyo-2046a",
     "name": "Mitutoyo 2046A Dial Indicator, 0–10 mm × 0.01 mm",
     "qty": 1,
     "role": "Dial indicator for backlash",
     "note": "",
     "unit_usd": 111.48,
     "price_source": "https://www.itm.com/product/mitutoyo-2046a-series-2-metric-standard-type-dial-indicator",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-mitutoyo-2046a/"
    },
    {
     "part": "te-topdon-tc001",
     "name": "TOPDON TC001 Thermal Camera (USB-C, Android/Windows)",
     "qty": 1,
     "role": "Thermal camera",
     "note": "",
     "unit_usd": 289,
     "price_source": "https://www.topdon.us/products/tc001",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-topdon-tc001/"
    }
   ],
   "total_listed_usd": 1222,
   "lines_on_quote": 0
  },
  {
   "id": "serious",
   "title": "Serious bench",
   "blurb": "Adds an inline rotary torque sensor, a powder brake as a second load, a fast data logger, and the meters for the electrical tests. Covers all nine tests. Take DC input power from the driver's bus-current reading, or add a power analyzer from the lab kit.",
   "covers": [
    "electrical",
    "kt",
    "stiffness",
    "friction",
    "ripple",
    "efficiency",
    "thermal",
    "bandwidth",
    "endurance"
   ],
   "items": [
    {
     "pick_from": "joint-actuators",
     "label": "A second joint as the load",
     "qty": 1,
     "role": "Load",
     "note": "Same model as the one you test is simplest; most teams already have one",
     "url": "https://parts.trymaglev.com/c/actuators/joint-actuators/"
    },
    {
     "pick_from": "drivers",
     "label": "A driver for the load joint",
     "qty": 1,
     "role": "Load control",
     "note": "ODrive or moteus in speed control",
     "url": "https://parts.trymaglev.com/c/motors/drivers/"
    },
    {
     "part": "te-ato-tqs-d03-20nm",
     "name": "ATO Digital Rotary Torque Sensor with LCD, 20 N·m (ATO-TQS-D03 / DYN-200)",
     "qty": 1,
     "role": "Inline rotary torque sensor",
     "note": "10 to 100 N·m ranges at the same price",
     "unit_usd": 939.15,
     "price_source": "https://www.ato.com/rotary-torque-sensor-10000-nm",
     "price_as_of": "2026-10-31",
     "url": "https://parts.trymaglev.com/p/te-ato-tqs-d03-20nm/"
    },
    {
     "part": "te-ato-tqs-s03-50nm",
     "name": "ATO Flange-to-Square-Drive Reaction Torque Sensor, 50 N·m (ATO-TQS-S03)",
     "qty": 1,
     "role": "Reaction torque sensor for locked-output tests",
     "note": "",
     "unit_usd": 134.92,
     "price_source": "https://www.ato.com/reaction-torque-sensor-flange-to-square-drive-2-to-200-nm",
     "price_as_of": "2026-10-31",
     "url": "https://parts.trymaglev.com/p/te-ato-tqs-s03-50nm/"
    },
    {
     "part": "te-ato-pb-050",
     "name": "ATO ATO-PB-050 Single-Shaft Magnetic Particle Brake (50 N·m)",
     "qty": 1,
     "role": "Powder brake, 50 N·m",
     "note": "Holds torque at zero speed; cannot backdrive",
     "unit_usd": 556.77,
     "price_source": "https://www.ato.com/magnetic-particle-brake",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-ato-pb-050/"
    },
    {
     "part": "te-ato-tc-001",
     "name": "ATO-TC-001 Manual Current Controller for Powder/Hysteresis Brakes (0-4 A)",
     "qty": 1,
     "role": "Brake current controller",
     "note": "",
     "unit_usd": 101.98,
     "price_source": "https://www.ato.com/manual-tension-controller-for-magnetic-powder-clutch-brake",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-ato-tc-001/"
    },
    {
     "part": "te-labjack-t7",
     "name": "LabJack T7 Multifunction DAQ (USB / Ethernet)",
     "qty": 1,
     "role": "Data logger",
     "note": "",
     "unit_usd": 520,
     "price_source": "https://labjack.com/products/labjack-t7",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-labjack-t7/"
    },
    {
     "part": "te-mean-well-rsp-2000-48",
     "name": "Mean Well RSP-2000-48 48 V / 42 A 2 kW Power Supply",
     "qty": 1,
     "role": "48 V, 2 kW bus supply",
     "note": "",
     "unit_usd": 514.9,
     "price_source": "https://bravoelectro.com/rsp-2000-48.html",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-mean-well-rsp-2000-48/"
    },
    {
     "part": "te-odrive-acc-0006",
     "name": "ODrive ACC-0006 Brake Resistor Set (8 × 2 Ω, 50 W)",
     "qty": 1,
     "role": "Brake resistors",
     "note": "",
     "unit_usd": 19,
     "price_source": "https://shop.odriverobotics.com/products/set-of-8-brake-resistors",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-odrive-acc-0006/"
    },
    {
     "part": "te-saunders-universal-fixture-plate-m6-14x6",
     "name": "Saunders Universal Aluminum Fixture Tooling Plate, M6, 14\" × 6\"",
     "qty": 1,
     "role": "Base plate",
     "note": "",
     "unit_usd": 179,
     "price_source": "https://saundersmachineworks.com/products/universal-aluminum-fixture-tooling-plate?variant=39379868221542",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-saunders-universal-fixture-plate-m6-14x6/"
    },
    {
     "part": "te-ruland-mbc51-25-20-a",
     "name": "Ruland MBC51-25-20-A Bellows Coupling, 25 mm × 20 mm",
     "qty": 2,
     "role": "Shaft couplings",
     "note": "Check rating against your peak torque",
     "unit_usd": 168.99,
     "price_source": "https://www.zoro.com/ruland-motioncontrol-coupling-clamp-25mmx20mm-mbc51-25-20-a/i/G3145441/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-ruland-mbc51-25-20-a/"
    },
    {
     "part": "te-rigol-dho804",
     "name": "Rigol DHO804 12-bit Oscilloscope, 4 ch, 70 MHz",
     "qty": 1,
     "role": "Oscilloscope for back-EMF",
     "note": "",
     "unit_usd": 459,
     "price_source": "https://www.rigolna.com/products/digital-oscilloscopes/dho800/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-rigol-dho804/"
    },
    {
     "part": "te-tonghui-th2830",
     "name": "Tonghui TH2830 Benchtop LCR Meter",
     "qty": 1,
     "role": "LCR meter for winding inductance",
     "note": "Price source is weak; confirm before buying",
     "unit_usd": 898,
     "price_source": "https://specpicks.com/product/B07H6F3F9Z",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-tonghui-th2830/"
    },
    {
     "part": "te-mitutoyo-2046a",
     "name": "Mitutoyo 2046A Dial Indicator, 0–10 mm × 0.01 mm",
     "qty": 1,
     "role": "Dial indicator for backlash",
     "note": "",
     "unit_usd": 111.48,
     "price_source": "https://www.itm.com/product/mitutoyo-2046a-series-2-metric-standard-type-dial-indicator",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-mitutoyo-2046a/"
    },
    {
     "part": "te-topdon-tc001",
     "name": "TOPDON TC001 Thermal Camera (USB-C, Android/Windows)",
     "qty": 1,
     "role": "Thermal camera",
     "note": "",
     "unit_usd": 289,
     "price_source": "https://www.topdon.us/products/tc001",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-topdon-tc001/"
    }
   ],
   "total_listed_usd": 5061,
   "lines_on_quote": 0
  },
  {
   "id": "lab",
   "title": "Lab bench",
   "blurb": "Instrument-grade torque and power measurement and a regenerative supply that takes back the load's energy. Most of it is sold on quote. If you would rather not build at all, complete joint test systems are under Complete Test Benches below.",
   "covers": [
    "electrical",
    "kt",
    "stiffness",
    "friction",
    "ripple",
    "efficiency",
    "thermal",
    "bandwidth",
    "endurance"
   ],
   "items": [
    {
     "pick_from": "joint-actuators",
     "label": "A second joint as the load",
     "qty": 1,
     "role": "Load",
     "note": "Same model as the one you test is simplest; most teams already have one",
     "url": "https://parts.trymaglev.com/c/actuators/joint-actuators/"
    },
    {
     "pick_from": "drivers",
     "label": "A driver for the load joint",
     "qty": 1,
     "role": "Load control",
     "note": "ODrive or moteus in speed control",
     "url": "https://parts.trymaglev.com/c/motors/drivers/"
    },
    {
     "part": "te-interface-t8-200-a1a",
     "name": "Interface T8 Shaft-Style Rotary Torque Transducer, 200 N·m (T8-200-A1A)",
     "qty": 1,
     "role": "Inline rotary torque sensor, 200 N·m",
     "note": "Or a FUTEK TRS605 / TRS705 with an angle encoder",
     "unit_usd": 2590,
     "price_source": "https://www.interfaceforce.com/products/torque-transducers/t8-general-purpose-shaft-style-rotary-torque-transducer/",
     "price_as_of": "2026-10-31",
     "url": "https://parts.trymaglev.com/p/te-interface-t8-200-a1a/"
    },
    {
     "part": "te-futek-tff400-qsh02384",
     "name": "FUTEK TFF400 Flange Reaction Torque Sensor, 1000 in-oz / ~7 N·m (QSH02384)",
     "qty": 1,
     "role": "Reaction torque sensor",
     "note": "",
     "unit_usd": null,
     "price_source": null,
     "price_as_of": null,
     "url": "https://parts.trymaglev.com/p/te-futek-tff400-qsh02384/"
    },
    {
     "part": "te-yokogawa-wt310e",
     "name": "Yokogawa WT310E Digital Power Meter (single phase, 20 A)",
     "qty": 1,
     "role": "Power analyzer",
     "note": "",
     "unit_usd": null,
     "price_source": null,
     "price_as_of": null,
     "url": "https://parts.trymaglev.com/p/te-yokogawa-wt310e/"
    },
    {
     "part": "te-itech-it6005c-80-150",
     "name": "ITECH IT6005C-80-150 Regenerative Bidirectional DC Supply, 80 V / 150 A, 5 kW",
     "qty": 1,
     "role": "Regenerative DC supply",
     "note": "",
     "unit_usd": null,
     "price_source": null,
     "price_as_of": null,
     "url": "https://parts.trymaglev.com/p/te-itech-it6005c-80-150/"
    },
    {
     "part": "te-labjack-t7-pro",
     "name": "LabJack T7-Pro DAQ (USB / Ethernet / Wi-Fi, 24-bit aux ADC)",
     "qty": 1,
     "role": "Data logger, 24-bit",
     "note": "",
     "unit_usd": 790,
     "price_source": "https://labjack.com/products/labjack-t7-pro",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-labjack-t7-pro/"
    },
    {
     "part": "te-saunders-universal-fixture-plate-m6-14x6",
     "name": "Saunders Universal Aluminum Fixture Tooling Plate, M6, 14\" × 6\"",
     "qty": 1,
     "role": "Base plate",
     "note": "",
     "unit_usd": 179,
     "price_source": "https://saundersmachineworks.com/products/universal-aluminum-fixture-tooling-plate?variant=39379868221542",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-saunders-universal-fixture-plate-m6-14x6/"
    },
    {
     "part": "te-ruland-mbc51-25-20-a",
     "name": "Ruland MBC51-25-20-A Bellows Coupling, 25 mm × 20 mm",
     "qty": 2,
     "role": "Shaft couplings",
     "note": "",
     "unit_usd": 168.99,
     "price_source": "https://www.zoro.com/ruland-motioncontrol-coupling-clamp-25mmx20mm-mbc51-25-20-a/i/G3145441/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-ruland-mbc51-25-20-a/"
    },
    {
     "part": "te-rigol-dho804",
     "name": "Rigol DHO804 12-bit Oscilloscope, 4 ch, 70 MHz",
     "qty": 1,
     "role": "Oscilloscope",
     "note": "",
     "unit_usd": 459,
     "price_source": "https://www.rigolna.com/products/digital-oscilloscopes/dho800/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-rigol-dho804/"
    },
    {
     "part": "te-tonghui-th2830",
     "name": "Tonghui TH2830 Benchtop LCR Meter",
     "qty": 1,
     "role": "LCR meter",
     "note": "Price source is weak; confirm before buying",
     "unit_usd": 898,
     "price_source": "https://specpicks.com/product/B07H6F3F9Z",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-tonghui-th2830/"
    },
    {
     "part": "te-mitutoyo-543-390b",
     "name": "Mitutoyo 543-390B ABSOLUTE Digimatic Indicator ID-C, 12.7 mm × 0.001 mm",
     "qty": 1,
     "role": "Digital indicator, 0.001 mm",
     "note": "",
     "unit_usd": 420.97,
     "price_source": "https://machine-dro.co.uk/products/mitutoyo-digital-indicator-id-c-12-7mm-0-001mm-flat-back-543-390b",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-mitutoyo-543-390b/"
    },
    {
     "part": "te-flir-one-edge-pro",
     "name": "FLIR ONE Edge Pro Wireless Thermal Camera",
     "qty": 1,
     "role": "Thermal camera",
     "note": "",
     "unit_usd": 529,
     "price_source": "https://www.flir.com/products/flir-one-edge-pro/",
     "price_as_of": "2026-10-30",
     "url": "https://parts.trymaglev.com/p/te-flir-one-edge-pro/"
    }
   ],
   "total_listed_usd": 6204,
   "lines_on_quote": 3
  }
 ],
 "url": "https://parts.trymaglev.com/test/"
}