loading

This biped robot was 3D printed.

4 low cost servos (SG90 or SG91) per leg are used to control hip, knee and ankle pith and ankle roll.

The kinematic commands are written to be simply implemented in an arduino (mini). Few parameters are used to control the step length and the cadence.

These parameters can be modified using a cheap BT module (HC06).

Step 1: Mechanics

Simply print (or modify the iges files).

Adjust the position to the servo as follow :

  • Ankle roll : near the middle of the range of motion (90°).
  • Ankle pitch : near the middle or to allow more dorsiflexion (used during the swing phase). I have set this to 80° on mine (so you have 80° of plantiflexion (the foot goes to the floor) and 100° in dorsiflexion.
  • Knee pitch : near the full extension so 20° to avoid mechanical limits.
  • Hip pitch : near the middle, but you can allow more hip flexion than extension.

Step 2: Electronics

One two cell batterie (7.2V) is used.

The power for the servo is done by two LM7805 voltage regulator (one per limb).

The brain is a arduino mini clone.

One MPU6050 is not used for the moment (for future release)

And i modify the parameters thanks to a HC06 BT module.

Step 3: Walking !!!!

Frontal plane

To achieve a correct walking, first focus on the frontal plane.

It could be very simple,

T is a variable time between each loop,

KML is the amplitude of the ankle roll mouvement (between 5 and 15°), it depends on the location of the center of mass of your robot and feet with.

FD and FG are the zero position of the foot roll.

t=t+1;
if (t>100) {t=0;}

myservo7.write(FG-KML*sin(2*3.14*t/100)); // left foot

myservo8.write(FD+KML*sin(2*3.14*t/100)); // right foot

delay (T);

Yes it's just a sinus.

Adjust T and KML to allow the robot to lift the feet of the ground.

If KML is to low it will not be possible, if it is to high, he will fall.

Sagittal plane

On the picture, you can see the position of the joints according to the gait cycle.

The basic idea is to store the joints position in tables.

two parametres are used to define the amplitude of the movement.

KST is used for the hip

and KSW for the knee during swing.

The movement of the joint are simply written using linear function according to the % of the gait cycle.

void setkin(int FHD[],int FKD[],int FHG[],int FKG[],int KST,int KSW)
{

for (int i=0; i <= 5; i++) {

FHD[i]=-KST; // Hip flexion Right

FKD[i]=0; // Knee flexion Right }

for (int i=6; i <= 45; i++) {

FHD[i]=KST*i/20.0-5*KST/4.0;

FKD[i]=0; } //

for (int i=46; i <= 55; i++) {

FHD[i]=KST;

FKD[i]=0; } //

for (int i=56; i <= 80; i++) {

FHD[i]=-KST*i/10.0+65*KST/10.0;

FKD[i]=KSW*sin((i-55)/40.0*3.14); } //

for (int i=81; i <= 95; i++) {

FHD[i]=-3*KST/2.0;

FKD[i]=KSW*sin((i-55)/40.0*3.14); } // //

for (int i=95; i <= 100; i++) {

FHD[i]=KST*i/10.0-11*KST;

FKD[i]=0; } //

// The second limb is obtained with a time simetry

for (int i=0; i <= 49; i++) {

FHG[i]=FHD[50+i]; // Left hip flexion

FKG[i]=FKD[50+i]; // Left knee flexion }

for (int i=50; i <= 100; i++) {

FHG[i]=FHD[i-50];

FKG[i]=FKD[i-50]; } }

Ankles :

if you just read the picture, ANKLE=-HIP-KNEE

this allow to keep the foot parralel to the ground in the sagital plane.

<p>hello, plz tell me about ur by default positions of ur servoes </p>
ok bro can to provide me the flow chat of ur code becz m not familiar with arduino
alok014 if you want to make s simple walking biped, i have written a walk cycle. Mag me if you want.
<p>I'm interrested too!</p>
<p>It's maybe the hardest part!</p><p>I just adjusted the default position to have the knee in full extension and the center of pass of the robot near the middle of his feet.</p><p>You can push the torso a little bit to evaluate the stability in standing position</p>
in ur code hip flexion is not working for serial communication
<p>can u generate simple walking code only </p><p>plzzzz bro</p>
<p>u r not using i2c but the code is present in arduino file</p>
<p>Further to my comment below, I've got mine working, but I need more lift on the forward leg movement (its dragging its foot forward). I also add a body counter-weight because it wasn't leaning, both feet dragging.</p>
<p>The SD 21 is a good idea!</p><p>I'm currently working on a new version with hip rotation and torso/head and arm.</p><p>You can turn without hip rotation, i will try to add a video of that as soon as possible</p>
<p>My original construction had hip rotation by no lateral ankle. I couldn't work out the self balance until I seen your construction and video, and it made sense. I've ran out of servos at the moment.</p>
<p>Hello,</p><p>I downloaded the igs file and converted into stl which most 3dhubers used. This is one stl file with all the parts combined together including the servo model. They are molded together and are very hard to print separately. Can someone recreate stl files with separate parts as shown in the drawing above. Two separate parts for the Green hips and foot. Three separate parts for the the burgundy knee, shins and ankle. Minus the black servo parts. So 5 stl files total. </p><p>Having an stl file for each part will be the quickest way to get a quote on 3d printing.If someone has 3d printed via the igs file, can you please send me instructions rroquetest@gmail.com</p>
<p>I added the STL files for one leg (the right one), make a symetric print to obtain the other leg</p>
<p>Where did you get the calculations from? I'm working on a similar Biped, however I'm using (trying to) an SD21 Servo board via I2C to a UNO board. So the servo write is diferent.</p><p>I'm using the SD21 because I can add more servos, I also would like to add hip rotation so I can walk in circles. </p>
<p>The calculations came from observations....</p><p>You can find biomechanical studies of gait which gives the hip, knee and ankle mouvement in the sagittal plane. I modified if to obtain similar curves but easily adaptable to arduino.</p><p>Good luck with your project and send some video! </p><p>To achive foot lift, you will have to adjust the time of the frontal cycle and the amplitude of the prono-supination at the ankle.</p>
<p>Can you explain how to connect the servos to arduino ????????? Please tell I really want to make it..........</p>
<p>hello, can you send for me code walking not blutooth? (only walking)</p>
<p>You can use the same code, but use the usb serial port. It will work.</p><p>The BT connection is usefull to avoid cables. </p>
<p>Hello,</p><p>Can someone give instructions on downloading and printing the </p><p>IGES files.igs. Maybe please zip it and convert to stl and repost it here.</p>
<p>Hello,</p><p>Can you please zip the IGES files.igs. I am having problems downloading it.</p><p>What servo did you use (looks like a Hitec model)?</p>
<p>please, full code :(</p>
<p>thanks to help me to improve this code! (Sorry for the delay....)</p><p><a href="https://www.instructables.com/files/orig/FKY/7WFP/IGDIVHTV/FKY7WFPIGDIVHTV.ino" rel="nofollow">ROBONNETV1_0.ino</a></p>
<p>hi,</p><p>I've followed your instructions, but my servo signal interference, i can not fix it</p>
<p>what do you bean by &quot;signal inteference?&quot;</p>
<p>sorry my english is not good.</p><p> I will give an example I set servo1 is turning from 0 to 180 degrees, turning from 180 to 0 servo2 degrees. but when I restart the servo rotate 70 degrees, 50 degrees servo2 rotation, (metrics that's me for example). and 1 time after the servo has turned from what I have installed.</p><p>I hope you understand what I mean: D</p>
<p>thanks to help me to improve this code! (Sorry for the delay....)</p><p><a href="https://www.instructables.com/files/orig/FKY/7WFP/IGDIVHTV/FKY7WFPIGDIVHTV.ino" rel="nofollow">ROBONNETV1_0.ino</a></p>
<p>gud i cant understand ho it is balancing</p>
<p>The sinus command of the ankle in the frontal plane.</p>
<p>Looks like the Gonk Droid from Star Wars. Nice.</p>
So cool!...So confusing 0_o You sir are a genius

About This Instructable

4,589views

104favorites

License:

More by bonnetx:Actuated passive dynamic walker Walking biped (4 servos per leg) 
Add instructable to: