## Overview

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.

## Assumptions

*   **Power Source:** Robot_battery_3s_lipo provides primary 11.1V power. Central_power_supply is external and only for central RF.
*   **Environment:** Operation in an indoor, controlled testbed with potential for RF interference and physical obstacles.
*   **Skill Level:** Familiarity with Raspberry Pi, ESP32, basic electronics, 3D printing, and mechanical assembly.
*   **Software:** Firmware and OS images for RPi5 and ESP32 are pre-developed or readily available for flashing.
*   **Tools:** Standard electronics tools (soldering iron, multimeter), 3D printer, basic mechanical tools.

## Action Items

- [ ] Print all 3D-printed mechanical components (esp32_mount, battery_holder, camera_mount, rf_antenna_mount, cable_clip_guide, rpi5_mount, lidar_mount).
- [ ] Assemble the robot chassis: Attach robot_drive_wheel and robot_caster_wheel to robot_base_plate with dc_motor_mounts.
- [ ] Mount robot_left_motor_high_torque and robot_right_motor_high_torque to dc_motor_mounts.
- [ ] 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.
- [ ] Integrate power delivery: Wire robot_battery_3s_lipo through robot_estop_button to robot_motor_power_regulator and robot_ubec_power_converter_high_capacity.
- [ ] 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.
- [ ] Connect robot_ubec_power_converter_high_capacity to robot_rpi5, robot_esp32, robot_imu_upgrade, and robot_camera_upgrade.
- [ ] 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.
- [ ] Connect communication modules: robot_lora_radio_900mhz to robot_rpi5 (SPI, GPIO) and robot_esp32 (SPI).
- [ ] Implement secure elements and logging: Connect robot_secure_element and robot_logging_storage to robot_rpi5 (I2C/SPI respectively).
- [ ] Integrate watchdog timer: Connect robot_watchdog to robot_rpi5 (RESET→RUN) and robot_esp32 (GPIO→WDI).
- [ ] Perform initial power-on and connectivity tests for all modules.

## Assembly Key Points

*   **robot_base_plate * robot_drive_wheel, robot_caster_wheel:** Ensure smooth rotation and proper alignment for drive mechanisms.
*   **robot_rpi5 * rpi5_mount:** Securely attach to prevent vibration-induced disconnections.
*   **robot_esp32 * esp32_mount:** Position to allow easy access to pins for wiring.
*   **robot_battery_3s_lipo * battery_holder:** Snug fit to prevent battery movement, consider vibration dampening.
*   **robot_estop_button * Power Regulators:** Critical safety interlock; ensure correct NC wiring to cut power to motors and primary logic.
*   **robot_motor_driver_high_power * robot_left/right_motor_high_torque:** Verify correct motor polarity for intended direction.
*   **robot_ubec_power_converter_high_capacity * various electrical components:** Verify 5V output stability and capacity for all connected devices.
*   **robot_rpi5 * robot_lidar:** USB connection for high data rate; ensure cable routing avoids mechanical interference.
*   **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).
*   **robot_rpi5 * robot_camera_upgrade:** CSI connector is delicate; ensure careful insertion.
*   **robot_rpi5 * robot_logging_storage, robot_lora_radio_900mhz:** SPI bus connections (MOSI, MISO, SCK, CS) need correct pin assignments.
*   **robot_esp32 * robot_wheel_encoder:** GPIO for interrupt-driven counting; verify appropriate pull-ups or debouncing if needed.
*   **robot_esp32 * robot_motor_driver_high_power:** PWM signals for motor control; ensure correct frequency and duty cycle range.
*   **robot_esp32 * robot_lora_radio_900mhz:** SPI for radio communication.
*   **robot_watchdog * robot_rpi5, robot_esp32:** WDI (Watchdog Input) from ESP32, RESET to RPi5 RUN pin; critical for system robustness.
*   **robot_watchdog * robot_motor_driver_high_power:** DRV/DONE to ENABLE ensures motors are disabled on watchdog trigger.
*   **Cable Management:** Utilize cable_clip_guide to secure and organize wiring, preventing entanglement or damage.