Skip to content

6 KB

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.

image

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

ModuleStatus
Manufacturing Drawings PackageV1.0 draft organized
Procurement ListChinese list and specification review available
Binocular Expression SchemeV0.6 available, designed based on "one screen, one eye" and supplemented with page visuals, application capability mapping, and candidate interface recommendations
Web Expression PreviewViewable in VS Code Live Preview, supports 5 themes, 16 expressions, clock/status/voice/music/story/dialog/calendar/tomato page review
DualEye FirmwareV0.5 compilable, 5 theme palettes synchronized, Waveshare GC9A01/LVGL dual-screen backend integrated, and new MimiClaw structured intent entry added
Web Application/Management InterfaceV0.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 DisplayWaveshare official GC9A01/LVGL initialization connected, real machine needs further testing of touch and complex pages
Voice MimiClawDualEye provides /api/mimiclaw/intent, MimiClaw integration plan see docs/MimiClaw集成方案_Atlas_Rover_Mk1.md
Chassis Open-Loop ControlXIAO 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-XXXX hotspot. Connect your phone/computer to it and visit http://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.