Skip to content

About

A high-performance 6 Degrees of Freedom motion simulator platform powered by AC servo motors with AASD15A drivers

Topics

Resources

Stars

385 stars

Watchers

48 watching

Forks

Latest commit

 

History

210 Commits

Folders and files

Repository files navigation

6DOF Rotary Stewart Motion Simulator

License: MIT Controller: ESP32 / ESP32-S3

A DIY, open-source motion simulator built around a six-axis rotary Stewart platform: six servo-driven arms and connecting rods move a platform in surge, sway, heave, roll, pitch and yaw. The project brings together the mechanical build, custom electronics, ESP32 controller firmware and a desktop app for simulation, motion cueing and testing.

It began as a full-size racing-simulator build and has grown into a development platform of its own, including a smaller hobby-servo version. This repository shares the build history and videos as well as the code, design files and lessons learned along the way—not just the latest PCB package.

Watch the videos · Project history · Desktop app · Get started · Support the project

Current development status

UNTESTED PCB PROTOTYPE — 2026-09-23. DO NOT ORDER. The r13 RC4 design package is complete for review; actual JLC stackup, processed allocation and complete assembly approval remain pending. Nothing has been ordered or paid for. The board has not been manufactured or validated as a working controller. Firmware corrections and physical testing are required before drive-connected operation. Do not use the current firmware/PCB combination on a powered platform.

Heavy rotating machinery can cause serious injury or death. Independent emergency stop hardware must be in place before powered operation; the app's E-STOP button is not a substitute for a physical safety system. Earlier working builds and signal captures do not validate the current PCB/firmware combination.

Demo and build videos

Watch the original platform demonstrations and controller build videos below. Click a thumbnail to open YouTube. These document earlier builds, not an assembled or tested r13 board.

Platform demonstrations

Platform demo 1 · Platform demo 2

Controller PCB build videos

PCB video — part 1 · PCB video — part 2

A bit of project history

2020–2021 — the original rig. The repository started in January 2020 around a full-size rotary Stewart platform, six AC servos and an ESP32 controller taking SimTools input. Development included custom controller and magnetic-sensor PCBs, dual-core Arduino firmware, MCP23S17 I/O expansion, Android BLE controls and a .NET platform tester. The build and demo videos above come from this early period.

2025 — the “Phoenix” modernization. Work resumed with Python visualization, an ESP32-S3 migration and, later that year, a move from Arduino to ESP-IDF. The controller and its development tools evolved alongside the mechanical project.

2026 — a shared simulation and hardware workbench. A native C++ desktop app arrived in February, bringing 3D visualization, motion cueing, recording and software/hardware-in-the-loop workflows together. In July, the shared math was extracted into stewart-core, and the desktop-scale Mini-6DOF hobby-servo firmware joined this repository. The current September work includes the r13 controller PCB prototype, a clearer hardware/controller/app split, and illustrated app documentation with repeatable, hardware-disabled captures.

The project has evolved through several hardware and software generations. Old videos, timing measurements and design files are preserved as history; use the current hardware status and firmware TODO for today's implementation and testing requirements.

The hardware behind the project

The original full-size build described in this repository uses:

  • A 31-inch-diameter, ½-inch steel base plate.
  • Six 750 W AC servo motors, 50:1 planetary gearboxes and couplers.
  • AASD-15A servo drives with step/direction signaling.
  • Twelve ½-inch Panhard bar kits with rod ends and high-misalignment spacers for the linkage.

These describe the original build, not a complete shopping list or a claim that all historical controller revisions are interchangeable.

The newer “6DOF 2” controller is an ESP32-S3 PCB design with W5500 Ethernet, six matching DB25 servo connectors, differential STEP/DIR outputs, conditioned alarm inputs and a supervised stop/inhibit circuit. Its r13 revision remains an untested prototype, with hardware-specific firmware work still required.

The Mini-6DOF variant uses an ESP32 and six hobby servos for desktop-scale development. Mechanical assets live under hardware/mechanical/; the geometry guide explains platform dimensions and calibration.

Desktop app

Native desktop app with a simulated Stewart platform, motion-cueing controls and six-axis plots
Actual app screenshot using synthetic SIL data in hardware-disabled documentation mode—not r13 hardware telemetry.

The native C++/OpenGL/ImGui app is both a simulator and a development workbench:

  • 3D platform views with servo-angle readouts and editable geometry.
  • Independent entities for software-in-the-loop (SIL) experiments and hardware-in-the-loop (HIL) development.
  • Motion cueing and filtering with per-axis controls and frequency-response views.
  • Input plugins for Assetto Corsa, SimTools, manual controls and test signals.
  • Recording and playback, time-series plots, spectrograms and diagnostic logs.
  • Shared math for inverse kinematics, axis scaling and motion cueing, used by the desktop app and controller firmware.
  • MCP automation for repeatable UI setup and genuine app screenshots, including an isolated mode that blocks hardware access.

Start with the illustrated app guide. The app README contains deeper technical detail, and app automation explains the MCP interface and its current coverage. Software tests and synthetic demonstrations are not physical hardware acceptance tests.

Getting started

  1. Explore the software: follow the build guide, then use the app guide. For an explicitly hardware-disabled session, use the documentation-mode workflow.
  2. Choose the right controller: read the firmware variant map before working with the full-size, Mini or analyzer firmware. Their outputs and hardware requirements differ.
  3. Review the PCB: use the board overview, exact RC4 files and remaining gates, and firmware/commissioning TODO. Buying and bench-use guidance is indexed in Hardware; the current do-not-order status still applies.

Repository layout

Start here Contents
Hardware hardware/pcb/ design packages, buying/bench-use guides and hardware/mechanical/ models
Controller Full-size firmware, Mini firmware, shared math, diagnostics and tests
App Native desktop simulator/control app, MCP tools and optional Linux HIL bridge
Documentation Build instructions, illustrated app usage, firmware, architecture and automation references

For source paths, submodule setup and build directories, see the build guide.

Support the project

If you enjoy the project or find the code, designs and build videos useful, you can support its continued development: Donate via PayPal.

Bug reports, documentation corrections and reproducible test results are welcome too. When reporting hardware behavior, include the board revision and firmware version so results from different generations do not get mixed together.

License

MIT — see LICENSE. Use at your own risk.

About

A high-performance 6 Degrees of Freedom motion simulator platform powered by AC servo motors with AASD15A drivers

Topics

Resources

Stars

385 stars

Watchers

48 watching

Forks

Releases

Packages

Used by

Contributors

Languages