{
  "projectName": "Auth-Governed Swarm Testbed",
  "approach": "## Overview\n\nThe \"Auth-Governed Swarm Testbed\" project develops autonomous robots designed for contested environments, featuring hierarchical authority control (HMAA), sensor spoofing resilience, and programmable authority degradation. Key subsystems include a robust power delivery network, dual-MCU compute for redundancy and control, comprehensive sensing for navigation and threat detection, and secure communication/authentication modules.\n\n## Assumptions\n\n*   **Power Source:** Robot_battery_3s_lipo provides primary 11.1V power. Central_power_supply is external and only for central RF.\n*   **Environment:** Operation in an indoor, controlled testbed with potential for RF interference and physical obstacles.\n*   **Skill Level:** Familiarity with Raspberry Pi, ESP32, basic electronics, 3D printing, and mechanical assembly.\n*   **Software:** Firmware and OS images for RPi5 and ESP32 are pre-developed or readily available for flashing.\n*   **Tools:** Standard electronics tools (soldering iron, multimeter), 3D printer, basic mechanical tools.\n\n## Action Items\n\n- [ ] Print all 3D-printed mechanical components (esp32_mount, battery_holder, camera_mount, rf_antenna_mount, cable_clip_guide, rpi5_mount, lidar_mount).\n- [ ] Assemble the robot chassis: Attach robot_drive_wheel and robot_caster_wheel to robot_base_plate with dc_motor_mounts.\n- [ ] Mount robot_left_motor_high_torque and robot_right_motor_high_torque to dc_motor_mounts.\n- [ ] Install robot_rpi5 and robot_esp32 onto their respective mounts and secure to robot_base_plate or robot_top_plate using m3_standoffs and m3_bolts.\n- [ ] Integrate power delivery: Wire robot_battery_3s_lipo through robot_estop_button to robot_motor_power_regulator and robot_ubec_power_converter_high_capacity.\n- [ ] Connect robot_motor_power_regulator to robot_motor_driver_high_power, then connect the motor driver to robot_left_motor_high_torque and robot_right_motor_high_torque.\n- [ ] Connect robot_ubec_power_converter_high_capacity to robot_rpi5, robot_esp32, robot_imu_upgrade, and robot_camera_upgrade.\n- [ ] Wire all sensors (robot_lidar, robot_wheel_encoder, robot_tof_sensor, robot_imu_upgrade, robot_camera_upgrade) to robot_rpi5 or robot_esp32 according to specifications.\n- [ ] Connect communication modules: robot_lora_radio_900mhz to robot_rpi5 (SPI, GPIO) and robot_esp32 (SPI).\n- [ ] Implement secure elements and logging: Connect robot_secure_element and robot_logging_storage to robot_rpi5 (I2C/SPI respectively).\n- [ ] Integrate watchdog timer: Connect robot_watchdog to robot_rpi5 (RESET→RUN) and robot_esp32 (GPIO→WDI).\n- [ ] Perform initial power-on and connectivity tests for all modules.\n\n## Assembly Key Points\n\n*   **robot_base_plate * robot_drive_wheel, robot_caster_wheel:** Ensure smooth rotation and proper alignment for drive mechanisms.\n*   **robot_rpi5 * rpi5_mount:** Securely attach to prevent vibration-induced disconnections.\n*   **robot_esp32 * esp32_mount:** Position to allow easy access to pins for wiring.\n*   **robot_battery_3s_lipo * battery_holder:** Snug fit to prevent battery movement, consider vibration dampening.\n*   **robot_estop_button * Power Regulators:** Critical safety interlock; ensure correct NC wiring to cut power to motors and primary logic.\n*   **robot_motor_driver_high_power * robot_left/right_motor_high_torque:** Verify correct motor polarity for intended direction.\n*   **robot_ubec_power_converter_high_capacity * various electrical components:** Verify 5V output stability and capacity for all connected devices.\n*   **robot_rpi5 * robot_lidar:** USB connection for high data rate; ensure cable routing avoids mechanical interference.\n*   **robot_rpi5 * robot_tof_sensor, robot_imu_upgrade, robot_secure_element:** I2C bus wiring requires correct SDA/SCL connections and proper pull-up resistors (if not integrated).\n*   **robot_rpi5 * robot_camera_upgrade:** CSI connector is delicate; ensure careful insertion.\n*   **robot_rpi5 * robot_logging_storage, robot_lora_radio_900mhz:** SPI bus connections (MOSI, MISO, SCK, CS) need correct pin assignments.\n*   **robot_esp32 * robot_wheel_encoder:** GPIO for interrupt-driven counting; verify appropriate pull-ups or debouncing if needed.\n*   **robot_esp32 * robot_motor_driver_high_power:** PWM signals for motor control; ensure correct frequency and duty cycle range.\n*   **robot_esp32 * robot_lora_radio_900mhz:** SPI for radio communication.\n*   **robot_watchdog * robot_rpi5, robot_esp32:** WDI (Watchdog Input) from ESP32, RESET to RPi5 RUN pin; critical for system robustness.\n*   **robot_watchdog * robot_motor_driver_high_power:** DRV/DONE to ENABLE ensures motors are disabled on watchdog trigger.\n*   **Cable Management:** Utilize cable_clip_guide to secure and organize wiring, preventing entanglement or damage.",
  "nodes": [
    {
      "id": "robot_esp32",
      "name": "Robot MCU (ESP32)",
      "type": "mcu",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 8,
      "purchaseUrl": "https://www.amazon.com/s?k=esp32+devkit+board",
      "description": "Local controller for robot sensors and actuators, handles local autonomy.",
      "dimensions": "55x28x12mm",
      "pins": [
        "GPIO2",
        "GPIO4",
        "GPIO5",
        "GPIO12",
        "GPIO13",
        "GPIO14",
        "GPIO15",
        "GPIO16",
        "GPIO17",
        "GPIO18",
        "GPIO19",
        "GPIO21",
        "GPIO22",
        "GPIO23",
        "3V3",
        "5V",
        "GND",
        "TX",
        "RX"
      ],
      "productName": "ESP32-DevKitC-32D",
      "amazonUrl": "https://www.amazon.com/s?k=ESP32-DevKitC-32D&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/xiIbA2ZGDyY3Y981KNnsBVIQYZlEycKSjLzKdNQNmi8/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9tLm1l/ZGlhLWFtYXpvbi5j/b20vaW1hZ2VzL0kv/ODExNmhKZ0NIRVMu/anBn"
    },
    {
      "id": "robot_rpi5",
      "name": "Robot Main Compute (RPi 5)",
      "type": "mcu",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 80,
      "purchaseUrl": "https://www.raspberrypi.com/products/raspberry-pi-5/",
      "productName": "Raspberry Pi 5 8GB",
      "amazonUrl": "https://www.amazon.com/s?k=Raspberry%20Pi%205%208GB&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/4Mz6zS9HLomGVxSZc-cAn6e_TbjCuybhfzUPwbqPBOY/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9pLmV4/dHJlbWV0ZWNoLmNv/bS9pbWFnZXJ5L2Nv/bnRlbnQtdHlwZXMv/MDI1OUFxcmhZbmlh/cEpmRTE0YUFXVFQv/aGVyby1pbWFnZS5m/aXRfbGltLnYxNzM2/MTgyMDM1LmpwZw"
    },
    {
      "id": "robot_lidar",
      "name": "Robot LiDAR Sensor",
      "type": "sensor",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 99,
      "purchaseUrl": "https://www.slamtec.com/en/Lidar/A1",
      "productName": "Slamtec RPLIDAR A1M8",
      "amazonUrl": "https://www.amazon.com/s?k=Slamtec%20RPLIDAR%20A1M8&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/f1_GbX5j69G3lpldvgBapB77LP46zSBeHhkDiTNDoYY/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9pbWFn/ZS5tYWRlLWluLWNo/aW5hLmNvbS8xNTVm/MGowMGJnQW9ObkdN/d3d1bC9TbGFtdGVj/LVJwbGlkYXItQXZv/aWRzLU9ic3RhY2xl/cy1TbGFtLU5hdmln/YXRpb24tTGlkYXIt/QTFtOC1IaWdoLVNw/ZWVkLVNjYW5uZXIt/S2l0LXdpdGgtMTJt/LVJhbmdpbmctZm9y/LVJvcy1Sb2JvdGlj/cy53ZWJw"
    },
    {
      "id": "robot_wheel_encoder",
      "name": "Robot Wheel Encoder",
      "type": "sensor",
      "category": "electrical",
      "quantity": 2,
      "estimatedCost": 7.5,
      "purchaseUrl": "https://www.pololu.com/product/4760",
      "productName": "Magnetic Encoder Pair Kit for Micro Metal Gearmotors, 12 CPR, 2.7-18V",
      "amazonUrl": "https://www.amazon.com/s?k=Magnetic%20Encoder%20Pair%20Kit%20for%20Micro%20Metal%20Gearmotors%2C%2012%20CPR%2C%202.7-18V&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/iCg3by_dof2H2CyggOwXLvu_XhB-Y_98DzUGM0xKLhE/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly93d3cu/ZGlyZW5jLm5ldC9t/YW55ZXRpay1lbmNv/ZGVyLXRha2ltaS1w/b2xvbHUtMzA4MS1l/bi1yb2JvdGlrLXRl/a2VybGVrLXBvbG9s/dS0xNjcwMS01OS1C/LmpwZw"
    },
    {
      "id": "robot_tof_sensor",
      "name": "Robot ToF Ranging Sensor",
      "type": "sensor",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 12.95,
      "purchaseUrl": "https://www.adafruit.com/product/3967",
      "description": "VL53L1X Time of Flight sensor for close-range obstacle detection and complementing the LiDAR sensor.",
      "pins": [
        "VIN",
        "GND",
        "SDA",
        "SCL"
      ],
      "productName": "Adafruit VL53L1X Time of Flight Distance Sensor",
      "amazonUrl": "https://www.amazon.com/s?k=Adafruit%20VL53L1X%20Time%20of%20Flight%20Distance%20Sensor&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/F29otHczx6_UeDVdRzY3f-nyZXizO2ibT8c8nwyjjUo/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9jZG4t/c2hvcC5hZGFmcnVp/dC5jb20vOTcweDcy/OC8zMzE3LTE1Lmpw/Zw"
    },
    {
      "id": "robot_watchdog",
      "name": "Robot Watchdog Timer",
      "type": "module",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 7.5,
      "purchaseUrl": "https://www.sparkfun.com/products/14959",
      "description": "Hardware watchdog timer to ensure system stability and trigger recovery actions if the main compute hangs.",
      "pins": [
        "VCC",
        "GND",
        "WDI",
        "RESET"
      ],
      "productName": "SparkFun TPL5110 Nano Power Timer",
      "amazonUrl": "https://www.amazon.com/s?k=SparkFun%20TPL5110%20Nano%20Power%20Timer&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/LRIgdZbpcuWEWoN3giJg2TKJ6iviEpBOY5WsWGpNzLg/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly93d3cu/c3BhcmtmdW4uY29t/L21lZGlhL2NhdGFs/b2cvcHJvZHVjdC9j/YWNoZS9hNzkzZjEz/ZmQzZDY3OGNlYTEz/ZDI4MjA2ODk1YmEw/Yy8xLzUvMTUzNTMt/U3BhcmtGdW5fTmFu/b19Qb3dlcl9UaW1l/cl8tX1RQTDUxMTAt/MDEuanBn"
    },
    {
      "id": "robot_estop_button",
      "name": "Robot Emergency Stop Button",
      "type": "actuator",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 5.95,
      "purchaseUrl": "https://www.adafruit.com/product/1256",
      "description": "A physical emergency stop button to immediately cut power to the motors for safety during testing.",
      "pins": [
        "NC1",
        "NC2"
      ],
      "productName": "Mushroom Pushbutton",
      "amazonUrl": "https://www.amazon.com/s?k=Mushroom%20Pushbutton&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/kRUbNURogNTvgpolJ371k10jvVt-pJlIw1zdAXM2Yak/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9tLm1l/ZGlhLWFtYXpvbi5j/b20vaW1hZ2VzL0kv/NjFwUStidUZTdUwu/anBn"
    },
    {
      "id": "robot_logging_storage",
      "name": "Robot Logging Storage",
      "type": "module",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 8.95,
      "purchaseUrl": "https://www.adafruit.com/product/254",
      "description": "A dedicated microSD card module for logging sensor data, trust outputs, and system events for post-mission analysis.",
      "pins": [
        "VCC",
        "GND",
        "MISO",
        "MOSI",
        "SCK",
        "CS"
      ],
      "productName": "Adafruit MicroSD card breakout board+",
      "amazonUrl": "https://www.amazon.com/s?k=Adafruit%20MicroSD%20card%20breakout%20board%2B&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/vJhn9x1h5tspeVEHNY00QINk_03E0DMnqHGsOJZiZaM/rs:fit:0:180:1:0/g:ce/aHR0cHM6Ly9jZG4x/MS5iaWdjb21tZXJj/ZS5jb20vcy0yZmJ5/Zm5tOGV2L2ltYWdl/cy9zdGVuY2lsLzEw/MHgxMDAvcHJvZHVj/dHMvMTA4NS8zODY3/Lzgxa0J4TzdaUndM/Ll9BQ19TTDE1MDBf/X180ODM5NC4xNjAx/OTI2OTM5X183MjI0/Ni4xNjAxOTI3MjU1/LmpwZz9jPTI"
    },
    {
      "id": "robot_secure_element",
      "name": "Robot Secure Element",
      "type": "module",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 15,
      "purchaseUrl": "https://www.microchip.com/en-us/product/ATECC608B",
      "description": "Cryptographic co-processor for secure key storage and cryptographic operations.",
      "productName": "ATECC608B TrustFLEX",
      "amazonUrl": "https://www.amazon.com/s?k=ATECC608B%20TrustFLEX&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/j2h9SRO2sxKV6-Vg0_sHrESQTys529voNKJ9wcDkBzo/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9zaG9w/Lm01c3RhY2suY29t/L2Nkbi9zaG9wL3By/b2R1Y3RzLzFfZjA0/OTBiOWMtMjliMy00/MTA0LTgyNzUtZjY5/ZTFjNzk0MjRiXzEy/MDB4MTIwMC5qcGc_/dj0xNjI3ODYzOTIz"
    },
    {
      "id": "central_power_supply",
      "name": "Central Power Supply",
      "type": "power",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 45,
      "purchaseUrl": "https://www.digikey.com/en/products/detail/mean-well-usa-inc/LRS-150-12/7705030",
      "description": "Ground station 12V DC power supply for running experiments and charging robots.",
      "productName": "Mean Well LRS-150-12",
      "amazonUrl": "https://www.amazon.com/s?k=Mean%20Well%20LRS-150-12&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/7ph1adFj70lmNS4HFewYOuV8Rw8gTD_MMv6P9hKqfb4/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly90aGVw/aWh1dC5jb20vY2Ru/L3Nob3AvcHJvZHVj/dHMvdWstdXNiLWMt/cmFzcGJlcnJ5LXBp/LTQtcG93ZXItc3Vw/cGx5LTV2LTNhLXRo/ZS1waS1odXQtMTAz/OTk3LTI4MjEzOTM3/MDc4NDY3LmpwZz92/PTE2NDYxMTA5ODIm/d2lkdGg9MTgwMA"
    },
    {
      "id": "central_rf_transceiver",
      "name": "Central RF Transceiver",
      "type": "module",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 39.95,
      "purchaseUrl": "https://www.adafruit.com/product/3231",
      "description": "Ground station 900MHz RF transceiver for communication with the robot swarm, used for RF heartbeat monitoring and SATA comms trust input.",
      "productName": "Adafruit RFM95W LoRa Radio Transceiver Breakout",
      "amazonUrl": "https://www.amazon.com/s?k=Adafruit%20RFM95W%20LoRa%20Radio%20Transceiver%20Breakout&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/4NeCeXfm_w3F5yWJmtCVGRjT8v9jIS0-PjVW90cmInI/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly93d3cu/cm9ib3RpY3Mub3Jn/LnphL2ltYWdlL2Nh/Y2hlL3dwL2dqL2Fk/YWZydWl0L0FGMzA3/Mi8zMDcyLTAwLTY1/MHgzNTAud2VicA"
    },
    {
      "id": "robot_base_plate",
      "name": "Robot Base Plate",
      "type": "structural",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 7.5,
      "purchaseUrl": "N/A - Custom part",
      "description": "The main lower chassis plate for mounting motors, wheels, and electronics.",
      "material": "Acrylic or PETG",
      "amazonUrl": "https://www.amazon.com/s?k=Robot%20Base%20Plate&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "robot_top_plate",
      "name": "Robot Top Plate",
      "type": "structural",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 6.5,
      "purchaseUrl": "N/A - Custom part",
      "description": "The upper chassis plate for mounting sensors and the main computer.",
      "material": "Acrylic or PETG",
      "amazonUrl": "https://www.amazon.com/s?k=Robot%20Top%20Plate&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "robot_drive_wheel",
      "name": "Robot Drive Wheel",
      "type": "mechanism",
      "category": "mechanical",
      "quantity": 2,
      "estimatedCost": 3,
      "purchaseUrl": "https://www.pololu.com/product/1420",
      "productName": "Pololu Wheel 60x8mm Pair",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%20Wheel%2060x8mm%20Pair&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "robot_caster_wheel",
      "name": "Robot Castor Wheel",
      "type": "mechanism",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 2.95,
      "purchaseUrl": "https://www.pololu.com/product/950",
      "productName": "Pololu Ball Caster with 1/2\" Plastic Ball",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%20Ball%20Caster%20with%201%2F2%22%20Plastic%20Ball&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "dc_motor_mount",
      "name": "DC Motor Mount Bracket",
      "type": "structural",
      "category": "mechanical",
      "quantity": 2,
      "estimatedCost": 1.5,
      "purchaseUrl": "https://www.pololu.com/product/1089",
      "productName": "Pololu Stamped Aluminum L-Bracket for 25D mm Gearmotors",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%20Stamped%20Aluminum%20L-Bracket%20for%2025D%20mm%20Gearmotors&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "esp32_mount",
      "name": "ESP32 Board Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 0.5,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PLA",
      "printSettings": "0.2mm layer height, 20% infill",
      "amazonUrl": "https://www.amazon.com/s?k=ESP32%20Board%20Mount&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "battery_holder",
      "name": "Battery Holder",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 0.75,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PETG",
      "printSettings": "0.2mm layer height, 30% infill",
      "amazonUrl": "https://www.amazon.com/s?k=Battery%20Holder&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "camera_mount",
      "name": "Camera Module Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 0.4,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PLA",
      "printSettings": "0.2mm layer height, 20% infill",
      "amazonUrl": "https://www.amazon.com/s?k=Camera%20Module%20Mount&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "rf_antenna_mount",
      "name": "RF Antenna Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 0.3,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PLA",
      "printSettings": "0.2mm layer height, 20% infill",
      "amazonUrl": "https://www.amazon.com/s?k=RF%20Antenna%20Mount&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "cable_clip_guide",
      "name": "Cable Clip/Guide",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 4,
      "estimatedCost": 0.1,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PLA",
      "printSettings": "0.2mm layer height, 20% infill",
      "amazonUrl": "https://www.amazon.com/s?k=Cable%20Clip%2FGuide&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "rpi5_mount",
      "name": "Raspberry Pi 5 Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 0.6,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PETG",
      "printSettings": "0.2mm layer height, 25% infill",
      "amazonUrl": "https://www.amazon.com/s?k=Raspberry%20Pi%205%20Mount&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "lidar_mount",
      "name": "LiDAR Sensor Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "estimatedCost": 0.55,
      "purchaseUrl": "N/A - 3D Printed",
      "material": "PLA",
      "printSettings": "0.2mm layer height, 20% infill",
      "amazonUrl": "https://www.amazon.com/s?k=LiDAR%20Sensor%20Mount&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "m3_standoff_6mm",
      "name": "M3 Brass Standoff 6mm",
      "type": "misc",
      "category": "mechanical",
      "quantity": 8,
      "estimatedCost": 0.1,
      "purchaseUrl": "https://www.mcmaster.com/91780A121/",
      "productName": "M3 x 0.5 mm Thread, 6 mm Long, Male-Female Hex Standoff",
      "amazonUrl": "https://www.amazon.com/s?k=M3%20x%200.5%20mm%20Thread%2C%206%20mm%20Long%2C%20Male-Female%20Hex%20Standoff&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "m3_standoff_20mm",
      "name": "M3 Brass Standoff 20mm",
      "type": "misc",
      "category": "mechanical",
      "quantity": 4,
      "estimatedCost": 0.15,
      "purchaseUrl": "https://www.mcmaster.com/91780A141/",
      "productName": "M3 x 0.5 mm Thread, 20 mm Long, Male-Female Hex Standoff",
      "amazonUrl": "https://www.amazon.com/s?k=M3%20x%200.5%20mm%20Thread%2C%2020%20mm%20Long%2C%20Male-Female%20Hex%20Standoff&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "m3_bolt_8mm",
      "name": "M3 Bolt 8mm",
      "type": "misc",
      "category": "mechanical",
      "quantity": 20,
      "estimatedCost": 0.05,
      "purchaseUrl": "https://www.mcmaster.com/91292A113/",
      "productName": "M3 x 0.5 mm Thread, 8 mm Long, Socket Head Cap Screw",
      "amazonUrl": "https://www.amazon.com/s?k=M3%20x%200.5%20mm%20Thread%2C%208%20mm%20Long%2C%20Socket%20Head%20Cap%20Screw&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "m3_bolt_12mm",
      "name": "M3 Bolt 12mm",
      "type": "misc",
      "category": "mechanical",
      "quantity": 10,
      "estimatedCost": 0.06,
      "purchaseUrl": "https://www.mcmaster.com/91292A116/",
      "productName": "M3 x 0.5 mm Thread, 12 mm Long, Socket Head Cap Screw",
      "amazonUrl": "https://www.amazon.com/s?k=M3%20x%200.5%20mm%20Thread%2C%2012%20mm%20Long%2C%20Socket%20Head%20Cap%20Screw&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "m3_nut",
      "name": "M3 Nut",
      "type": "misc",
      "category": "mechanical",
      "quantity": 20,
      "estimatedCost": 0.03,
      "purchaseUrl": "https://www.mcmaster.com/90592A085/",
      "productName": "M3 x 0.5 mm Thread Hex Nut",
      "amazonUrl": "https://www.amazon.com/s?k=M3%20x%200.5%20mm%20Thread%20Hex%20Nut&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl"
    },
    {
      "id": "robot_battery_3s_lipo",
      "name": "Robot LiPo Battery (High Capacity)",
      "type": "power",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 35,
      "purchaseUrl": "https://www.amazon.com/example_3s_5000mah_lipo",
      "description": "Upgraded 3S 5000mAh LiPo battery to provide sufficient runtime for extended experiment campaigns.",
      "productName": "3S 11.1V 5000mAh LiPo Battery",
      "amazonUrl": "https://www.amazon.com/s?k=3S%2011.1V%205000mAh%20LiPo%20Battery&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/mbUgeeEzpUH9iFnAd2QodcBYqHkcfeR00rmTWHxzMY0/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9leHRy/ZW16YnNzLmNvbS9j/ZG4vc2hvcC9maWxl/cy9odHRwc3RyYXh4/YXMuY29tc2l0ZXNk/ZWZhdWx0ZmlsZXNp/bWFnZXNwcm9kdWN0/czI4MzJ4XzQ4MHg0/ODAuanBnP3Y9MTcz/MjMxMzg5OA"
    },
    {
      "id": "robot_motor_power_regulator",
      "name": "Robot Motor Power Regulator",
      "type": "power",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 7.95,
      "purchaseUrl": "https://www.pololu.com/product/2859",
      "description": "A 9V step-down voltage regulator (buck converter) to provide a safe and stable voltage to the motor driver from the 3S LiPo battery, preventing over-voltage damage.",
      "productName": "Pololu 9V, 2.3A Step-Down Voltage Regulator D24V22F9",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%209V%2C%202.3A%20Step-Down%20Voltage%20Regulator%20D24V22F9&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/mb-Ol43T8FtH09tV5jMQfTcuWRmjSrzduJSGCJEzIts/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9jZG4u/Ym9kYW5pdXMuY29t/L21lZGlhLzEvZjY3/MTYxMTk0X3BvbG9s/dS05di0yLjNhLXN0/ZXAtZG93bi12b2x0/YWdlLXJlZ3VsYXRv/cl94LmpwZw"
    },
    {
      "id": "robot_lora_radio_900mhz",
      "name": "Robot LoRa Radio Module (900MHz)",
      "type": "module",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 19.95,
      "purchaseUrl": "https://www.adafruit.com/product/3072",
      "description": "Adafruit RFM95W LoRa Radio Transceiver Breakout for 900 MHz ISM band, providing long-range spread spectrum communication.",
      "productName": "Adafruit RFM95W LoRa Radio Transceiver Breakout - 900MHz",
      "amazonUrl": "https://www.amazon.com/s?k=Adafruit%20RFM95W%20LoRa%20Radio%20Transceiver%20Breakout%20-%20900MHz&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/u0p8djDC63kAXGYrkGuuAFGaI0izbDg1VekqFP5_Oms/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly93d3cu/ZmFidG9sYWIuY29t/L2ltYWdlL2NhY2hl/L2NhdGFsb2cvU0JD/L0FkYWZydWl0L1dp/cmVsZXNzL1JGJTIw/KFJhZGlvJTIwQW5k/JTIwRnJlcXVlbmN5/KS8zMDcyLTA3LTIy/OHgyMjguanBn"
    },
    {
      "id": "robot_ubec_power_converter_high_capacity",
      "name": "Robot 5V UBEC (High Capacity)",
      "type": "power",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 12.5,
      "purchaseUrl": "https://www.amazon.com/Castle-Creations-Bec-Switching-Regulator/dp/B000MXAR12",
      "description": "High-capacity 10A UBEC for converting LiPo battery voltage to a stable 5V for powering the RPi and other electronics.",
      "productName": "Castle Creations 10A CC BEC",
      "amazonUrl": "https://www.amazon.com/s?k=Castle%20Creations%2010A%20CC%20BEC&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/lTGtRWaXCpk8DACJRP4taMOkkqP1pQZauqJd3dqD6J8/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9jZG4x/MS5iaWdjb21tZXJj/ZS5jb20vcy1vaTJn/OGs2b2M2L2ltYWdl/cy9zdGVuY2lsLzUw/MHg2NTkvcHJvZHVj/dHMvMTMyLzQ0MC9D/Q19CRUNfcGljXzFf/XzE4ODYxLjE1MDIz/Mzk0MzguanBnP2M9/Mg"
    },
    {
      "id": "robot_left_motor_high_torque",
      "name": "Robot Left Drive Motor (High Torque)",
      "type": "actuator",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 15,
      "purchaseUrl": "https://www.pololu.com/product/4862",
      "description": "High-torque 12V DC motor with a 75:1 metal gearbox and integrated encoder.",
      "productName": "Pololu 12V, 75:1 Metal Gearmotor 37Dx73L mm with 64 CPR Encoder",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%2012V%2C%2075%3A1%20Metal%20Gearmotor%2037Dx73L%20mm%20with%2064%20CPR%20Encoder&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/dV1dGC5-WXhsNS_3Za5QjPVCBU74GLq93SKbGtGd_V0/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9tLm1l/ZGlhLWFtYXpvbi5j/b20vaW1hZ2VzL0kv/NTEtcSs5SFBTd0wu/anBn"
    },
    {
      "id": "robot_right_motor_high_torque",
      "name": "Robot Right Drive Motor (High Torque)",
      "type": "actuator",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 15,
      "purchaseUrl": "https://www.pololu.com/product/4862",
      "description": "High-torque 12V DC motor with a 75:1 metal gearbox and integrated encoder.",
      "productName": "Pololu 12V, 75:1 Metal Gearmotor 37Dx73L mm with 64 CPR Encoder",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%2012V%2C%2075%3A1%20Metal%20Gearmotor%2037Dx73L%20mm%20with%2064%20CPR%20Encoder&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/dV1dGC5-WXhsNS_3Za5QjPVCBU74GLq93SKbGtGd_V0/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly9tLm1l/ZGlhLWFtYXpvbi5j/b20vaW1hZ2VzL0kv/NTEtcSs5SFBTd0wu/anBn"
    },
    {
      "id": "robot_motor_driver_high_power",
      "name": "Robot Motor Driver (High Power)",
      "type": "actuator",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 44.95,
      "purchaseUrl": "https://www.pololu.com/product/2507",
      "description": "Dual G2 High-Power Motor Driver capable of supplying up to 18A continuous current per channel, suitable for the upgraded motors.",
      "productName": "Pololu Dual G2 High-Power Motor Driver 18v18",
      "amazonUrl": "https://www.amazon.com/s?k=Pololu%20Dual%20G2%20High-Power%20Motor%20Driver%2018v18&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/bp4WfQlR-uy2YCyXWi82VzEhxD3cRsRAcZQIhSsb1Bw/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly90aGVw/aWh1dC5jb20vY2Ru/L3Nob3AvcHJvZHVj/dHMvcG9sb2x1LWR1/YWwtZzItaGlnaC1w/b3dlci1tb3Rvci1k/cml2ZXItZm9yLXJh/c3BiZXJyeS1waS1w/b2xvbHUtMjMxNzU3/ODg1Mjc4MTEuanBn/P3Y9MTY0NjI3NTUw/MiZ3aWR0aD0xMDI0"
    },
    {
      "id": "robot_imu_upgrade",
      "name": "Upgraded Robot IMU (BNO085)",
      "type": "sensor",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 22.95,
      "purchaseUrl": "https://www.adafruit.com/product/4754",
      "description": "A 9-DOF IMU that uses sensor fusion to provide more accurate orientation and motion data, replacing the previous MPU-6050.",
      "pins": [
        "VIN",
        "3V3",
        "GND",
        "SCL",
        "SDA",
        "INT",
        "RST"
      ],
      "productName": "Adafruit 9-DOF Orientation IMU Fusion Breakout - BNO085",
      "amazonUrl": "https://www.amazon.com/s?k=Adafruit%209-DOF%20Orientation%20IMU%20Fusion%20Breakout%20-%20BNO085&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/o9ih2aGKOu9W7SFxDEdrUZjybnX5g-gkUumvEe7RqKM/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly93d3cu/a2l3aS1lbGVjdHJv/bmljcy5jb20vaW1h/Z2UvY2FjaGUvY2F0/YWxvZy9wcm9kdWN0/L21haXc4NGZkLzQ3/NTQtMDItNzAweDUy/NWguanBn"
    },
    {
      "id": "robot_camera_upgrade",
      "name": "Upgraded Robot Camera (RPi v3)",
      "type": "sensor",
      "category": "electrical",
      "quantity": 1,
      "estimatedCost": 25,
      "purchaseUrl": "https://www.raspberrypi.com/products/camera-module-3/",
      "description": "A high-resolution camera with a Sony IMX708 sensor, providing significantly better image quality for perception tasks compared to the old OV2640 module.",
      "pins": [
        "CSI Connector"
      ],
      "productName": "Raspberry Pi Camera Module 3",
      "amazonUrl": "https://www.amazon.com/s?k=Raspberry%20Pi%20Camera%20Module%203&linkCode=ll2&tag=3e8hardware-20&linkId=4ccf4163514d07f9bf547ac1c23fd3e0&language=en_US&ref_=as_li_ss_tl",
      "imageUrl": "https://imgs.search.brave.com/If0X6xEnv5PctEgZhlEV-Yv04jQJo6BzAcSii4JaYf4/rs:fit:500:0:1:0/g:ce/aHR0cHM6Ly93d3cu/d2F2ZXNoYXJlLmNv/bS9pbWcvZGV2a2l0/L2FjY0JvYXJkL1Jh/c3BiZXJyeS1QaS1D/YW1lcmEtTW9kdWxl/LTMvUmFzcGJlcnJ5/LVBpLUNhbWVyYS1N/b2R1bGUtMy1kZXRh/aWxzLTEzLmpwZw"
    }
  ],
  "electricalConnections": [
    {
      "source": "robot_rpi5",
      "target": "robot_esp32",
      "type": "data",
      "label": "High-Level Commands",
      "protocol": "UART"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lidar",
      "type": "data",
      "label": "LiDAR Data",
      "protocol": "USB"
    },
    {
      "source": "robot_esp32",
      "target": "robot_wheel_encoder",
      "type": "data",
      "label": "Encoder Pulses",
      "protocol": "GPIO"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_tof_sensor",
      "type": "power",
      "label": "5V Power",
      "sourcePin": "5V",
      "targetPin": "VIN",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_tof_sensor",
      "type": "data",
      "label": "I2C",
      "sourcePin": "SDA",
      "targetPin": "SDA",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_tof_sensor",
      "type": "data",
      "label": "I2C",
      "sourcePin": "SCL",
      "targetPin": "SCL",
      "voltage": "3.3V"
    },
    {
      "source": "robot_watchdog",
      "target": "robot_rpi5",
      "type": "data",
      "label": "Reset Signal",
      "sourcePin": "RESET",
      "targetPin": "RUN",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "power",
      "label": "5V Power",
      "sourcePin": "5V",
      "targetPin": "VCC",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "data",
      "label": "SPI",
      "sourcePin": "MOSI",
      "targetPin": "MOSI",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "data",
      "label": "SPI",
      "sourcePin": "MISO",
      "targetPin": "MISO",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "data",
      "label": "SPI",
      "sourcePin": "SCLK",
      "targetPin": "SCK",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "data",
      "label": "SPI",
      "sourcePin": "CE0",
      "targetPin": "CS",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_esp32",
      "type": "data",
      "label": "Hardware Time Sync Pulse",
      "protocol": "GPIO",
      "sourcePin": "GPIO_Sync_Out",
      "targetPin": "GPIO_Sync_In"
    },
    {
      "source": "robot_battery_3s_lipo",
      "target": "robot_estop_button",
      "type": "power",
      "label": "Battery Power In",
      "sourcePin": "V+",
      "targetPin": "NC_IN",
      "voltage": "11.1V"
    },
    {
      "source": "robot_motor_power_regulator",
      "target": "robot_motor_driver_high_power",
      "type": "power",
      "label": "Motor Driver Power",
      "sourcePin": "VOUT",
      "targetPin": "VIN",
      "voltage": "12V"
    },
    {
      "source": "robot_esp32",
      "target": "robot_motor_driver_high_power",
      "type": "data",
      "label": "Motor Control",
      "protocol": "PWM"
    },
    {
      "source": "robot_esp32",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "label": "LoRa SPI",
      "protocol": "SPI"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_rpi5",
      "type": "power",
      "label": "RPi 5V Power",
      "voltage": "5V"
    },
    {
      "source": "robot_motor_driver_high_power",
      "target": "robot_left_motor_high_torque",
      "type": "power",
      "label": "Left Motor Power"
    },
    {
      "source": "robot_motor_driver_high_power",
      "target": "robot_right_motor_high_torque",
      "type": "power",
      "label": "Right Motor Power"
    },
    {
      "source": "robot_watchdog",
      "target": "robot_motor_driver_high_power",
      "type": "data",
      "label": "Watchdog Motor Disable",
      "sourcePin": "DRV/DONE",
      "targetPin": "ENABLE"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_esp32",
      "type": "power",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "power",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_watchdog",
      "type": "power",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "protocol": "SPI",
      "sourcePin": "MOSI",
      "targetPin": "MOSI"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "protocol": "SPI",
      "sourcePin": "MISO",
      "targetPin": "MISO"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "protocol": "SPI",
      "sourcePin": "SCLK",
      "targetPin": "SCK"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "protocol": "SPI",
      "sourcePin": "CS",
      "targetPin": "CS"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "protocol": "GPIO",
      "sourcePin": "GPIO",
      "targetPin": "CE"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "protocol": "GPIO",
      "sourcePin": "GPIO",
      "targetPin": "IRQ"
    },
    {
      "source": "robot_estop_button",
      "target": "robot_motor_power_regulator",
      "type": "power",
      "label": "E-Stop to Motor Regulator",
      "sourcePin": "NC_OUT",
      "targetPin": "VIN",
      "voltage": "11.1V"
    },
    {
      "source": "robot_battery_3s_lipo",
      "target": "robot_ubec_power_converter_high_capacity",
      "type": "power",
      "label": "Battery to UBEC",
      "sourcePin": "V+",
      "targetPin": "VIN+",
      "voltage": "11.1V"
    },
    {
      "source": "robot_esp32",
      "target": "robot_wheel_encoder",
      "type": "power",
      "label": "Encoder Power",
      "sourcePin": "3.3V",
      "targetPin": "VCC",
      "voltage": "3.3V"
    },
    {
      "source": "robot_esp32",
      "target": "robot_watchdog",
      "type": "data",
      "label": "Watchdog Heartbeat",
      "sourcePin": "GPIO",
      "targetPin": "WDI"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_secure_element",
      "type": "data",
      "protocol": "I2C",
      "sourcePin": "SDA",
      "targetPin": "SDA"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_secure_element",
      "type": "data",
      "protocol": "I2C",
      "sourcePin": "SCL",
      "targetPin": "SCL"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_secure_element",
      "type": "power",
      "voltage": "3.3V"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_imu_upgrade",
      "type": "power",
      "voltage": "5V"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_camera_upgrade",
      "type": "power",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_imu_upgrade",
      "type": "data",
      "label": "I2C SDA",
      "protocol": "I2C",
      "sourcePin": "SDA",
      "targetPin": "SDA"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_imu_upgrade",
      "type": "data",
      "label": "I2C SCL",
      "protocol": "I2C",
      "sourcePin": "SCL",
      "targetPin": "SCL"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_camera_upgrade",
      "type": "data",
      "label": "Video Data",
      "protocol": "CSI",
      "sourcePin": "CSI Port",
      "targetPin": "CSI Port"
    },
    {
      "source": "robot_battery_3s_lipo",
      "target": "robot_estop_button",
      "type": "power",
      "label": "Motor Power In",
      "sourcePin": "V+",
      "targetPin": "NC_IN",
      "voltage": "11.1V"
    },
    {
      "source": "robot_estop_button",
      "target": "robot_motor_power_regulator",
      "type": "power",
      "label": "Motor Power Switched",
      "sourcePin": "NC_OUT",
      "targetPin": "VIN",
      "voltage": "11.1V"
    },
    {
      "source": "robot_motor_power_regulator",
      "target": "robot_motor_driver_high_power",
      "type": "power",
      "label": "Regulated Motor Power",
      "sourcePin": "VOUT",
      "targetPin": "VIN",
      "voltage": "12V"
    },
    {
      "source": "robot_motor_driver_high_power",
      "target": "robot_left_motor_high_torque",
      "type": "power",
      "label": "Left Motor Power"
    },
    {
      "source": "robot_motor_driver_high_power",
      "target": "robot_right_motor_high_torque",
      "type": "power",
      "label": "Right Motor Power"
    },
    {
      "source": "robot_battery_3s_lipo",
      "target": "robot_ubec_power_converter_high_capacity",
      "type": "power",
      "label": "System Power In",
      "sourcePin": "V+",
      "targetPin": "VIN+",
      "voltage": "11.1V"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_rpi5",
      "type": "power",
      "label": "RPi 5V Power",
      "sourcePin": "5V OUT",
      "targetPin": "5V",
      "voltage": "5V"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_esp32",
      "type": "power",
      "label": "ESP32 5V Power",
      "sourcePin": "5V OUT",
      "targetPin": "5V",
      "voltage": "5V"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_imu_upgrade",
      "type": "power",
      "label": "IMU 5V Power",
      "sourcePin": "5V OUT",
      "targetPin": "VIN",
      "voltage": "5V"
    },
    {
      "source": "robot_ubec_power_converter_high_capacity",
      "target": "robot_camera_upgrade",
      "type": "power",
      "label": "Camera 5V Power",
      "sourcePin": "5V OUT",
      "targetPin": "5V",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_tof_sensor",
      "type": "power",
      "label": "ToF 5V Power",
      "sourcePin": "5V",
      "targetPin": "VIN",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "power",
      "label": "Logger 5V Power",
      "sourcePin": "5V",
      "targetPin": "VCC",
      "voltage": "5V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "power",
      "label": "LoRa 3.3V Power",
      "sourcePin": "3.3V",
      "targetPin": "VIN",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_watchdog",
      "type": "power",
      "label": "Watchdog 3.3V Power",
      "sourcePin": "3.3V",
      "targetPin": "VIN",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_secure_element",
      "type": "power",
      "label": "Secure Element 3.3V Power",
      "sourcePin": "3.3V",
      "targetPin": "VCC",
      "voltage": "3.3V"
    },
    {
      "source": "robot_esp32",
      "target": "robot_wheel_encoder",
      "type": "power",
      "label": "Encoder 3.3V Power",
      "sourcePin": "3.3V",
      "targetPin": "VCC",
      "voltage": "3.3V"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_esp32",
      "type": "data",
      "label": "Command Packets",
      "protocol": "UART"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_esp32",
      "type": "data",
      "label": "Time Sync",
      "sourcePin": "GPIO_Sync",
      "targetPin": "GPIO_Sync_In"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lidar",
      "type": "data",
      "label": "LiDAR Data",
      "protocol": "USB"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_tof_sensor",
      "type": "data",
      "label": "ToF Data",
      "protocol": "I2C",
      "sourcePin": "SDA/SCL",
      "targetPin": "SDA/SCL"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_imu_upgrade",
      "type": "data",
      "label": "IMU Data",
      "protocol": "I2C",
      "sourcePin": "SDA/SCL",
      "targetPin": "SDA/SCL"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_secure_element",
      "type": "data",
      "label": "Secure Element Data",
      "protocol": "I2C",
      "sourcePin": "SDA/SCL",
      "targetPin": "SDA/SCL"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_camera_upgrade",
      "type": "data",
      "label": "Camera Data",
      "protocol": "CSI"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_logging_storage",
      "type": "data",
      "label": "Logging Data",
      "protocol": "SPI",
      "sourcePin": "MOSI, MISO, SCK, CS"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "label": "LoRa Data",
      "protocol": "SPI",
      "sourcePin": "MOSI, MISO, SCK, CS"
    },
    {
      "source": "robot_rpi5",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "label": "LoRa Control",
      "sourcePin": "GPIO",
      "targetPin": "CE, IRQ"
    },
    {
      "source": "robot_esp32",
      "target": "robot_imu_upgrade",
      "type": "data",
      "label": "IMU Secondary Access",
      "protocol": "I2C"
    },
    {
      "source": "robot_esp32",
      "target": "robot_camera_upgrade",
      "type": "data",
      "label": "Camera Secondary Access",
      "protocol": "DVP"
    },
    {
      "source": "robot_esp32",
      "target": "robot_wheel_encoder",
      "type": "data",
      "label": "Encoder Pulses",
      "sourcePin": "GPIO"
    },
    {
      "source": "robot_esp32",
      "target": "robot_motor_driver_high_power",
      "type": "data",
      "label": "Motor Speed/Direction",
      "protocol": "PWM"
    },
    {
      "source": "robot_esp32",
      "target": "robot_lora_radio_900mhz",
      "type": "data",
      "label": "LoRa Secondary Access",
      "protocol": "SPI"
    },
    {
      "source": "robot_esp32",
      "target": "robot_watchdog",
      "type": "data",
      "label": "Watchdog Heartbeat",
      "sourcePin": "GPIO",
      "targetPin": "WDI"
    },
    {
      "source": "robot_watchdog",
      "target": "robot_motor_driver_high_power",
      "type": "data",
      "label": "Motor Driver Enable",
      "sourcePin": "DRV/DONE",
      "targetPin": "ENABLE"
    },
    {
      "source": "robot_watchdog",
      "target": "robot_rpi5",
      "type": "data",
      "label": "System Reset",
      "sourcePin": "RESET",
      "targetPin": "RUN"
    }
  ],
  "mechanicalConnections": [],
  "projectDescription": "The \"Auth-Governed Swarm Testbed\" project develops autonomous robots designed for contested environments, featuring hierarchical authority control (HMAA), sensor spoofing resilience, and programmable authority degradation. Key subsystems include a robust power delivery network, dual-MCU compute for redundancy and control, comprehensive sensing for navigation and threat detection, and secure communication/authentication modules.",
  "originalPrompt": "Authority-Governed Autonomous Systems Testbed (Best Fit)\n4\nConcept\n\nBuild a physical testbed where autonomous robots operate under HMAA authority control.\n\nInstead of normal autonomy, every decision must pass through your authority and trust layers.\n\nArchitecture\nSensors\n ↓\nSATA trust evaluation\n ↓\nHMAA authority engine\n ↓\nMission autonomy planner\n ↓\nCARA recovery logic\n ↓\nRobot / drone actuation\nWhat it demonstrates\n\nsensor spoofing resilience\n\nautonomy authority degradation\n\nsafe recovery after failures\n\nmission control under uncertainty\n\nWhy NASA / DoD care\n\nAutonomous systems today lack formal authority governance.\n\nYour platform would show:\n\n“Autonomy that can be trusted in contested environments.”",
  "plan": "- Microcontroller: ESP32 or Raspberry Pi for HMAA authority engine and mission autonomy planner, Arduino for sensor/actuator control.",
  "notes": [
    "Autonomous robots",
    "HMAA authority control",
    "Contested environments",
    "Sensor spoofing resilience",
    "Autonomy authority degradation"
  ],
  "projectId": "de469722-b0cf-4814-b44a-76dbf8706b36"
}