nhk2019

Dependencies:   mbed kondoSerialServo

Committer:
kenken0721
Date:
Sun Mar 17 11:24:51 2019 +0000
Revision:
1:5fb6895ad8e6
Parent:
0:ffe56c419abd
Child:
2:6140746e19b1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenken0721 0:ffe56c419abd 1 #include "mbed.h"
kenken0721 0:ffe56c419abd 2 #include "SerialServo.h"
kenken0721 0:ffe56c419abd 3
kenken0721 1:5fb6895ad8e6 4 //Serial pc(USBTX,USBRX);//デバック用シリアル
kenken0721 0:ffe56c419abd 5 Ticker update;//現在地座標の更新割り込み
kenken0721 0:ffe56c419abd 6
kenken0721 1:5fb6895ad8e6 7 SerialServo servo[4] = {SerialServo(PC_4,PC_5),//serial1
kenken0721 1:5fb6895ad8e6 8 SerialServo(PA_2,PA_3),//serial5
kenken0721 1:5fb6895ad8e6 9 //SerialServo(PC_10,PC_11),//serial5
kenken0721 1:5fb6895ad8e6 10 SerialServo(PB_10,PB_11),//serial3
kenken0721 1:5fb6895ad8e6 11 SerialServo(PC_12,PD_2)};//serial4
kenken0721 0:ffe56c419abd 12
kenken0721 0:ffe56c419abd 13
kenken0721 1:5fb6895ad8e6 14 const float PI = 3.1415926;
kenken0721 0:ffe56c419abd 15
kenken0721 0:ffe56c419abd 16 //---各足の長さ----
kenken0721 0:ffe56c419abd 17 const float L1 = 76;
kenken0721 1:5fb6895ad8e6 18 const float L2 = 168;
kenken0721 1:5fb6895ad8e6 19 const float L3 = 252;
kenken0721 0:ffe56c419abd 20
kenken0721 0:ffe56c419abd 21 //------移動速度--------
kenken0721 1:5fb6895ad8e6 22 float moveSpeed = 1;
kenken0721 0:ffe56c419abd 23
kenken0721 0:ffe56c419abd 24 //現在の座標
kenken0721 0:ffe56c419abd 25 float currentSite[4][3];
kenken0721 0:ffe56c419abd 26 //次の座標
kenken0721 0:ffe56c419abd 27 float nextSite[4][3];
kenken0721 0:ffe56c419abd 28 //値更新用スピード
kenken0721 0:ffe56c419abd 29 float tempSpeed[4][3];
kenken0721 0:ffe56c419abd 30
kenken0721 0:ffe56c419abd 31 //現在の角度
kenken0721 0:ffe56c419abd 32 float currentAngle[4][3];
kenken0721 0:ffe56c419abd 33
kenken0721 0:ffe56c419abd 34 //現在の周波数
kenken0721 0:ffe56c419abd 35 int currentPulse[4][3];
kenken0721 0:ffe56c419abd 36
kenken0721 0:ffe56c419abd 37 float fmap(float x, float in_min, float in_max, float out_min, float out_max){
kenken0721 0:ffe56c419abd 38 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
kenken0721 0:ffe56c419abd 39 }
kenken0721 0:ffe56c419abd 40
kenken0721 0:ffe56c419abd 41 //座標指定
kenken0721 1:5fb6895ad8e6 42 void setSite(int leg, float x, float y, float z){
kenken0721 0:ffe56c419abd 43 float length[3] = {0.0,0.0,0.0};
kenken0721 0:ffe56c419abd 44 length[0] = x - currentSite[leg][0];
kenken0721 0:ffe56c419abd 45 length[1] = y - currentSite[leg][1];
kenken0721 0:ffe56c419abd 46 length[2] = z - currentSite[leg][2];
kenken0721 0:ffe56c419abd 47 float L = sqrt(pow(length[0],2)+pow(length[1],2)+pow(length[2],2));
kenken0721 0:ffe56c419abd 48 tempSpeed[leg][0] = (length[0]/L)*moveSpeed;
kenken0721 0:ffe56c419abd 49 tempSpeed[leg][1] = (length[1]/L)*moveSpeed;
kenken0721 0:ffe56c419abd 50 tempSpeed[leg][2] = (length[2]/L)*moveSpeed;
kenken0721 0:ffe56c419abd 51 nextSite[leg][0] = x;
kenken0721 0:ffe56c419abd 52 nextSite[leg][1] = y;
kenken0721 0:ffe56c419abd 53 nextSite[leg][2] = z;
kenken0721 0:ffe56c419abd 54 }
kenken0721 0:ffe56c419abd 55
kenken0721 0:ffe56c419abd 56 void toAngle(int leg){
kenken0721 0:ffe56c419abd 57 float x = currentSite[leg][0];
kenken0721 0:ffe56c419abd 58 float y = currentSite[leg][1];
kenken0721 0:ffe56c419abd 59 float z = currentSite[leg][2];
kenken0721 0:ffe56c419abd 60 float L = sqrt((x*x)+(y*y));
kenken0721 0:ffe56c419abd 61 float w = L - L1;
kenken0721 0:ffe56c419abd 62 float v = sqrt((w*w)+(z*z));
kenken0721 0:ffe56c419abd 63 float alpha = atan2(z,w) - acos(((v*v)+(L2*L2)-(L3*L3))/(2*L2*v));
kenken0721 0:ffe56c419abd 64 float beta = PI - acos(((L2*L2) + (L3*L3) - (v*v))/(2*L2*L3));
kenken0721 0:ffe56c419abd 65 float gamma = atan2(y, x);
kenken0721 0:ffe56c419abd 66 currentAngle[leg][0] = gamma = (gamma / PI * 180);
kenken0721 0:ffe56c419abd 67 currentAngle[leg][1] = alpha = (alpha / PI * 180);
kenken0721 0:ffe56c419abd 68 currentAngle[leg][2] = beta = (beta / PI * 180);
kenken0721 0:ffe56c419abd 69 }
kenken0721 0:ffe56c419abd 70
kenken0721 1:5fb6895ad8e6 71
kenken0721 1:5fb6895ad8e6 72 void toPulse(){
kenken0721 1:5fb6895ad8e6 73 //右前足
kenken0721 1:5fb6895ad8e6 74 currentPulse[0][0] = int(fmap(currentAngle[0][0],-135,135,3500,11500));
kenken0721 1:5fb6895ad8e6 75 currentPulse[0][1] = int(fmap(currentAngle[0][1],-135,135,11500,3500)+100);
kenken0721 1:5fb6895ad8e6 76 currentPulse[0][2] = int(fmap(currentAngle[0][2],0,270,3500,11500));
kenken0721 1:5fb6895ad8e6 77 //左前足
kenken0721 1:5fb6895ad8e6 78 currentPulse[1][0] = int(fmap(currentAngle[1][0],-135,135,11500,3500));
kenken0721 1:5fb6895ad8e6 79 currentPulse[1][1] = int(fmap(currentAngle[1][1],-135,135,11500,3500)-200);
kenken0721 1:5fb6895ad8e6 80 currentPulse[1][2] = int(fmap(currentAngle[1][2],0,270,3500,11500)-300);
kenken0721 1:5fb6895ad8e6 81 //右後足
kenken0721 1:5fb6895ad8e6 82 currentPulse[2][0] = int(fmap(currentAngle[2][0],-135,135,3500,11500));
kenken0721 1:5fb6895ad8e6 83 currentPulse[2][1] = int(fmap(currentAngle[2][1],-135,135,11500,3500)-200);
kenken0721 1:5fb6895ad8e6 84 currentPulse[2][2] = int(fmap(currentAngle[2][2],0,270,3500,11500));
kenken0721 1:5fb6895ad8e6 85 //左後足
kenken0721 1:5fb6895ad8e6 86 currentPulse[3][0] = int(fmap(currentAngle[3][0],-135,135,11500,3500));
kenken0721 1:5fb6895ad8e6 87 currentPulse[3][1] = int(fmap(currentAngle[3][1],-135,135,11500,3500));
kenken0721 1:5fb6895ad8e6 88 currentPulse[3][2] = int(fmap(currentAngle[3][2],0,270,3500,11500)+100);
kenken0721 1:5fb6895ad8e6 89
kenken0721 1:5fb6895ad8e6 90 for(int i=0;i<3;i++){
kenken0721 1:5fb6895ad8e6 91 for(int j=0;j<4;j++){
kenken0721 1:5fb6895ad8e6 92 servo[j].move(i+1,int(currentPulse[j][i]));
kenken0721 1:5fb6895ad8e6 93 wait_us(100);
kenken0721 0:ffe56c419abd 94 }
kenken0721 1:5fb6895ad8e6 95 wait_us(400);
kenken0721 0:ffe56c419abd 96 }
kenken0721 0:ffe56c419abd 97 }
kenken0721 0:ffe56c419abd 98
kenken0721 0:ffe56c419abd 99 void siteUpdate(){
kenken0721 0:ffe56c419abd 100 for(int i=0;i<4;i++){
kenken0721 0:ffe56c419abd 101 for(int j=0;j<3;j++){
kenken0721 0:ffe56c419abd 102 float siteLength = abs(currentSite[i][j] - nextSite[i][j]);
kenken0721 0:ffe56c419abd 103 if( siteLength >= abs(tempSpeed[i][j]))
kenken0721 0:ffe56c419abd 104 currentSite[i][j] += tempSpeed[i][j];
kenken0721 0:ffe56c419abd 105 else
kenken0721 0:ffe56c419abd 106 currentSite[i][j] = nextSite[i][j];
kenken0721 0:ffe56c419abd 107 }
kenken0721 0:ffe56c419abd 108 toAngle(i);
kenken0721 0:ffe56c419abd 109 }
kenken0721 1:5fb6895ad8e6 110 toPulse();
kenken0721 0:ffe56c419abd 111 }
kenken0721 0:ffe56c419abd 112
kenken0721 0:ffe56c419abd 113 void motionWait(int leg){
kenken0721 0:ffe56c419abd 114 bool flag = false;
kenken0721 0:ffe56c419abd 115 while(flag == false){
kenken0721 1:5fb6895ad8e6 116 wait_us(1);
kenken0721 0:ffe56c419abd 117 if(currentSite[leg][0] == nextSite[leg][0]){
kenken0721 0:ffe56c419abd 118 if(currentSite[leg][1] == nextSite[leg][1]){
kenken0721 0:ffe56c419abd 119 if(currentSite[leg][2] == nextSite[leg][2]){
kenken0721 0:ffe56c419abd 120 flag = true;
kenken0721 0:ffe56c419abd 121 }
kenken0721 0:ffe56c419abd 122 }
kenken0721 0:ffe56c419abd 123 }
kenken0721 0:ffe56c419abd 124 }
kenken0721 0:ffe56c419abd 125 }
kenken0721 0:ffe56c419abd 126
kenken0721 0:ffe56c419abd 127 //すべての足が動き終わるまで待機
kenken0721 0:ffe56c419abd 128 void allMotionWait(){
kenken0721 0:ffe56c419abd 129 for(int i=0;i<4;i++){
kenken0721 0:ffe56c419abd 130 motionWait(i);
kenken0721 0:ffe56c419abd 131 }
kenken0721 0:ffe56c419abd 132 }
kenken0721 1:5fb6895ad8e6 133 //------------------歩行モーション------------------------------------
kenken0721 0:ffe56c419abd 134 //静歩行
kenken0721 1:5fb6895ad8e6 135 void forwardWalk1(unsigned int count,float *pos ,float *speed){
kenken0721 0:ffe56c419abd 136 while(count-- > 0){
kenken0721 0:ffe56c419abd 137 //2
kenken0721 1:5fb6895ad8e6 138 moveSpeed = speed[1];
kenken0721 1:5fb6895ad8e6 139 setSite(2,pos[0],pos[2],pos[4]-pos[7]);
kenken0721 0:ffe56c419abd 140 allMotionWait();
kenken0721 1:5fb6895ad8e6 141 setSite(2,pos[0],pos[2]+pos[5]*2,pos[4]-pos[7]);
kenken0721 0:ffe56c419abd 142 allMotionWait();
kenken0721 1:5fb6895ad8e6 143 setSite(2,pos[0],pos[2]+pos[5]*2,pos[4]);
kenken0721 0:ffe56c419abd 144 allMotionWait();
kenken0721 0:ffe56c419abd 145 //0
kenken0721 1:5fb6895ad8e6 146 setSite(0, pos[0], pos[1], pos[3]-pos[6]);
kenken0721 0:ffe56c419abd 147 allMotionWait();
kenken0721 1:5fb6895ad8e6 148 setSite(0, pos[0], pos[1] + pos[5]*2, pos[3]-pos[6]);
kenken0721 0:ffe56c419abd 149 allMotionWait();
kenken0721 1:5fb6895ad8e6 150 setSite(0, pos[0], pos[1] + pos[5]*2, pos[3]);
kenken0721 0:ffe56c419abd 151 allMotionWait();
kenken0721 1:5fb6895ad8e6 152 //機体移動
kenken0721 1:5fb6895ad8e6 153 moveSpeed = speed[0];
kenken0721 1:5fb6895ad8e6 154 setSite(0,pos[0], pos[1] + pos[5], pos[3]);
kenken0721 1:5fb6895ad8e6 155 setSite(1,pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 156 setSite(2,pos[0], pos[2] + pos[5], pos[4]);
kenken0721 1:5fb6895ad8e6 157 setSite(3,pos[0], pos[2], pos[4]);
kenken0721 0:ffe56c419abd 158 allMotionWait();
kenken0721 0:ffe56c419abd 159 //3
kenken0721 1:5fb6895ad8e6 160 moveSpeed = speed[1];
kenken0721 1:5fb6895ad8e6 161 setSite(3,pos[0],pos[2],pos[4]-pos[7]);
kenken0721 0:ffe56c419abd 162 allMotionWait();
kenken0721 1:5fb6895ad8e6 163 setSite(3,pos[0],pos[2]+pos[5]*2,pos[4]-pos[7]);
kenken0721 0:ffe56c419abd 164 allMotionWait();
kenken0721 1:5fb6895ad8e6 165 setSite(3,pos[0],pos[2]+pos[5]*2,pos[4]);
kenken0721 0:ffe56c419abd 166 allMotionWait();
kenken0721 0:ffe56c419abd 167 //1
kenken0721 1:5fb6895ad8e6 168 setSite(1, pos[0], pos[1], pos[3]-pos[6]);
kenken0721 0:ffe56c419abd 169 allMotionWait();
kenken0721 1:5fb6895ad8e6 170 setSite(1, pos[0], pos[1] + pos[5]*2, pos[3]-pos[6]);
kenken0721 0:ffe56c419abd 171 allMotionWait();
kenken0721 1:5fb6895ad8e6 172 setSite(1, pos[0], pos[1] + pos[5]*2, pos[3]);
kenken0721 0:ffe56c419abd 173 allMotionWait();
kenken0721 1:5fb6895ad8e6 174 //機体移動
kenken0721 1:5fb6895ad8e6 175 moveSpeed = speed[0];
kenken0721 1:5fb6895ad8e6 176 setSite(0,pos[0], pos[1] , pos[3]);
kenken0721 1:5fb6895ad8e6 177 setSite(1,pos[0], pos[1] + pos[5], pos[3]);
kenken0721 1:5fb6895ad8e6 178 setSite(2,pos[0], pos[2], pos[4]);
kenken0721 1:5fb6895ad8e6 179 setSite(3,pos[0], pos[2] + pos[5], pos[4]);
kenken0721 0:ffe56c419abd 180 allMotionWait();
kenken0721 0:ffe56c419abd 181 }
kenken0721 0:ffe56c419abd 182 }
kenken0721 1:5fb6895ad8e6 183 //座位
kenken0721 1:5fb6895ad8e6 184 void standDown(float *pos,float *speed){
kenken0721 1:5fb6895ad8e6 185 moveSpeed = speed[0];
kenken0721 1:5fb6895ad8e6 186 setSite(0, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 187 setSite(1, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 188 setSite(2, pos[0], pos[2], pos[4]);
kenken0721 1:5fb6895ad8e6 189 setSite(3, pos[0], pos[2], pos[4]);
kenken0721 1:5fb6895ad8e6 190 allMotionWait();
kenken0721 1:5fb6895ad8e6 191 }
kenken0721 1:5fb6895ad8e6 192 //直立姿勢
kenken0721 1:5fb6895ad8e6 193 void standUp(float *pos,float *speed){
kenken0721 1:5fb6895ad8e6 194 moveSpeed = speed[0];
kenken0721 1:5fb6895ad8e6 195 setSite(0, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 196 setSite(1, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 197 setSite(2, pos[0], pos[2], pos[4]);
kenken0721 1:5fb6895ad8e6 198 setSite(3, pos[0], pos[2], pos[4]);
kenken0721 1:5fb6895ad8e6 199 allMotionWait();
kenken0721 0:ffe56c419abd 200 }
kenken0721 0:ffe56c419abd 201 //トロット歩容
kenken0721 1:5fb6895ad8e6 202 void forwardTrot(unsigned int count, float *pos, float *speed, float turn){
kenken0721 1:5fb6895ad8e6 203 float stepRY = pos[5];
kenken0721 1:5fb6895ad8e6 204 float stepLY = pos[5];
kenken0721 1:5fb6895ad8e6 205 moveSpeed = speed[0];
kenken0721 1:5fb6895ad8e6 206 if(turn > 0){
kenken0721 1:5fb6895ad8e6 207 stepRY += turn;
kenken0721 1:5fb6895ad8e6 208 stepLY -= turn;
kenken0721 1:5fb6895ad8e6 209 }else if(turn < 0){
kenken0721 1:5fb6895ad8e6 210 stepRY += turn;
kenken0721 1:5fb6895ad8e6 211 stepLY -= turn;
kenken0721 0:ffe56c419abd 212 }
kenken0721 0:ffe56c419abd 213 while(count-- > 0){
kenken0721 1:5fb6895ad8e6 214 //0,3
kenken0721 1:5fb6895ad8e6 215 setSite(0, pos[0], pos[1] + stepRY, pos[3]-pos[6]);
kenken0721 1:5fb6895ad8e6 216 setSite(1, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 217 setSite(2, pos[0], pos[2], pos[4]);
kenken0721 1:5fb6895ad8e6 218 setSite(3, pos[0], pos[2] + stepLY, pos[4]-pos[7]);
kenken0721 1:5fb6895ad8e6 219 allMotionWait();
kenken0721 1:5fb6895ad8e6 220 setSite(0, pos[0], pos[1] + stepRY, pos[3]);
kenken0721 1:5fb6895ad8e6 221 setSite(3, pos[0], pos[2] + stepLY, pos[4]);
kenken0721 0:ffe56c419abd 222 allMotionWait();
kenken0721 1:5fb6895ad8e6 223 //1,2
kenken0721 1:5fb6895ad8e6 224 setSite(0, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 225 setSite(1, pos[0], pos[1] + stepLY, pos[3]-pos[6]);
kenken0721 1:5fb6895ad8e6 226 setSite(2, pos[0], pos[2] + stepRY, pos[4]-pos[7]);
kenken0721 1:5fb6895ad8e6 227 setSite(3, pos[0], pos[2], pos[4]);
kenken0721 0:ffe56c419abd 228 allMotionWait();
kenken0721 1:5fb6895ad8e6 229 setSite(1, pos[0], pos[1] + stepLY, pos[3]);
kenken0721 1:5fb6895ad8e6 230 setSite(2, pos[0], pos[2] + stepRY, pos[4]);
kenken0721 0:ffe56c419abd 231 allMotionWait();
kenken0721 0:ffe56c419abd 232 }
kenken0721 0:ffe56c419abd 233 }
kenken0721 0:ffe56c419abd 234
kenken0721 1:5fb6895ad8e6 235 void backTrot(unsigned int count, float turn,float *pos,float *speed){
kenken0721 1:5fb6895ad8e6 236 float stepRY = pos[5];
kenken0721 1:5fb6895ad8e6 237 float stepLY = pos[5];
kenken0721 1:5fb6895ad8e6 238 if(turn > 0){
kenken0721 1:5fb6895ad8e6 239 stepRY += turn;
kenken0721 1:5fb6895ad8e6 240 stepLY -= turn;
kenken0721 1:5fb6895ad8e6 241 }else if(turn < 0){
kenken0721 1:5fb6895ad8e6 242 stepRY += turn;
kenken0721 1:5fb6895ad8e6 243 stepLY -= turn;
kenken0721 0:ffe56c419abd 244 }
kenken0721 1:5fb6895ad8e6 245 moveSpeed = speed[0];
kenken0721 1:5fb6895ad8e6 246 while(count-- > 0){
kenken0721 1:5fb6895ad8e6 247 //0,3
kenken0721 1:5fb6895ad8e6 248 setSite(0, pos[0], pos[1] + stepRY, pos[3]-pos[6]);
kenken0721 1:5fb6895ad8e6 249 setSite(1, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 250 setSite(2, pos[0], pos[2], pos[3]);
kenken0721 1:5fb6895ad8e6 251 setSite(3, pos[0], pos[2] + stepLY, pos[3]-pos[7]);
kenken0721 1:5fb6895ad8e6 252 allMotionWait();
kenken0721 1:5fb6895ad8e6 253 setSite(0, pos[0], pos[1] + stepRY, pos[3]);
kenken0721 1:5fb6895ad8e6 254 setSite(3, pos[0], pos[2] + stepLY, pos[4]);
kenken0721 1:5fb6895ad8e6 255 allMotionWait();
kenken0721 1:5fb6895ad8e6 256 //1,2
kenken0721 1:5fb6895ad8e6 257 setSite(0, pos[0], pos[1], pos[3]);
kenken0721 1:5fb6895ad8e6 258 setSite(1, pos[0], pos[1] + stepLY, pos[3]-pos[6]);
kenken0721 1:5fb6895ad8e6 259 setSite(2, pos[0], pos[2] + stepRY, pos[4]-pos[7]);
kenken0721 1:5fb6895ad8e6 260 setSite(3, pos[0], pos[2], pos[3]);
kenken0721 1:5fb6895ad8e6 261 allMotionWait();
kenken0721 1:5fb6895ad8e6 262 setSite(1, pos[0], pos[1] + stepLY, pos[3]);
kenken0721 1:5fb6895ad8e6 263 setSite(2, pos[0], pos[2] + stepRY, pos[4]);
kenken0721 1:5fb6895ad8e6 264 allMotionWait();
kenken0721 1:5fb6895ad8e6 265 }
kenken0721 0:ffe56c419abd 266 }
kenken0721 1:5fb6895ad8e6 267 //初期姿勢
kenken0721 1:5fb6895ad8e6 268 void initPos(){
kenken0721 1:5fb6895ad8e6 269 moveSpeed = 1;
kenken0721 1:5fb6895ad8e6 270 float pos[3] = {150,0,100};
kenken0721 0:ffe56c419abd 271 for(int i=0;i<4;i++){
kenken0721 1:5fb6895ad8e6 272 for(int j=0;j<3;j++){
kenken0721 1:5fb6895ad8e6 273 currentSite[i][j] = pos[j];
kenken0721 1:5fb6895ad8e6 274 nextSite[i][j] = pos[j];
kenken0721 1:5fb6895ad8e6 275 }
kenken0721 0:ffe56c419abd 276 }
kenken0721 0:ffe56c419abd 277 }
kenken0721 1:5fb6895ad8e6 278 //---------------------------------------------------------------
kenken0721 0:ffe56c419abd 279
kenken0721 0:ffe56c419abd 280 int main() {
kenken0721 0:ffe56c419abd 281 for(int i=0;i<4;i++){
kenken0721 1:5fb6895ad8e6 282 servo[i].init();
kenken0721 0:ffe56c419abd 283 }
kenken0721 1:5fb6895ad8e6 284 wait(1.0);
kenken0721 1:5fb6895ad8e6 285 initPos();
kenken0721 0:ffe56c419abd 286 update.attach(&siteUpdate,0.02);//20msごとに座標値更新
kenken0721 1:5fb6895ad8e6 287 wait(5.0);
kenken0721 1:5fb6895ad8e6 288 float levelPosTest[8] = {170,60,-110,170,170,100,70,70};
kenken0721 1:5fb6895ad8e6 289 float levelSpeTest[2] = {6,6};
kenken0721 1:5fb6895ad8e6 290 float slopePosTest[8] = {200,40,-90,130,230,50,100,100};
kenken0721 1:5fb6895ad8e6 291 float slopeSpeTest[2] = {4,4};
kenken0721 1:5fb6895ad8e6 292 float slopePosTest2[8] = {180,60,-110,180,160,100,90,90};
kenken0721 1:5fb6895ad8e6 293 float slopeSpeTest2[2] = {5,6};
kenken0721 1:5fb6895ad8e6 294
kenken0721 0:ffe56c419abd 295 while (true) {
kenken0721 1:5fb6895ad8e6 296 forwardTrot(4,levelPosTest,levelSpeTest,0);
kenken0721 1:5fb6895ad8e6 297 moveSpeed = 1.5;
kenken0721 1:5fb6895ad8e6 298 setSite(0, 200, 100, 240);
kenken0721 1:5fb6895ad8e6 299 setSite(1, 200, 100, 240);
kenken0721 1:5fb6895ad8e6 300 setSite(2, 200, -20, 230);
kenken0721 1:5fb6895ad8e6 301 setSite(3, 200, -20, 230);
kenken0721 1:5fb6895ad8e6 302 allMotionWait();
kenken0721 1:5fb6895ad8e6 303 setSite(0, 200, 100, 30);
kenken0721 1:5fb6895ad8e6 304 allMotionWait();
kenken0721 1:5fb6895ad8e6 305 setSite(0, 200, 200, 30);
kenken0721 1:5fb6895ad8e6 306 allMotionWait();
kenken0721 1:5fb6895ad8e6 307 setSite(0, 200, 200, 130);
kenken0721 1:5fb6895ad8e6 308 allMotionWait();
kenken0721 1:5fb6895ad8e6 309 setSite(1, 200, 100, 30);
kenken0721 0:ffe56c419abd 310 allMotionWait();
kenken0721 1:5fb6895ad8e6 311 setSite(1, 200, 200, 30);
kenken0721 1:5fb6895ad8e6 312 allMotionWait();
kenken0721 1:5fb6895ad8e6 313 setSite(1, 200, 200, 130);
kenken0721 0:ffe56c419abd 314 allMotionWait();
kenken0721 1:5fb6895ad8e6 315 setSite(0, 200, 100, 130);
kenken0721 1:5fb6895ad8e6 316 setSite(1, 200, 100, 130);
kenken0721 1:5fb6895ad8e6 317 setSite(2, 200, -120, 230);
kenken0721 1:5fb6895ad8e6 318 setSite(3, 200, -120, 230);
kenken0721 1:5fb6895ad8e6 319 allMotionWait();
kenken0721 1:5fb6895ad8e6 320 forwardTrot(4,slopePosTest,slopeSpeTest,0);
kenken0721 1:5fb6895ad8e6 321 moveSpeed = 1.5;
kenken0721 1:5fb6895ad8e6 322 setSite(0, 200, 70, 130);
kenken0721 1:5fb6895ad8e6 323 setSite(1, 200, 70, 130);
kenken0721 1:5fb6895ad8e6 324 setSite(2, 200, -150, 240);
kenken0721 1:5fb6895ad8e6 325 setSite(3, 200, -150, 240);
kenken0721 0:ffe56c419abd 326 allMotionWait();
kenken0721 0:ffe56c419abd 327
kenken0721 1:5fb6895ad8e6 328 setSite(2, 200, -120, 30);
kenken0721 1:5fb6895ad8e6 329 allMotionWait();
kenken0721 1:5fb6895ad8e6 330 setSite(2, 200, 0, 30);
kenken0721 1:5fb6895ad8e6 331 allMotionWait();
kenken0721 1:5fb6895ad8e6 332 setSite(2, 200, 0, 130);
kenken0721 0:ffe56c419abd 333 allMotionWait();
kenken0721 0:ffe56c419abd 334
kenken0721 1:5fb6895ad8e6 335 setSite(0, 200, 20, 130);
kenken0721 1:5fb6895ad8e6 336 setSite(1, 200, 20, 130);
kenken0721 1:5fb6895ad8e6 337 setSite(2, 200, -100, 130);
kenken0721 1:5fb6895ad8e6 338 setSite(3, 200, -200, 230);
kenken0721 0:ffe56c419abd 339 allMotionWait();
kenken0721 1:5fb6895ad8e6 340
kenken0721 1:5fb6895ad8e6 341 setSite(0, 200, 20, 30);
kenken0721 0:ffe56c419abd 342 allMotionWait();
kenken0721 1:5fb6895ad8e6 343 setSite(0, 200, 100, 30);
kenken0721 0:ffe56c419abd 344 allMotionWait();
kenken0721 1:5fb6895ad8e6 345 setSite(0, 200, 100, 200);
kenken0721 0:ffe56c419abd 346 allMotionWait();
kenken0721 0:ffe56c419abd 347
kenken0721 1:5fb6895ad8e6 348 setSite(3, 200, -120, 30);
kenken0721 0:ffe56c419abd 349 allMotionWait();
kenken0721 1:5fb6895ad8e6 350 setSite(3, 200, 0, 30);
kenken0721 0:ffe56c419abd 351 allMotionWait();
kenken0721 1:5fb6895ad8e6 352 setSite(3, 200, 0, 130);
kenken0721 0:ffe56c419abd 353 allMotionWait();
kenken0721 0:ffe56c419abd 354
kenken0721 1:5fb6895ad8e6 355 setSite(1, 200, 20, 30);
kenken0721 1:5fb6895ad8e6 356 allMotionWait();
kenken0721 1:5fb6895ad8e6 357 setSite(1, 200, 200, 30);
kenken0721 1:5fb6895ad8e6 358 allMotionWait();
kenken0721 1:5fb6895ad8e6 359 setSite(1, 200, 200, 200);
kenken0721 1:5fb6895ad8e6 360 allMotionWait();
kenken0721 0:ffe56c419abd 361 /*
kenken0721 1:5fb6895ad8e6 362 setSite(0, 190, 150, 180);
kenken0721 1:5fb6895ad8e6 363 setSite(1, 190, 150, 180);
kenken0721 1:5fb6895ad8e6 364 setSite(2, 190, -150, 160);
kenken0721 1:5fb6895ad8e6 365 setSite(3, 190, -150, 160);
kenken0721 0:ffe56c419abd 366 allMotionWait();
kenken0721 0:ffe56c419abd 367 */
kenken0721 1:5fb6895ad8e6 368 forwardTrot(10,slopePosTest2,slopeSpeTest2,0);
kenken0721 1:5fb6895ad8e6 369
kenken0721 1:5fb6895ad8e6 370 wait(10);
kenken0721 1:5fb6895ad8e6 371 //backTrot(100,0);
kenken0721 0:ffe56c419abd 372 }
kenken0721 0:ffe56c419abd 373 }