Add READMEs for the repo and every generation, root CLAUDE.md and .gitattributes
The root README has the timeline of all generations since 2009. Each generation folder explains its hardware and what is in it. .gitattributes turns off line-ending conversion so all files stay as they were.
This commit is contained in:
1 parent
be287b066e
commit
1b3102296b
15 files changed
+181
-43
No files matched your search
@@ -1,3 +1,5 @@
|
|||||||
|
# Store every file exactly as it is: no line-ending conversion, so old code stays byte-for-byte original.
|
||||||
|
* -text
|
||||||
*.wmv filter=lfs diff=lfs merge=lfs -text
|
*.wmv filter=lfs diff=lfs merge=lfs -text
|
||||||
*.WMV filter=lfs diff=lfs merge=lfs -text
|
*.WMV filter=lfs diff=lfs merge=lfs -text
|
||||||
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# 2009–2011: the FPGA version
|
||||||
|
|
||||||
|
The first hexapod, built on the original frame (`../original-frame/`) and driven by an FPGA.
|
||||||
|
The FPGA code has not survived; what is left are the photos and videos in `media/`, among them
|
||||||
|
`hexapod film 18-11-09.wmv`.
|
||||||
|
|
||||||
|
`media/` holds every hexapod photo and video created on or before 2 November 2011 20:44:07; everything later
|
||||||
|
is in `../2011-firefly-mega-ssc32/media/`. (Most dates are copy dates, so the split follows the owner's check
|
||||||
|
of the files, not the exact moment each photo was taken. `DSCF*` photos carry a camera date of 2003.)
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# 2011–2012: FireFly (Arduino Mega + SSC-32)
|
||||||
|
|
||||||
|
In June 2011 the robot was rebuilt around an Arduino Mega 2560 and a Lynxmotion SSC-32 servo controller,
|
||||||
|
with a new body and bracket (`../original-frame/`). The Mega does the inverse kinematics and sends
|
||||||
|
`#n Pxxxx Txxx` commands to the SSC-32 over `Serial1` at 38400 baud. The serial banner calls it "FireFly".
|
||||||
|
|
||||||
|
## firmware/
|
||||||
|
|
||||||
|
Each folder is an Arduino sketch (or library); successive versions are successive commits, so
|
||||||
|
`git log -p -- <folder>` shows what changed.
|
||||||
|
|
||||||
|
| Folder | Dates | What |
|
||||||
|
|---|---|---|
|
||||||
|
| `2011-nunchuk/hexapod_oud/` | 2011-10, 2011-12 | Wii Nunchuk input, fixed walking sequences, IK, SSC-32 output. Second commit = `hexapod V2 29-12-11.rar` |
|
||||||
|
| `2012-glcd-remote/hexapod_remote_glcd/` | 2012-03 | handheld remote: graphic LCD, IR receiver and Wii Nunchuk, using the hexapod library |
|
||||||
|
| `2012-ir-radar-gps/hexapodV3/` | 2012-04, 2012-05 | v3 restructure (Data, Converter, IK, Servos classes), RC6 IR remote, ultrasonic sensor on a swivelling head servo, watchdog. `Oud/` is the 2011 code it started from |
|
||||||
|
| `2012-library/hexapod/` | 2012-07, ≤2014-02 | the robot code as an Arduino library "hexapod" v3.1: IK, SSC-32, IR, ultrasonic, GPS (TinyGPS on `Serial2`), 7-segment display. Second commit = the variant kept in the 2014 GitLab archive |
|
||||||
|
| `2012-behaviours-wip/FireFly/` | 2012-07 | start of a behaviour-based rewrite on top of the library; unfinished, does not compile |
|
||||||
|
|
||||||
|
## Other folders
|
||||||
|
|
||||||
|
- `hardware/` – the Arduino Mega 2560 (SparkFun DEV-09949) and SSC-32 photos of June 2011, `Layout Hexapod.jpg`.
|
||||||
|
- `docs/math/` – the IK and body-rotation derivations (`[1]`–`[5]`, the original `wisFORlive*.docx` versions, IK.pdf as `Movement Space Leg.pdf`).
|
||||||
|
- `docs/planning/` – workflow and to-do documents (2012).
|
||||||
|
- `docs/research/` – papers on hexapod workspace and Q-learning, GPS module and TinyGPS manuals.
|
||||||
|
- `docs/concepts/` – inspiration images and early sketches (2008–2012).
|
||||||
|
- `tools/` – two small Windows programs from November 2011 (`hexapod 1.0.exe`, `hexapod Source 0.2.exe`); what they do is not known.
|
||||||
|
- `media/` – photos and videos created after 2 November 2011 20:44:07, incl. `Hexapod 29-11-11.wmv`.
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
# Current Electronics
|
# FireFly electronics (2011–2012)
|
||||||
|
|
||||||
- Arduino Mega 2560
|
- Arduino Mega 2560 (`09949-02.jpg`, SparkFun DEV-09949)
|
||||||
- Lynxmotion ssc32
|
- Lynxmotion SSC-32 servo controller (`ssc-32-500.jpg`), on the Mega's `Serial1`
|
||||||
- todo: add servos, battery, bec
|
- 18 leg servos on SSC-32 channels 0–8 and 16–24, a head servo on channel 9 with an ultrasonic sensor (2012)
|
||||||
|
- IR receiver on pin 5, GPS on `Serial2` (2012)
|
||||||
|
- `Layout Hexapod.jpg`: layout sketch (April 2012)
|
||||||
|
- still to document (2016 note): servos, battery, BEC
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# 2012–2014: simulation on the PC
|
||||||
|
|
||||||
|
- `ik-visualiser-vs/` – Visual Studio 2012 (C++, Win32 GDI) app that draws the leg inverse kinematics
|
||||||
|
(Oct–Nov 2012). The project file is still called `Catmull-Rom app.vcxproj`. A built `Debug/Hexapod app.exe` is included.
|
||||||
|
- `processing-3d/` – Processing 2.2.1 3D simulator of the whole robot (October 2014): IK per leg (`FootClass`),
|
||||||
|
body rotation and translation (`HexapodClass`). Tags `processing-rar-1` … `processing-rar-4` are the four
|
||||||
|
archived versions. Its classes were later ported to Arduino, see `../2016-ssc32-processing-port/`.
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
# Visualisation of the leg movement.
|
# Leg IK visualiser (Visual Studio 2012)
|
||||||
|
|
||||||
connected with:
|
Win32/GDI app that visualises the leg movement computed by the inverse kinematics (`InverseKinemetics.cpp`,
|
||||||
- http://gitlab.mangavalk.com/mangavalk/Hexapod-Archief
|
`Leg.cpp`). Open `Hexapod.sln` in Visual Studio. `Debug/Hexapod app.exe` is the last build.
|
||||||
- http://gitlab.mangavalk.com/mangavalk/Hexapod
|
|
||||||
@@ -1,26 +1,26 @@
|
|||||||
# Hexapod – Processing simulator
|
# Hexapod – Processing simulator
|
||||||
|
|
||||||
A 3D simulator for the hexapod robot's leg kinematics, written in [Processing](https://processing.org/) (Java mode, 2.x).
|
A 3D simulator for the hexapod robot's leg kinematics, written in [Processing](https://processing.org/) (Java mode, 2.x).
|
||||||
It draws the body and six legs, solves the inverse kinematics per leg (`FootClass`) and animates body rotation
|
It draws the body and six legs, solves the inverse kinematics per leg (`FootClass`) and animates body rotation
|
||||||
and translation (`HexapodClass`), cycling through a few camera views.
|
and translation (`HexapodClass`), cycling through a few camera views.
|
||||||
|
|
||||||
The same `FootClass` / `HexapodClass` / `CustomTimer` design was later ported to the Arduino firmware in the
|
The same `FootClass` / `HexapodClass` / `CustomTimer` design was later ported to the Arduino firmware in
|
||||||
[Hexapod/hexapod](https://mangavalk.com/Hexapod/hexapod) repository (`Hexapod_NEW`).
|
`../../2016-ssc32-processing-port/Hexapod_NEW/`.
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
Open `hexapod/hexapod.pde` in the Processing IDE and press Run. The sketch folder must stay named `hexapod`.
|
Open `hexapod/hexapod.pde` in the Processing IDE and press Run. The sketch folder must stay named `hexapod`.
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
This repository was rebuilt in 2026 from old archives. Each archive became one commit, dated by its newest file:
|
This folder was rebuilt in 2026 from old archives. Each archive became one commit, dated by its newest file:
|
||||||
|
|
||||||
| Tag | Source archive | Date |
|
| Tag | Source archive | Date |
|
||||||
|---------|-------------------|------------------|
|
|--------------------|-------------------|------------------|
|
||||||
| `rar-1` | `Hexapod 1.rar` | 2014-10-06 14:30 |
|
| `processing-rar-1` | `Hexapod 1.rar` | 2014-10-06 14:30 |
|
||||||
| `rar-2` | `hexapod 2.rar` | 2014-10-06 22:39 |
|
| `processing-rar-2` | `hexapod 2.rar` | 2014-10-06 22:39 |
|
||||||
| `rar-3` | `hexapod 3.rar` | 2014-10-12 16:17 |
|
| `processing-rar-3` | `hexapod 3.rar` | 2014-10-12 16:17 |
|
||||||
| `rar-4` | `hexapod 4.rar` | 2014-10-13 00:49 |
|
| `processing-rar-4` | `hexapod 4.rar` | 2014-10-13 00:49 |
|
||||||
|
|
||||||
The commit after `rar-4` is the last unarchived sketch folder; its real date is unknown (file dates were lost in a
|
The commit after `rar-4` is the last unarchived sketch folder; its real date is unknown (file dates were lost in a
|
||||||
2016-11-14 copy), so it carries that date.
|
2016-11-14 copy), so it carries that date.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# ≤ 2014: IK core with a task queue
|
||||||
|
|
||||||
|
`HexapodRobot/` ("Version 1") restructures the robot code around a `Hexapod` class with a task pipeline
|
||||||
|
(`QueueList`) and the leg inverse kinematics. It has no servo output yet. It was in the first commit of the
|
||||||
|
GitLab repo `Hexapod` (February 2014), so it was written before then. Servo pulse ranges are the same as FireFly's.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# ~2016–2018: Processing simulator ported to Arduino, SSC-32 again
|
||||||
|
|
||||||
|
`Hexapod_NEW/` is the Processing simulator's `FootClass` / `HexapodClass` / `CustomTimer` design
|
||||||
|
(`../2012-simulation/processing-3d/`) ported to Arduino. It computes the legs on the board and sends
|
||||||
|
`#n Pxxxx` commands to the SSC-32 over `Serial1` at 115200 baud. The exact date is unknown: after the 2014
|
||||||
|
simulator and before the 2018 Unity simulation.
|
||||||
@@ -1 +1,12 @@
|
|||||||
Hexapod
|
# 2018–2023: Unity simulation that drives the robot
|
||||||
|
|
||||||
|
Unity project (last opened in Unity 2021.3) that computes the walking gait on the PC and sends the servo
|
||||||
|
positions to the real robot:
|
||||||
|
|
||||||
|
- **2018** – straight to the SSC-32 over serial (`Assets/Serial/Serial2.cs`, COM7, 115200).
|
||||||
|
- **2019 onwards** – to the Teensy remote over USB (`Serial.cs`, COM4, 250000: 18 servo bytes + checksum +
|
||||||
|
`0xFE 0xFF`), which forwards them by radio to the Teensy on the robot (`../2019-teensy-nrf24/`).
|
||||||
|
- 2019 "new design", 2022 joystick control, 2023 Unity upgrade.
|
||||||
|
|
||||||
|
Its scripts (`Foot.cs`, `Leg.cs`, `Walk.cs`) became the starting point of the simulation in
|
||||||
|
`../2026-current/Hexapod_Simulation_Unity/`.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# 2019–2022: Teensy robot and Teensy remote
|
||||||
|
|
||||||
|
The SSC-32 was replaced by a Teensy 3.6 on the robot that drives the 18 servos itself, and a second Teensy
|
||||||
|
became the handheld remote. They talk over nRF24L01 (RF24Network, channel 90). The robot has no IK of its own:
|
||||||
|
it plays the servo angles it receives, which come from the Unity simulation (`../2018-unity-sim/`) through the
|
||||||
|
remote's USB passthrough, or from the remote's sliders.
|
||||||
|
|
||||||
|
| Folder | What |
|
||||||
|
|---|---|
|
||||||
|
| `Hexapod_Teensy/` | robot: PWMServo on 18 pins, per-servo ranges and trims (`config.h`), MPU6050, nRF24 (CE 39, CSN 15, SCK 14) |
|
||||||
|
| `remote/` | remote: Nextion screen, 6 joystick axes with EEPROM calibration, MPU6050, nRF24 (CE 9, CSN 10), USB passthrough at 250000 |
|
||||||
|
| `remote-nextion/` | `remote.HMI`, the Nextion Editor design (6 pages: servo monitor, upload screen) |
|
||||||
|
| `remote-case/` | 3D-print files of the remote case and bezel, an Arduino Mega cover plate, a font |
|
||||||
|
| `tests/` | May 2019 bring-up sketches: SSC-32 command emulator (first step to replacing the SSC-32), nRF24 and MPU6050 tests with the robot's pins |
|
||||||
|
|
||||||
|
Its hardware facts (pins, ranges, trims) were carried over into `../2026-current/robot/Config.h`.
|
||||||
@@ -21,12 +21,12 @@ This folder is `2026-current/` inside the `hexapod-robot` repo. The older genera
|
|||||||
(paths below are relative to this folder) and are the owner's reference material:
|
(paths below are relative to this folder) and are the owner's reference material:
|
||||||
|
|
||||||
```
|
```
|
||||||
../2019-teensy-nrf24/Hexapod_Teensy/ old robot sketch: servo passthrough only, no IK - see "Old robot sketch" below
|
../2019-teensy-nrf24/Hexapod_Teensy/ old robot sketch: servo passthrough only, no IK - see "Old robot sketch" below
|
||||||
../2019-teensy-nrf24/remote/ old remote sketch
|
../2019-teensy-nrf24/remote/ old remote sketch
|
||||||
../2019-teensy-nrf24/remote-nextion/ remote.HMI = old Nextion UI, 6 pages
|
../2019-teensy-nrf24/remote-nextion/ remote.HMI = old Nextion UI, 6 pages
|
||||||
../2016-ssc32-processing-port/Hexapod_NEW/, older generations with their own IK, driving an external
|
../2016-ssc32-processing-port/Hexapod_NEW/ older generations with their own IK, driving an external
|
||||||
../2014-ik-core-task-queue/HexapodRobot/ SSC-32-style servo controller
|
../2014-ik-core-task-queue/HexapodRobot/ SSC-32-style servo controller
|
||||||
../README.md timeline of every generation since 2009
|
../README.md timeline of every generation since 2009
|
||||||
```
|
```
|
||||||
|
|
||||||
PlatformIO, one `platformio.ini`, two environments:
|
PlatformIO, one `platformio.ini`, two environments:
|
||||||
@@ -336,7 +336,7 @@ Robot (`robot/README.md` has detail):
|
|||||||
960–2100 µs femur over 0–180°), which corroborates the ≈6.7 µs/° femur
|
960–2100 µs femur over 0–180°), which corroborates the ≈6.7 µs/° femur
|
||||||
in `SERVOS`.
|
in `SERVOS`.
|
||||||
- **Links:** femur 10, tibia 15 (cm), with no coxa length in that IK.
|
- **Links:** femur 10, tibia 15 (cm), with no coxa length in that IK.
|
||||||
- **Hip layout comment in `../2016-ssc32-processing-port/Hexapod_NEW/Hexapod_NEW/HexapodClass.h`:** width 9.5 cm
|
- **Hip layout comment in `../2016-ssc32-processing-port/Hexapod_NEW/HexapodClass.h`:** width 9.5 cm
|
||||||
(front/rear) and 14 cm (middle), 10 cm front-to-middle-to-rear. The
|
(front/rear) and 14 cm (middle), 10 cm front-to-middle-to-rear. The
|
||||||
Unity model has 10 / 13 / 10. Whichever chassis is current, measure
|
Unity model has 10 / 13 / 10. Whichever chassis is current, measure
|
||||||
before trusting `LEG_MOUNT_*`.
|
before trusting `LEG_MOUNT_*`.
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Hexapod robot repo
|
||||||
|
|
||||||
|
- The robot that is being worked on is in `2026-current/`. Read `2026-current/CLAUDE.md` before changing
|
||||||
|
anything there, and run its tools (PlatformIO, `sim/build.ps1`, Unity) from that folder.
|
||||||
|
- All other folders are history: earlier generations of the robot, named after the year they started
|
||||||
|
(see `README.md` for the timeline). Treat them as read-only reference material.
|
||||||
|
- Binaries go through Git LFS (`.gitattributes`). Line endings are never converted (`* -text`), so keep
|
||||||
|
files as they are.
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Hexapod robot
|
||||||
|
|
||||||
|
Everything about my six-legged walking robot, from the first FPGA-driven version in 2009 to the
|
||||||
|
current Teensy robot with its firmware-in-the-loop Unity simulation. Each generation has its own folder,
|
||||||
|
named after the year it started, with its firmware, simulation, hardware, documents and photos together.
|
||||||
|
|
||||||
|
**Working on the robot now? Go to [`2026-current/`](2026-current/).** Everything else is history.
|
||||||
|
|
||||||
|
## Timeline
|
||||||
|
|
||||||
|
| Folder | When | Hardware | What it did |
|
||||||
|
|---|---|---|---|
|
||||||
|
| [`original-frame/`](original-frame/) | 2009–2023 | own leg and body design (DXF/DWG) | the frame every version up to 2023 was built on (legs 2009, body and bracket 2011) |
|
||||||
|
| [`2009-fpga/`](2009-fpga/) | 2009–2011 | FPGA | the first version. The code is lost; only photos and videos are left |
|
||||||
|
| [`2011-firefly-mega-ssc32/`](2011-firefly-mega-ssc32/) | 2011–2012 | Arduino Mega 2560 + Lynxmotion SSC-32 | "FireFly": walking sequences with a Wii Nunchuk, later IR remote, ultrasonic radar head and GPS |
|
||||||
|
| [`2012-simulation/`](2012-simulation/) | 2012–2014 | PC | a Visual Studio leg-IK visualiser (2012) and a Processing 3D simulator (2014) |
|
||||||
|
| [`2014-ik-core-task-queue/`](2014-ik-core-task-queue/) | ≤ Feb 2014 | Arduino | a rewrite of the IK core around a task queue, without servo output yet |
|
||||||
|
| [`2016-ssc32-processing-port/`](2016-ssc32-processing-port/) | ~2016–2018 | Arduino + SSC-32 | the Processing simulator's classes ported to Arduino, driving the SSC-32 again |
|
||||||
|
| [`2018-unity-sim/`](2018-unity-sim/) | 2018–2023 | PC + SSC-32, later the Teensy | Unity computes the walking and drives the robot: first the SSC-32 over serial, from 2019 through the remote |
|
||||||
|
| [`2019-teensy-nrf24/`](2019-teensy-nrf24/) | 2019–2022 | Teensy 3.6 on the robot (replaces the SSC-32), Teensy remote with Nextion screen, nRF24L01 | servo passthrough: Unity → remote over USB → radio → robot |
|
||||||
|
| [`2026-current/`](2026-current/) | 2026– | Teensy 3.6 robot, Teensy 4.1 remote, Fusion 360 designed parts | IK, gait, body pose and IMU stabilisation on the robot; the unchanged firmware also runs inside Unity |
|
||||||
|
|
||||||
|
## Repository notes
|
||||||
|
|
||||||
|
- Photos, videos, PDFs, Office files, CAD and other binaries are stored with **Git LFS** (see `.gitattributes`).
|
||||||
|
A normal clone downloads them; set `GIT_LFS_SKIP_SMUDGE=1` to clone only the code.
|
||||||
|
- Files are stored exactly as they were (no line-ending conversion), so old code is byte-for-byte the original.
|
||||||
|
- This repo was put together in October 2026 from the Gitea repos `Hexapod_2027`, `Hexapod`, `Hexapod-App`,
|
||||||
|
`Hexapod-processing`, `Hexapod_Simulation_Unity`, `remote` and `Hexapod-Archief`, the NAS folder
|
||||||
|
`Projecten\Electronics\Hexapod`, the Arduino sketchbook and the Fusion 360 exports. The history of every repo
|
||||||
|
except `Hexapod-Archief` is kept (its own history only held the same photos and videos again). Old code
|
||||||
|
versions that only existed as rar files or backup folders are dated commits.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Original frame (2009–2023)
|
||||||
|
|
||||||
|
The mechanical design every version up to 2023 was built on. The 2026 robot has a new design, see
|
||||||
|
`../2026-current/hardware/fusion360/`.
|
||||||
|
|
||||||
|
| File | Date | What |
|
||||||
|
|---|---|---|
|
||||||
|
| `poot.dxf` | 2009-10 | leg ("poot") |
|
||||||
|
| `hexapod been.dxf` | 2009-12 | leg ("been") |
|
||||||
|
| `poot2.dwg` | 2011-04 | leg, second version |
|
||||||
|
| `body.dxf`, `Body.jpg` | 2011-07 | body plate, for the Arduino Mega + SSC-32 rebuild |
|
||||||
|
| `bracket.dxf` | 2011-07 | servo bracket |
|
||||||
Reference in new issue
Block a user