A six-legged robot named "Eclipse." The project started in early 2024 while I was doing my internship. I independently design, fabricate, simulate, and program the robot. 

Detailed report see here

Demo Video

Gallery

Design Process

A kinematic simulation using a simplified "stick model" was conducted in MATLAB at the early stage.

A mechanical platform was modeled in SOLIDWORKS

Each leg is outfitted with three joints, with each joint driven by a dedicated DC servo motor, giving the entire robot a total of 18 degrees of freedom.

Motor 1 controls the forward and backward swing (comparable to a human thigh), while Motors 2 and 3 manage the leg flexion and extension (comparable to a human calf and ankle).

Motion Simulation

Kinematic and dynamic simulations were conducted in MATLAB Simscape Multibody. Simulated motion patterns included planar movements, body height adjustments, body swings, and jumping in place. 

Hardware and assembly

All parts were printed by the FDM 3D printer with PLA. 

One of the key highlights of the design is the implementation of a dual power supply system. To meet the high current demands of the 18 servos during motor starts, a 12V lithium battery is stepped down to 5V using a DC-DC buck converter to power all the servos. Meanwhile, other peripherals such as the MCU and gyroscope are powered by four AA batteries.

To improve hardware reliability, especially for the dual-power module (high current, high power), a 4-layer PCB was designed to wire all the peripherals. (Link to the PCB)

PCB layers (prior copper pour)
(left to right: Vcc layer, GND layer, Signal layer 1, Signal layer 2)

The internal structure of the PCB is divided into a power layer, a GND layer, and two signal layers. The power layer features a main power bus with a trace width of 270 mil, which splits into two 130 mil branches dedicated to powering the 18 motors. At its input, a 0.6F supercapacitor is installed in parallel with a 1000µF capacitor to mitigate voltage drops that may occur during frequent motor operation.

The GND layer is routed with 270 mil traces to connect the grounds of all components, employing a star grounding method to minimize potential parasitic effects. The signal layers use trace widths ranging from 14 to 40 mil. Due to the large number of signal traces, the signal routing is split into two layers to avoid crosstalk. The control signals for the 18 motors are connected to the Arduino Mega’s pins 22 through 45 (with the PCB designed to support up to 24 motors, providing expansion possibilities for the future). The pins for the Bluetooth and gyroscope modules are also routed on these signal layers. 

PCB top view

Robot electronics

Control and Testing

At each time step, the robot generates the trajectory of the leg-lifting motion (from the point where the leg is lifted to the point where it lands) and transfer this as the inputs into the inverse kinematic equations to determine the angle for each motor. After passing through a Kalman filter, these angles are deployed to each motor. 

The robot’s walking motion is controlled by a joystick, with the joystick input value denoted asu(t).The following diagram shows the movement trajectories of the robot’s leg end effectors for different u(t) as the input (with x representing the horizontal direction and z representing the vertical direction, under the local reference frame for each leg). 

The robot has six legs, which are divided into two groups during walking. Group A includes legs 1, 3, and 5, while Group B includes legs 2, 4, and 6. When Group A is lifted, Group B is on the ground, maintaining a fixed phase offset between the two groups to ensure the robot’s balance. Generated trajectories for Group A (in red) and Group B (in blue) are shown below.

(when u(t) is a sine wave, shown as the red line on the top right figure)

(when u(t) increases linearly with respect to the time, shown as the red line on the top right figure)

The robot uses a cubic polynomial for trajectory generation. The step size can be dynamically adjusted. As shown in above figures, larger the value of u(t), the greater the step. (details see the report)

The robot is also equipped with a MPU6050 gyroscope module. The MPU6050 IMU provides raw accelerometer data that is used to calculate the robot's roll and pitch angles, thus enables the robot to balance its body during walking on uneven terrain.