I and my friends are planning to build a dog like quadruped robot. We have designed it like MIT Cheetah Mini like legs structure, each leg having 3 Servos, 3rd DOF for rotation. We have calculated inverse kinematics equation for each leg. But I am not able to figure out what our approach should be for programming. We were planning to have trot gait, and to travel on straight path, we planned to find safe distance by each leg and plan next point for each leg on the foot and then just transition legs to that point in trot gait. But still I don't think it will be a great idea. I need to ask what should be our approach to get the walk done smoothly.

• it sounds like you are on the right path already ..... maybe the best course of action is to bring your current plan to completion, then make adjustments to eliminate any undesirable behaviors Mar 8, 2019 at 1:08
• Have you looked at the papers that MIT have published on the subject? Mar 8, 2019 at 2:02
• @sempaiscuba I am unable to find papers which specifically describes programming approach on this topic. Like I didn't find the exact answer which I want! If you know some papers please let me know Mar 8, 2019 at 5:42
• I don't really understand what it is that you want here. You haven't said where you've looked, what you found, and why that wasn't sufficient. For example, typing MIT Cheetah trot gait into Google Scholar gets multiple hits (some describing exactly the process I think you are looking for, actually from the team at MIT who developed the MIT Cheetah). At least some of those papers can be downloaded as PDF files. Read them, then edit your question to say what helped, and (as specifically as possible) what more it is that you need. Mar 8, 2019 at 20:56

First of all, I would implement a simple gait type with static stability. It is the easiest to implement and if you have already figured out the leg inverse kinematics it should bring fast results. Fast in terms of implementation time, the gait itself is slow.

Afterwards you can transition to trot or other gaitn types, but a statically stable one will be the fastest to get running and it will offer you some insights on how to continue with more complex ones.

A good description (incl. code) on how to do this using an arduino can be found here.

I believe you should start from below and up.

First, validate the inverse kinematics for the 4 legs you build. Remember that small mistakes accumulate over time, so it's best to ensure minimum error beforehand.

After that, work on the dynamics of the robot as a whole to ensure the legs stay on path, there should be plenty of articles about quadrupeds on Elsevier and IEEE Xplore, if you have access to these. Even if it's not the same model, they can work as a basis for it.

And for last, use the quadruped dynamics and the legs inverse kinematics to develop the kinematics for the quadruped in general.

As said above, you can use a harness to test the hardware, but it's good practice to simulate first. You can do that on Gazebo, V-Rep, etc.

The walkthrough tutorial for programming a walking dog contains of some simple steps. The first step is to put the dog into a harness. This is a holder which bring the robot into the air and the legs can move freely without loosing the balance. A harness is similar to a hydraulic ramp used for car repair.

The next step is to program a walking gait. Thanks to the harness the motion controller doesn't need to balance the legs but has to move them similar to a computer animation. In it's easiest case the gait pattern is fixed. That means, it contains of gait phases like 1. left-foot up, 2. right-foot middle, 3. right-food down which results into a continuous movement. In this step the robot dog is able to move it's legs in the air because the torso is hold by the harness.

In the third step the idea is to take away the harness. The requirements for the motion controller is higher because now he has to balance the dog. The principle is called model predictive control and contains of a forward model which predicts the balance situation, and a controller which is producing a control action.

Josh Pieper blogged a few detailed notes as he was developing the quad A1. First you'll want to get the balancing right:

Then introduce some gaits and see how fast the beast can get ;-)