HARP6

2025-08-01

Project repository

Overview

HARP6 or Hexa-Articulated Research Platform is my first step into experimental robotics, aimed at exploring the basics of the topics in detail, from building a simulation, ending at the system integration challenge. I wanted to go through a structured and thought out system engineering task.

Simulation

I started the project in a virtual environment, by developing a simulation of the hexapod. The aim was to implement the inverse kinematics, play around with the definitions of the robot's reference frame to figure out an intuitive API, implement a dynamic gait with speed and gait type control. I've built the entirety in Python, using matplotlib for visualizations.

Fig.1 - Showcase of the simulation


Starting in simulation was came with great benefits, the visualization helped me find so many bugs in inverse kinematics, that without physical hardware (that I didn't have at the time) I wouldnt be able to find. I could also confirm the results visually and use the outputs for unit tests in the IK engine for HARP6.

To account for robot's body RPY I didn't want to derive additional IK equations, so I used an approach of changing the reference frames. In my implementation, the target position of the foot is always defined with respect to the mounting point of the joint. Rotating the body, while keeping the target foot position the same, is eqivalent to rotating the target position of the foot around the anti-parallel axis. So I am just applying additional rotations to the target positions of the robot's feet in order to solve for body RPY.

The robotic platform

Next came the time to build the physical platform. I wanted to use this opportunity to learn technologies I was interested in, but didn't have a good use case for yet, as well as some of the tools from the typical robotics tech stack. This lead me to:


As far as design choices go, I am a big proponent of modularity and this approach fit that preference well. My tasks could be completely separated and only communicate via queues, the IK library could be also compiled for the usual x86_64 for testing on GitLab and integrating the project into ROS2 could give me a convenient way of controlling the platform.

While I already completed a large part of the project there are still things that I need to implement: