@@ -198,9 +198,9 @@ void QuadrupedRobot::body_move_xyz(float dx, float dy, float dz)
198
198
*/
199
199
void QuadrupedRobot::foot_step (int i, float x, float z)
200
200
{
201
- foot_move_xyz (i, 0 , 30 , 0 ); // leg lifting
201
+ foot_move_xyz (i, 0 , 50 , 0 ); // leg lifting
202
202
foot_move_xyz (i, x, 0 , z); // motion forward
203
- foot_move_xyz (i, 0 , -30 , 0 ); // leg placement
203
+ foot_move_xyz (i, 0 , -50 , 0 ); // leg placement
204
204
}
205
205
206
206
void QuadrupedRobot::foot_move_xyz (int i, float dx, float dy, float dz)
@@ -210,7 +210,7 @@ void QuadrupedRobot::foot_move_xyz(int i, float dx, float dy, float dz)
210
210
foot_pos[3 * i + 2 ] += dz;
211
211
inverse_kinematics ();
212
212
servo_write_angs (joint_angs_new, false );
213
- delay (100 );
213
+ delay (200 );
214
214
}
215
215
216
216
@@ -227,36 +227,36 @@ void QuadrupedRobot::inverse_kinematics()
227
227
joint_angs_new[1 ] = alfa_front (foot_pos[0 ], joint_angs_new[2 ], vlegs_len[0 ]);
228
228
229
229
// FR 3, 4, 5
230
- joint_angs_new[3 ] = gamma_right (foot_pos[4 ], foot_pos[5 ]);
231
- vlegs_len[1 ] = vleg_right (foot_pos[3 ], foot_pos[4 ], joint_angs_new[3 ]);
232
- joint_angs_new[5 ] = beta_front (vlegs_len[1 ]);
233
- joint_angs_new[4 ] = alfa_front (foot_pos[3 ], joint_angs_new[5 ], vlegs_len[1 ]);
234
-
235
- // RR 6, 7, 8
236
- joint_angs_new[6 ] = gamma_right (foot_pos[7 ], foot_pos[8 ]);
237
- vlegs_len[2 ] = vleg_right (foot_pos[6 ], foot_pos[7 ], joint_angs_new[6 ]);
238
- joint_angs_new[8 ] = beta_rear (vlegs_len[2 ]);
239
- joint_angs_new[7 ] = alfa_rear (foot_pos[6 ], joint_angs_new[8 ], vlegs_len[2 ]);
240
-
241
- // RL 9, 10, 11
242
- joint_angs_new[9 ] = gamma_left (foot_pos[10 ], foot_pos[11 ]);
243
- vlegs_len[3 ] = vleg_left (foot_pos[9 ], foot_pos[10 ], joint_angs_new[9 ]);
244
- joint_angs_new[11 ] = beta_rear (vlegs_len[3 ]);
245
- joint_angs_new[10 ] = alfa_rear (foot_pos[9 ], joint_angs_new[11 ], vlegs_len[3 ]);
246
-
247
- // Serial.println("------- Test Angle list: ----------");
248
- // Serial.println(joint_angs_new[0] * 180 / M_PI);
249
- // Serial.println(joint_angs_new[1] * 180 / M_PI);
250
- // Serial.println(joint_angs_new[2] * 180 / M_PI);
251
- // Serial.println(joint_angs_new[3] * 180 / M_PI);
252
- // Serial.println(joint_angs_new[4] * 180 / M_PI);
253
- // Serial.println(joint_angs_new[5] * 180 / M_PI);
254
- // Serial.println(joint_angs_new[6] * 180 / M_PI);
255
- // Serial.println(joint_angs_new[7] * 180 / M_PI);
256
- // Serial.println(joint_angs_new[8] * 180 / M_PI);
257
- // Serial.println(joint_angs_new[9] * 180 / M_PI);
258
- // Serial.println(joint_angs_new[10] * 180 / M_PI);
259
- // Serial.println(joint_angs_new[11] * 180 / M_PI);
230
+ joint_angs_new[3 ] = gamma_right (foot_pos[4 ], foot_pos[5 ]);
231
+ vlegs_len[1 ] = vleg_right (foot_pos[3 ], foot_pos[4 ], joint_angs_new[3 ]);
232
+ joint_angs_new[5 ] = beta_front (vlegs_len[1 ]);
233
+ joint_angs_new[4 ] = alfa_front (foot_pos[3 ], joint_angs_new[5 ], vlegs_len[1 ]);
234
+
235
+ // RR 6, 7, 8
236
+ joint_angs_new[6 ] = gamma_right (foot_pos[7 ], foot_pos[8 ]);
237
+ vlegs_len[2 ] = vleg_right (foot_pos[6 ], foot_pos[7 ], joint_angs_new[6 ]);
238
+ joint_angs_new[8 ] = beta_rear (vlegs_len[2 ]);
239
+ joint_angs_new[7 ] = alfa_rear (foot_pos[6 ], joint_angs_new[8 ], vlegs_len[2 ]);
240
+
241
+ // RL 9, 10, 11
242
+ joint_angs_new[9 ] = gamma_left (foot_pos[10 ], foot_pos[11 ]);
243
+ vlegs_len[3 ] = vleg_left (foot_pos[9 ], foot_pos[10 ], joint_angs_new[9 ]);
244
+ joint_angs_new[11 ] = beta_rear (vlegs_len[3 ]);
245
+ joint_angs_new[10 ] = alfa_rear (foot_pos[9 ], joint_angs_new[11 ], vlegs_len[3 ]);
246
+
247
+ // Serial.println("------- Test Angle list: ----------");
248
+ // Serial.println(joint_angs_new[0] * 180 / M_PI);
249
+ // Serial.println(joint_angs_new[1] * 180 / M_PI);
250
+ // Serial.println(joint_angs_new[2] * 180 / M_PI);
251
+ // Serial.println(joint_angs_new[3] * 180 / M_PI);
252
+ // Serial.println(joint_angs_new[4] * 180 / M_PI);
253
+ // Serial.println(joint_angs_new[5] * 180 / M_PI);
254
+ // Serial.println(joint_angs_new[6] * 180 / M_PI);
255
+ // Serial.println(joint_angs_new[7] * 180 / M_PI);
256
+ // Serial.println(joint_angs_new[8] * 180 / M_PI);
257
+ // Serial.println(joint_angs_new[9] * 180 / M_PI);
258
+ // Serial.println(joint_angs_new[10] * 180 / M_PI);
259
+ // Serial.println(joint_angs_new[11] * 180 / M_PI);
260
260
}
261
261
262
262
// Gamma: Hip Z angle
@@ -360,20 +360,25 @@ void QuadrupedRobot::bot_rest()
360
360
*/
361
361
void QuadrupedRobot::bot_walk ()
362
362
{
363
- float zl {30 };
364
363
Serial.println (" walk" );
365
- // Serial.print("foot_pos[2]: ");
366
- // Serial.println(foot_pos[2]);
367
- body_move_xyz (steplen / 4 , 0 , -zl);
368
- // foot_step(3, steplen / 2, 0); // move RL
369
- // foot_step(0, steplen / 2, 0); // move FL
370
- // body_move_xyz(steplen / 3, 0, 2 * toe_out0);
371
- // while (command_code == 3)
372
- // {
373
-
374
- // interrupt();
375
- // }
376
- clear_cmd ();
364
+ body_move_xyz (steplen / 4 , 0 , -toe_out0);
365
+ foot_step (3 , steplen / 2 , 0 ); // move RL
366
+ foot_step (0 , steplen / 2 , 0 ); // move FL
367
+ body_move_xyz (steplen / 4 , 0 , 2 * toe_out0);
368
+ while (command_code == 3 )
369
+ {
370
+ foot_step (2 , steplen, 0 ); // move RR
371
+ foot_step (1 , steplen, 0 ); // move FR
372
+ body_move_xyz (steplen / 2 , 0 , -2 * toe_out0 );
373
+ foot_step (3 , steplen, 0 ); // move RL
374
+ foot_step (0 , steplen, 0 ); // move FL
375
+ body_move_xyz (steplen / 2 , 0 , 2 * toe_out0);
376
+ interrupt ();
377
+ }
378
+ foot_step (2 , steplen / 2 , 0 );
379
+ foot_step (1 , steplen / 2 , 0 );
380
+ body_xyz (0 , 0 , 0 );
381
+ delay (500 );
377
382
}
378
383
379
384
QuadrupedRobot::~QuadrupedRobot ()
0 commit comments