EECE 2160 · Embedded Design: Enabling Robotics
Controlling an 18-servo hexapod from the ARM side of a DE1-SoC through memory-mapped I/O. The course supplied the servo driver and a forward tripod gait; I added walking backward, turning left and right in place, and a smoother stand-up sequence so the robot no longer lurches upright.
Tools: C++ · DE1-SoC (Cyclone V SoC FPGA) · memory-mapped I/O · 18 servos
Six legs, three servos each (hip, knee, ankle), driven by the DE1-SoC's FPGA fabric and commanded from a C++ program on the ARM processor through memory-mapped registers (the MMap and ServoMotor classes). The legs are grouped into two tripods (right-front, left-middle, right-back and the mirror set), and walking alternates between them: lift one tripod's knees, swing its hips forward while the other tripod's hips swing back, lower the knees, repeat with the other group. WaitReady() blocks until every servo reports it has finished so the groups never drift out of sync.
f, b, l, r, s) to drive it from the terminal.The gait and timing follow the original forward-walking structure, so the additions are a few dozen lines rather than a rewrite.