The goal of this project is to create a spherical chessboard where moves are played by a small robotic arm moving along a circular track.
The robotic arm will execute the moves made by players in an online chess game.

A spherical chessboard where a robotic arm plays moves from an online game.
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
The goal of this project is to create a spherical chessboard where moves are played by a small robotic arm moving along a circular track.
The robotic arm will execute the moves made by players in an online chess game.
CAPTURE ZONE N°2 - LASER CUT.svgQuantity : 1 Material : 3mm plywoodsvg+xml - 97.30 kB - 05/10/2025 at 16:41 |
|
|
BASE BOTTOM AND CAPTURE ZONE N°1 - LASER CUT.svgQuantity : 1 Material : 5mm plywoodsvg+xml - 112.21 kB - 05/10/2025 at 16:40 |
|
|
BASE - LASER CUT.svgQuantity : 1 Material : 5mm plywoodsvg+xml - 82.14 kB - 05/10/2025 at 16:40 |
|
|
RAIL GEAR - LASER CUT.svgQuantity : 1 Material : 5+mm Acrylic (HIGHLY RECOMMENDED) or plywoodsvg+xml - 135.08 kB - 05/10/2025 at 16:32 |
|
|
RAIL - LASER CUT.svgQuantity : 1 Material : 5mm plywoodsvg+xml - 53.51 kB - 05/10/2025 at 16:24 |
|
|
With the mechanical and electronic parts assembled, it was time to tackle the brain of the system—the programming. This is where everything comes together: motors, servos, sensors, and user interactions.
We started by defining the main behaviors the system needed to perform:
Homing sequences for all actuators
Normal and capture piece movements
Communication with the Nextion touchscreen
Manual control using the physical controller (two-button interface)
The whole program was written for an ESP32 board using the Arduino framework. Because we had networking code running in the background, it was essential that all motion routines were fully non-blocking.
We structured the code around multiple state machines to control:
The cart
The gripper system
The capture system
The chessboard rotation
The manual control interface
The Nextion screen
We started by writing a simple program to test the controller. Using the two-button interface, we verified that we could successfully send signals to the actuators and confirm that everything was functioning correctly—both electrically and mechanically.
Once that was confirmed, we developed a second program that allowed us to control all actuators via serial commands from the computer. This program was crucial: it helped us identify and fine-tune the exact positions and angles each motor needed to reach every square on the chessboard and each slot in the capture zone.
Using the Nextion Editor, we built the graphical interface displayed on the touchscreen. The interface allowed us to:
Trigger homing procedures
Display system status
Manual control
Here are some screenshots of the custom interfaces we made:
By the end of development, the full codebase for the motion control system totaled over 2000 lines of code. It includes:
With all mechanical parts assembled, we moved on to the electronics.
We started by laying out all key components:
3 Stepper motors: one for the sphere rotation, one for the curved rail cart, and one for the rotating capture zone
1 Linear actuator: to extend and retract the gripper
2 Servos: one for rotating the actuator and one for opening/closing the gripper
3 limit switches: to detect home positions and aid with calibration
ESP32: our main microcontroller handling motion sequences and interface control
Motor drivers: 1 DRV8871, 1 Makerbase MKS SERVO42D, 2 Makerbase MKS SERVO42C
Power supply : 12V power supply, 5V buck converter
1 Nextion
We then went on to make the circuit diagram
We also planed to add integrated: a custom controller composed of two push buttons, which allows us to jog the orb manually.
![]() | ![]() |
Another interesting part appears in the top left corner of the diagram—the relay connected to the actuator. This section of the circuit is our workaround to detect when the linear actuator is fully retracted. Since the actuator includes an internal limit switch , we decided to solder wires directly to the actuator motor terminals. This setup lets us monitor the voltage across the motor and use a relay to detect when the current drops—indicating that the actuator has hit its internal stop.
Then, we laid out all the components across multiple perf boards to visualize how we wanted to organize the circuit layout.
Once we were satisfied with the arrangement, we began the soldering process.
Another major task was creating the cable bundle that connects the main circuit to the moving cart on the rail. To do this, we positioned the cart at its furthest point and measured out the cable lengths accordingly to ensure proper reach.
To allow for easy disassembly and maintenance in the future, we decided not to solder the cart’s cables directly to the circuit. Instead, we used a 16-pin connector like this one:
We then connected the cart's wires to the male connector and matched them with corresponding wires going to the circuit on the female connector. This was the final cable assembly:
![]() | ![]() |
Finally, we installed all the electronics into the base of the system—and with that, the electronics assembly was complete!
With all wooden and 3D-printed components ready, we entered the assembly phase—where each subcomponent of the robotic chessboard came together to form a fully integrated system.
We began by assembling the spherical chessboard. The four 3D-printed dome part were aligned using built-in hinges (and some epoxy glue).Each square was then inserted into its designated slot on the sphere, forming the playable surface. Magnets were added to each square to allow chess pieces to attach.
![]() | ![]() |
![]() | ![]() |
The cart subassembly was then put together. All components—stepper motor, linear actuator, rotating servo, gripper servo, and gripper—were integrated into the 3D-printed cart body.
Next, we assembled the curved rail, made of multiple laser-cut plywood layers:
These layers were aligned and fastened together using M5 screws. The 3D-printed top and bottom rail supports were then bolted in place using M8 bolts, completing the rail structure.
Finally, we mounted the cart onto the rail and the bottom support to the wooden base.
This phase marked a key milestone, as the physical form of our robotic chessboard was now complete. The next step will be wiring all components and beginning system integration, programming and finally testing.
After completing the laser cutting of all wooden parts, we moved to 3D printing.
We printed :
The four part of the spherical chessboard
The curved rail supports (top and bottom)
The squares that insert into the chessboard
The cart body
The gripper assembly
We used PETG for most structural components and TPU for the gripper
All the part were printed with a Bambulaba1 mini (bed size of 180mm x 180 mm)
Now that our full design was completed in CAD, it was time to start manufacturing each part.
We began by laser cutting all the wooden components. Our design was optimized for 5 mm plywood for almost all wooden parts (with one exception). In total, we used:
Three 80 cm × 60 cm sheets of 5 mm plywood
One 50 cm × 50 cm sheet of 3 mm plywood
Here is how the sheets were arranged for cutting:
5mm plywood![]() | 5mm plywood![]() |
3mm plywood![]() | 5mm plywood![]() |
And here is the cutting process:
Later, however, we encountered a problem with the carriage's plywood gear: the gear teeth kept breaking off, so we instead opted for 6 mm acrylic for the gear rail.
Last thing to design on our list, the base unit. It serve at as a stand for the rest of the parts, and is the command center for the entire spherical chess board, housing the electronic.
The core of the base is a custom-designed box. This forms the main cavity for all the internal components.
It has holes for connecting the cart’s cables, holes for the Nextion display, a support for the main board, supports at each of the four corners of the base, and a central support to hold the wooden plate and the hole globe and rail that will be placed on top.
This takes the form of a large, gear-like structure. it allows for discrete slots for each piece.
It's directly driven by a stepper motor. The stepper will rotate the gear to present an empty slot for the next captured piece. The connection to the stepper shaft is via a custom press-fit adapter.
There's a dedicated cutout on the base for the main cart connector. This will be a 16 pins connector where we will use only 14 that carries all signals and power to the cart that moves the pieces on the sphere.
This allows the chariot assembly to be easily disconnected for transport or maintenance.
The Nextion display will be housed in its own small enclosure, which then slots into a dedicated opening on the base.
An essential sub-assembly of the entire system is the cart.
It needs to house four actuators, remain compact and precise, while smoothly moving along the curved rail and constantly counteracting gravity.
Components of the Cart:
1 stepper motor — to drive the cart along the rail
1 linear actuator — to extend and retract the gripper
1 servo motor — to rotate the linear actuator
1 servo motor — to open and close the gripper
We use those cheap ender 3 wheels with 8mm column for our cart, the rest is 3d printed.
![]() | ![]() |
For the design of the cart body, we drew inspiration from these two videos:
This was our initial iteration:
![]() | ![]() |
To validate this, we also 3D printed a small section of the rail:
The tests confirmed that the cart could indeed move properly along the track
Building on our first test, we developed a second version:
![]() | ![]() |
We focused on figuring out a reliable way to rotate the linear actuator.
Our first attempt was to use a gear system, where a servo drives a gear that in turn rotates a second gear connected to the actuator.
However, we were not fully satisfied with this solution. It felt too complex and introduced too much potential for failure.
We then developed a third version of the cart:
![]() | ![]() |
Mechanically, this iteration was similar to the second one, but we aimed to simplify the actuator rotation.
Still, the gear-based rotation system felt overly complicated.
In our final design:
![]() | ![]() |
We were finally satisfied with this design and decided to move forward with it.
Designing the gripper was also a crucial step.
A poorly performing gripper would make the entire machine unreliable, as it must securely grab and release the chess pieces.
We based our initial concept on this very compact design from a reference video:
Here’s our own CAD version of the gripper:
![]() | ![]() |
It features a razor-like shape on each side to improve grip.
We plan to 3D print the gripper in TPU to maximize adherence and flexibility.
The gripper assembly includes a mounting interface at the bottom, designed to connect directly to the linear actuator.
Here is the complete cart assembly :
And here’s the cart sub-assembly integrated and moving within the final full assembly :
The next major component we tackled was the curved rail.
Due to its large size and the need for durability, we chose to laser-cut it from plywood/acrylic instead of 3D printing it.
Dimensions:
Outer Diameter (OD): 560 mm
Inner Diameter (ID): 450 mm
The rail is composed of four layers, all secured together with M5 screws:
Two outer planks — 5 mm thickness each
Inner plank — 10 mm thick, this is the guide surface where the cart wheels will slide
External gear layer — 5 mm thick, this gear will be driven by the cart to move along the curve
The design of this driving system is inspired by this mechanism:
To hold the rail we designed those two piece :
![]() | ![]() |
The rail "Feet" is a very important part, it house the chessboard stepper motor, the cart and the orb limit switch.
It connects to the rail using a m8 bolt
As we're using stepper motors to move the cart and chessboard, we should be able to achieve a high degree of accuracy when moving to a position, but one problem with stepper motors is that, being an open-loop system, they wouldn't know, for example, where they are at start-up.
To solve this problem, we used limit switches in the path of each motor so that they could have a base (reference) position.
Here's the limit switch for the chessboard and the cart :
CHESSBOARD ![]() | CART![]() |
The Top part help to complete the assembly
It also connects to the rail using a m8 bolt
Here is the final assembly showing the curved rail, feet and top parts, stepper motor, the spherical chessboard, and the chess pieces:
Next thing on our list are the chess pieces, the second most important element of a chess game.
We needed to model each piece: King, Queen, Rook, Knight, Bishop, and Pawn. We decided on a height of approximately 40mm ± 20mm, with each piece featuring a circular base of around 20mm in diameter, each piece also need to have a similar shape and profile to ensure the to be designed gripper will be able to reliably grasp and manipulate them.
Each piece also have a hole of 12mm at the bottom to accommodate a magnet.
Here are some of our design for the chess piece:
| KING | QUEEN | KNIGHT |
![]() | ![]() | ![]() |
| PAWN | BISHOP | ROOK |
![]() | ![]() | ![]() |
Now, let's talk about how the chess pieces will stay attached to the board. As hinted in previous logs, the pieces will be held in place using magnets. Magnets allow the pieces to self-center when placed on the board.
During planning, we realized that the project would require a large number of magnets—128 in total:
To meet our needs, we chose 12mm x 3mm round neodymium magnets with a screw hole in the center, allowing for secure attachment to the pieces and board.
The hole in the middle of the magnet allows us to attach it to the chess piece using a screw, avoiding the need for glue.
After choosing the magnets, we also needed to determine the optimal thickness of plastic between the sphere’s embedded magnets and the pieces' magnets when placed on the board. Since neodymium magnets are very strong, allowing them to directly touch would make separating the pieces extremely difficult.
Our goal was then to find a thickness where the pieces remain attached even during sudden movements—while still allowing smooth piece removal.
To achieve this, we built a small test bench:
The test bench featured holes with a gradually increasing plastic thickness, ranging from 1mm to 5mm
To measure the force required to separate each piece, we added a ring to a chess piece and used a luggage scale to pull it off the board. This allowed us to find out how much force was needed at each thickness.
In addition to measuring force, we also tested whether the pieces remained attached under two key conditions:
After conducting our tests, we obtained the following results:
(The infamous inverse square law is back at it again, see our log on the small hydraulic arm •_• )
Based on the data, we decided that a 3mm plastic thickness between the piece magnet and the chessboard square provided the best balance. It ensured that:
With this decision, we updated the sphere design accordingly to incorporate the 3mm thickness.
After having an ideao for the design, we began by working on modeling.
Starting with most crucial part: the chessboard, as it serves as the foundation for dimensioning other parts, such as the rail, gripper, and pieces.
According to our design, the spherical chessboard has a diameter of 20 cm.
For inspiration, as mentioned in our first log, we looked at Orb Chess by NKD Puzzle :
We first began modeling the spherical chessboard :
For ease of manufacturing, since the chessboard will be 3D printed, we designed it to be assembled from identical parts using m3 screws or glue.
Since the sphere will be mounted on a threaded rod, we also manufactured this part to make the coupling.
Next, the squares of the chessboard
They are made to be inserted into the chessboard like a puzzle.
The squares haves holes for inserting magnets, this is how the pieces will be able to on the spherical chessboard.
Here is the fully assembled spherical chessboard.
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates