Project files
- .github2 files
- .vscode3 files
- assets29 files
- Atlas_Rover_Mk1_制造图纸包_V1.018 files
- docs13 files
- firmware42 files
- integrations2 files
- scripts3 files
- simulator_mac3 files
- simulator_web1 file
- tools5 files
- .gitignore1 KB
- Atlas One.code-workspace1 KB
- CONTRIBUTING.md1 KB
- LICENSE1 KB
- README.md6 KB
README.md
Machine-translated by Robotheca from the original in Chinese (opens in a new tab). License: MIT (opens in a new tab).
Atlas Rover Mk.1
A desktop rover robot prototype still growing into its own.
Here’s what it looks like right now: a copper-wire-welded frame, a Waveshare ESP32-S3 DualEye with dual round screens, dual-board UART control, N20/DRV8833 chassis, voice interaction, binocular expressions, and a little bit of “I want to come alive” obsession.
We know it’s still rough: the mechanical structure hasn’t been prototyped enough times, the DualEye’s real-screen driver is connected but not yet fully calibrated in real use, and the MimiClaw voice link is still in its early framework stage. This repository isn’t a “finished showcase cabinet”; it’s more like an open workbench. If you’re a master passing by, feel free to lend a hand—especially if you spot anything unreasonable, unsafe, or inelegant.
What we want to achieve
Atlas Rover Mk.1 aims to be a small yet complete desktop robot experimentation platform:
- Dual circular screens, each displaying one eye.
- DualEye handles expressions, pages, voice, touch, and high-level intent.
- The Seeed XIAO ESP32C3 chassis board manages standard N20 motors, DRV8833, speed limiting, open-loop short-duration differential control, and timeout parking.
- DualEye communicates with the chassis board via 3.3 V TTL UART.
- The frame retains the handmade DIY feel of brass/wire craftsmanship.
The core principle is simple: get it running first, then make it stable, and finally improve its appearance.
Current Status
| Module | Status |
|---|---|
| Manufacturing Drawings Package | V1.0 draft organized |
| Procurement List | Chinese list and specification review available |
| Binocular Expression Scheme | V0.6 available, designed based on "one screen, one eye" and supplemented with page visuals, application capability mapping, and candidate interface recommendations |
| Web Expression Preview | Viewable in VS Code Live Preview, supports 5 themes, 16 expressions, clock/status/voice/music/story/dialog/calendar/tomato page review |
| DualEye Firmware | V0.5 compilable, 5 theme palettes synchronized, Waveshare GC9A01/LVGL dual-screen backend integrated, and new MimiClaw structured intent entry added |
| Web Application/Management Interface | V0.4 split into /app daily application page and /admin management backend, supports expressions, pages, themes, mobility, MimiClaw application placeholders, and configuration management |
| Real Machine Dual-Screen Display | Waveshare official GC9A01/LVGL initialization connected, real machine needs further testing of touch and complex pages |
| Voice MimiClaw | DualEye provides /api/mimiclaw/intent, MimiClaw integration plan see docs/MimiClaw集成方案_Atlas_Rover_Mk1.md |
| Chassis Open-Loop Control | XIAO ESP32C3 chassis firmware V0.1 completed, supports UART AR1,, DRV8833 PWM, speed limiting, action duration cutoff, and STOP; awaiting real car calibration of left and right motor directions |
Repository Structure
.
├── Atlas_Rover_Mk1_Manufacturing_Drawings_Package_V1.0/ # Drawings, assembly, wiring, procurement, and review documents
├── docs/ # Design specifications, development environment, roadmap, progress logs
├── firmware/dualeye/ # ESP-IDF DualEye firmware
├── firmware/chassis_xiao_esp32c3/ # ESP-IDF XIAO ESP32C3 chassis firmware
├── simulator_web/ # Binocular expression web preview
├── simulator_mac/ # SDL desktop simulator skeleton
├── scripts/ # Environment checks, VS Code opening, synchronization scripts
└── tools/ # Drawing package/procurement sheet generation and validation tools
Quick Preview
The web simulator is great for previewing the binocular state machine and interaction feel:
cd "simulator_web"
python3 -m http.server 5173
Then open:
http://127.0.0.1:5173
Alternatively, you can open simulator_web/index.html using Live Preview in VS Code.
Compiling the DualEye Firmware
cd "firmware/dualeye"
export IDF_PATH="$HOME/.espressif/esp-idf-v5.5.2"
export IDF_PYTHON_ENV_PATH="$HOME/.espressif/python_env/idf5.5_py3.9_env"
. "$IDF_PATH/export.sh"
idf.py set-target esp32s3
idf.py build
The current V0.5 has been successfully built locally and configured according to DualEye's official specifications: 16MB Flash, PSRAM, and a 4MB application partition. The firmware has been integrated with the Waveshare GC9A01/LVGL dual-screen backend and the MimiClaw structured intent entry. The next focus is on real-device calibration for rotation, backlight, touch, complex pages, and merging the complete MimiClaw agent loop.
After flashing:
- When no Wi-Fi configuration is set, DualEye will enable
AtlasRover-XXXXhotspot. Connect your phone/computer to it and visithttp://192.168.4.1. - The serial log will display a 6-digit pairing code. STOP mode does not require a pairing code, but moving and configuration changes do.
- The web management page allows configuring Wi-Fi, LLM mode, Base URL, Model, API Key, and motion safety restrictions.
- The API Key is stored only in the device's NVS and is not written into the source code, uploaded to GitHub, or output in logs.
Compiling XIAO Chassis Firmware
cd "firmware/chassis_xiao_esp32c3"
export IDF_PATH="$HOME/.espressif/esp-idf-v5.5.2"
. "$IDF_PATH/export.sh"
idf.py set-target esp32c3
idf.py build
The wiring is fixed as DualEye LCD1 Pin10/Pin9 crossed to XIAO D7/D6, and XIAO D2-D5 controls DRV8833 AIN1/AIN2/BIN1/BIN2. The chassis firmware only accepts short-duration action commands with duration_ms. For a standard N20 motor with a front caster wheel, calibrate first using open-loop time/PWM.
Questions We’d Love to Get Advice On
If you happen to be an expert in any of the following areas, feel free to open an issue to share your insights:
- Initialization of ESP32-S3 DualEye dual-screen LVGL and refresh strategy for dual 240×240 round screens
- ES8311/ES7210 audio chain, microphone RMS, TTS playback, and expression linkage
- Open-loop short-time differential control, motor speed limiting, timeout parking, and DRV8833 wiring for the car chassis
- Welded structure strength and maintainability of copper-wire / brass frames
- Safety strategies suitable for desktop patrol robots
- Improved dual-camera expression state machine and animation parameter design
We’ll read your suggestions carefully and record the adoption process in our progress log.
Synchronization Method
After organizing locally, you can run:
./scripts/sync_github.sh "Explain what was improved this time"
The script will check the status, commit, and push to GitHub. Automated synchronization is not implemented yet to avoid pushing unchecked drafts or local clutter to the public repository.
License
The code is temporarily released under the MIT License. The hardware drawings, bill of materials, and manufacturing documentation are still in early draft form; we welcome discussion before switching to a more appropriate hardware/documentation license.
A Little Truth
This is a robot project that we're learning and building as we go. We're not afraid of having problems pointed out; what we fear is problems staying hidden under the table. Criticism is welcome, and the more specific, the better.
Files by @davidwang960707-gpu, at commit 675d6f2, read from GitHub in your browser. Hardware license: MIT; software license: MIT. Robotheca doesn't review code: read it before running it.