|
|
/*
* Auto-Generated by NUKE!
* http://arbotix.googlecode.com
*/
#include <ax12.h>
#include <BioloidController.h>
#include <Commander.h>
#include "nuke.h"
// Define one or the other depending upon which servo type you are using.
#define AX12_HEXAPOD
//#define AX18_HEXAPOD
Commander command = Commander();
int multiplier;
int id;
#define LEG_COUNT 6
#define RIPPLE_SPEED 1
#define AMBLE_SPEED 3
#define TRIPOD_SPEED 5
/*Servo IDs */ /定义每条腿的关节舵机id/
#define RM_TIBIA 18
#define RF_COXA 2
#define LR_TIBIA 11
#define LF_FEMUR 3
#define RF_TIBIA 6
#define RM_FEMUR 16
#define RM_COXA 14
#define RR_COXA 8
#define LF_TIBIA 5
#define LF_COXA 1
#define LR_FEMUR 9
#define RR_FEMUR 10
#define LM_TIBIA 17
#define RF_FEMUR 4
#define LM_FEMUR 15
#define RR_TIBIA 12
#define LM_COXA 13
#define LR_COXA 7
/* Actual positions, and indices of array. */
extern ik_req_t endpoints[LEG_COUNT];
#define RIGHT_FRONT 0
#define RIGHT_REAR 1
#define LEFT_FRONT 2
#define LEFT_REAR 3
#define RIGHT_MIDDLE 4
#define LEFT_MIDDLE 5
#ifdef AX12_HEXAPOD
#define TOP_SPEED 10
#endif
void setup(){
pinMode(0,OUTPUT);
// setup IK
setupIK();
gaitSelect(AMBLE_SMOOTH);
// setup serial
Serial.begin(38400);
// stand up slowly
bioloid.poseSize = 18;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
multiplier = AMBLE_SPEED;
}
void loop()
{
// take commands
if(command.buttons&BUT_L4) / /如果按下L4,选择左前腿//
{
LEFT_FRONT;
multiplier=AMBLE_SPEED;
Serial.println("####################");
Serial.println("Initializing Left_FRONTLeg Tests");
Serial.println("####################");
delay(500);
if((command.walkV) > 5 ); //左前腿向前移动100mm//
{
endpoints[LEFT_FRONT].x = endpoints[LEFT_FRONT].x+10;
endpoints[LEFT_FRONT].y = -118;
endpoints[LEFT_FRONT].z = 97;
bioloid.poseSize = 3;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
}
if((command.walkV < -5) ); //左前腿向后移动100mm//
{
endpoints[LEFT_FRONT].x = endpoints[LEFT_FRONT].x -10;
endpoints[LEFT_FRONT].y = -118;
endpoints[LEFT_FRONT].z = 97;
bioloid.poseSize = 3;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
}
if((command.walkH) > 5 ); //左前腿向左移动100mm//
{
endpoints[LEFT_FRONT].x = 52;
endpoints[LEFT_FRONT].y = endpoints[LEFT_FRONT].y +10;
endpoints[LEFT_FRONT].z = 97;
bioloid.poseSize = 3;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
}
if((command.walkH < -5) ); //左前腿向右移动100mm//
{
endpoints[LEFT_FRONT].x = 52;
endpoints[LEFT_FRONT].y = endpoints[LEFT_FRONT].y -10;
endpoints[LEFT_FRONT].z = 97;
bioloid.poseSize = 3;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
}
if((command.lookH) > 5 ); //左前腿抬高移动50mm//
{
endpoints[LEFT_FRONT].x = 52;
endpoints[LEFT_FRONT].y = -118;
endpoints[LEFT_FRONT].z = endpoints[LEFT_FRONT].z -50;
bioloid.poseSize = 3;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
}
if((command.lookH < -5) ); //左前腿降低移动50mm//
{
endpoints[LEFT_FRONT].x = 52;
endpoints[LEFT_FRONT].y = -118;
endpoints[LEFT_FRONT].z = endpoints[LEFT_FRONT].z+50;
bioloid.poseSize = 3;
bioloid.readPose();
doIK();
bioloid.interpolateSetup(1000);
while(bioloid.interpolating > 0)
{
bioloid.interpolateStep();
delay(3);
}
}
}
|
|