Identity is a six-legged autonomous rover built by Team Euler for the COSGC robotics challenge. It combines Python control software on a Raspberry Pi 3B+, Arduino/C++ sensor firmware on an Arduino Nano, six Feetech STS3215 smart servos with runtime telemetry, ultrasonic sensing, and IMU feedback to test cost-conscious rough-terrain locomotion.
The project explored whether a six-servo hexapod could adapt to rough outdoor terrain using a small set of interpretable gait parameters instead of complex multi-joint planning or learned locomotion. The key control variables were Buehler-clock duty cycle, impact window, phase offsets, and a global speed setpoint.
The final build combined field-tested hardware, simulation-backed control logic, and documented validation results showing 31/32 successful traversals across seven terrain categories.
| Category | Summary |
|---|---|
| Project | Autonomous six-legged rover using RHex-style C-leg locomotion |
| Stack | Python, C++, Raspberry Pi 3B+, Arduino Nano, Feetech STS3215 serial smart servos, BNO085 IMU, HC-SR04 ultrasonic sensors |
| My focus | Software, controls, validation, CAD/printing workflow, hardware selection, and build documentation |
| Outcome | 31/32 formal traversals, 40/40 simulation checks, and 3 COSGC recognitions |
The main README is intentionally concise; detailed build, validation, gait, media, release, and purchasing references are kept in docs/ for reviewers who want deeper evidence.
| Reader | Start Here | What It Shows |
|---|---|---|
| Recruiters and portfolio reviewers | Project Snapshot, My Role, and Recognition And Publications | Project outcome, validation result, awards, and public deliverables |
| Robotics and controls reviewers | final_full_gait_test.py, Gait Control Reference, and Validation Reference |
Brain/Heart control split, smart-servo feedback, terrain adaptation, and validation strategy |
| Hardware reviewers | Hardware Reference and Categorized Bill of Materials | Actuation, sensing, power, printed structure, tread design, and purchasing traceability |
| Reproducing or running code | Software Map and RUNNING.md |
Main runtime entry points, diagnostics, simulations, and launch commands |
For control-software review, start with final_full_gait_test.py, ARCHITECTURE.md, and docs/gait-control.md.
Validation is presented as pilot-scale testing; statistical framing and known limits are documented in docs/validation.md.
| Highlight | Why It Matters |
|---|---|
| Multiprocess Brain/Heart architecture | Keeps navigation logic from blocking the 30 Hz gait loop |
| STS3215 smart-servo telemetry | Treats actuator feedback as sensor data for phase error, load, speed, voltage, current, temperature, and fault monitoring |
| Arduino Nano sensor hub | Moves ultrasonic timing and IMU polling off the Raspberry Pi so sensor collection stays deterministic |
| Buehler-clock gait control | Keeps rough-terrain adaptation interpretable through duty cycle, impact window, phase offsets, and speed setpoint changes |
| Simulation-backed validation | Tests gait timing, terrain overlays, governors, and navigation FSM behavior before hardware runs |
| Field-tested C-leg locomotion | Validated a cost-conscious PETG/TPU C-leg platform across sand, gravel, stone, carpet, packed earth, tile, and inclines |
This repository contains the final public code, validation previews, CAD references, media links, and supporting documentation for the Team Euler rover build. Longer reference pages are collected in the docs index, and full-resolution media is hosted in the Portfolio Media Assets release.
| Area | Status |
|---|---|
| Final rover build | Final Post-Competition Build, with cliff detection enabled in the public configuration |
| Primary runtime | final_full_gait_test.py on Raspberry Pi plus final_sensors.ino on Arduino Nano |
| Validation | 31/32 formal traversals successful, with 40/40 simulation checks passing at the symposium-paper checkpoint |
| Setup and references | RUNNING.md, ARCHITECTURE.md, docs/README.md, and requirements.txt |
| Release history | Earlier public milestones are preserved in docs/releases.md |
This was a team robotics project. My individual work focused on software, controls, validation, and the mechanical design and 3D-printed fabrication work I personally owned, plus documentation for the parts of the build I led or integrated.
- Co-developed and tuned the Python gait/navigation stack, including terrain overlays, telemetry-driven gait tuning, simulation validation, and competition-readiness fixes.
- Integrated Arduino/C++ sensor firmware with the Raspberry Pi control stack and contributed firmware-facing fixes for ultrasonic/IMU data handling.
- Built the simulation and telemetry-analysis tooling used to validate gait timing, navigation behavior, terrain overlays, safety governors, and post-run logs.
- Used STS3215 smart-servo telemetry and field logs to tune gait behavior, load limits, phase-error handling, and safety governors.
- Owned the CAD modeling and 3D printing workflow for the rover's custom mechanical parts, and selected and ordered hardware components recorded in the public BOM.
- Contributed to electrical assembly, including soldering and wiring.
The Brain process handles sensor interpretation, terrain classification, obstacle/cliff logic, and navigation state transitions. The Heart process runs the timing-critical gait loop, computes servo commands, reads STS3215 telemetry, applies safety governors, and keeps motor control isolated from slower navigation work.
See ARCHITECTURE.md for the full software architecture map, or docs/architecture.md for a diagram-focused overview.
Identity uses a cost-conscious, field-serviceable hardware stack built around one smart servo per C-leg, a Raspberry Pi control computer, and an Arduino sensor hub. The full hardware reference, measured geometry, CAD links, tread construction notes, and BOM routing live in docs/hardware.md.
| Subsystem | Components | Purpose |
|---|---|---|
| Compute and sensing | Raspberry Pi 3B+, Arduino Nano, BNO085 IMU, 8x HC-SR04 ultrasonic sensors | Brain/Heart control, deterministic sensor timing, orientation feedback, obstacle detection, and cliff/drop-off sensing |
| Locomotion | 6x Feetech STS3215 smart servos with C-shaped PETG/TPU legs | Single-actuator C-leg motion with servo telemetry used for phase, load, speed, voltage, current, temperature, and error feedback |
| Structure and traction | PETG octagonal chassis, TPU tread interface, adhesive bumper pads, hot-glue V tread | Mechanically simple rough-terrain platform with a NASA rover-inspired chevron contact pattern |
| Power and integration | 3S 3000 mAh LiPo, FE-URT-1 servo interface, wiring harnesses, fasteners, adhesives | Portable power, servo bus configuration, and field-serviceable assembly |
| BOM Snapshot | Key Details | Link |
|---|---|---|
| 31 tracked purchase lines | Control electronics, sensors, power, printed structure, wiring, adhesives, fasteners, and assembly supplies | Categorized BOM |
| Locomotion core | 6 STS3215 smart servos driving PETG/TPU C-legs | BOM locomotion entries |
| Sensor coverage | 8 ultrasonic sensors plus BNO085 IMU | BOM sensing entries |
| Source export | CSV generated from Robotics_Purchasing_2025-2026.xlsx |
Purchasing source CSV |
The main runtime is split between the Raspberry Pi gait/navigation program and Arduino sensor firmware. The full file-by-file map, diagnostics, launch modes, calibration tools, simulation helpers, telemetry analysis, and regression tests live in docs/software-map.md.
| Area | Primary Files | Reviewer Signal |
|---|---|---|
| Runtime gait and autonomy | final_full_gait_test.py, final_sensors.ino |
Main Raspberry Pi control loop plus Arduino sensor firmware used by the final rover |
| Running and diagnostics | RUNNING.md, docs/software-map.md |
Hardware launch commands, dry-run modes, subsystem tests, and gait-specific checks |
The gait engine follows a RHex-style Buehler clock. Duty cycle defines stance fraction, phase offsets define inter-leg timing, and a global speed setpoint controls phase progression. Tripod, wave, and quadruped modes were tuned for different terrain demands.
| Control Feature | Implementation |
|---|---|
| Interpretable gait parameters | Duty cycle, impact window, phase offsets, and global speed setpoint |
| STS3215 feedback loop | Position, phase error, load, speed, voltage, current, temperature, and error flags |
| Safety governors | Phase-error slowdown, stall detection, brownout/current limits, thermal monitoring, and overload prevention |
| Detailed reference | docs/gait-control.md |
STS3215 telemetry was central to the gait changes: the rover compared commanded and measured leg phase, slowed before phase lag became foot drag, used sustained load as a terrain signal, and applied voltage/current/temperature limits during field testing.
The autonomous navigation layer uses an eight-state finite state machine for forward traversal, slow approach, arc turns, backing up, pivot turns, recovery wiggle, and safe stop behavior. Sensor input comes from ultrasonic range data, IMU orientation, servo telemetry, and watchdog state.
Terrain classification combines IMU pitch/roll, angular-rate stability, ultrasonic range changes, and servo-load trends. The navigation FSM diagram, terrain overlay chart, and servo load margin figure are collected in docs/validation.md.
At the symposium-paper checkpoint, the project passed 40/40 automated simulation checks covering gait timing, terrain overlays, safety governors, and navigation FSM behavior. GitHub Actions runs the simulation and pytest regression suite on code, firmware, dependency, workflow, pull request, and manual-dispatch events.
| Validation Resource |
What It Verifies |
Link |
|---|---|---|
| GitHub Actions simulation workflow | Automated simulation and pytest regression checks across code, firmware, dependency, workflow, pull request, and manual-dispatch events | Simulation Checks |
| Field results and known limits | Formal traversal outcomes, terrain categories, servo load margin, pilot-test scope, and remaining validation limits | Validation Reference |
| Local simulation commands | Command references for sim_verify.py, sim_terrain.py, and sim_nav.py, including what the simulations do and do not model |
docs/validation.md |
| Research Output |
Context |
View |
Download |
|---|---|---|---|
| Paper | Full technical writeup for the rover design, gait control approach, validation results, and project limitations | View Paper | Download Paper PDF |
| Presentation Slides | Symposium presentation deck summarizing the engineering problem, rover architecture, gait strategy, and validation outcomes | View Slides | Download Slides PDF |
| Paper Presentation Video | Recorded version of the symposium paper presentation with audio hosted externally for browser playback | Watch on YouTube | Download Presentation MP4 |
| Poster | Research-poster version of the project for quick review of motivation, design, validation, and outcomes | View Poster | Download Poster PDF |
| People's Choice Video | Public-facing award video showing the rover and project story in a shorter presentation format | Watch on YouTube | Download Video MP4 |
| Field Demos & Course Success Videos | Gallery of full-resolution field demos and course-success videos with GIF previews | Open Gallery | N/A |
This optional index is organized by what someone might need to find later, rather than by file name. It points to the deeper references behind the portfolio summary above.
| Looking For |
Best Starting Point |
What It Contains |
|---|---|---|
| Fast reviewer orientation | Quick Reviewer Path, My Role | Shortest route to the code, architecture, validation evidence, hardware summary, and individual contribution scope. |
| Programming contribution evidence | final_full_gait_test.py, final_sensors.ino, docs/software-map.md, ARCHITECTURE.md |
Main Python gait/navigation stack, Arduino sensor firmware, runtime modes, Brain/Heart process split, safety governors, and simulation hooks. |
| Gait tuning and STS3215 telemetry | Smart-Servo Feedback, Servo Load Margin | How actuator telemetry was used as sensor input for phase error, load trends, speed feedback, voltage/current limits, temperature monitoring, and gait changes. |
| Validation claims and limits | docs/validation.md, Simulation Checks |
Formal traversal outcomes, terrain categories, pilot-scale framing, known limits, and the automated simulation/pytest checkpoint. |
| Mechanical design and fabrication | CAD Models, Printed Body Assembly, Tread Construction | CAD references, printed chassis/lid assembly, C-leg geometry, TPU layer, adhesive bumper tread construction, hot-glue V-tread pattern, and fabrication notes. |
| BOM and purchasing traceability | docs/BOM.md, docs/purchasing-bom.csv |
Categorized purchasing table, source links, quantities, pack counts, subsystem notes, and integration notes for the final public build. |
| Running, diagnostics, and reviewer commands | RUNNING.md, Main Program Modes |
Simulation commands, dry-run modes, hardware launch commands, Arduino firmware notes, safety checklist, and review-friendly execution paths. |
| Sensor stack and data flow | Sensor Firmware And Input, Sensor Pipeline | Arduino Nano hub, ultrasonic sensors, BNO085 IMU input, Raspberry Pi handoff, watchdog behavior, and sensor integration points. |
| Field demos and course videos | docs/media.md |
Full-resolution traversal videos, course-success runs, and GIF previews for sand, obstacle, indoor, and park-style navigation demos. |
| Research outputs and symposium materials | Recognition And Publications, docs/paper-presentation-slides.md |
Paper, presentation slides, poster, paper-presentation video, People's Choice video, award certificates, and symposium display context. |
| Release history and public milestones | docs/releases.md, Portfolio Media Assets |
Final public release trail, earlier milestone summaries, and the GitHub release that hosts full-resolution PDFs and MP4s. |
| Complete documentation map | docs/README.md |
One-page index of the supporting docs for hardware, BOM, software, validation, media, release history, and reviewer references. |





