'RNControl_DB-1.bas ' 'History '------- '2008-08-11 RNControl_DB-1.bas '2008-08-10 rewritten with command pages, (cmndpage) '2008-08-07 Squat walk added, getup flag added, tilt sensor added '2008-07-29 GOSUB standard_pose put after GetCmnd and removed from K1..... '2008-07-06 amended code at '== Action command check' to (48 - 80), oops '2008-05-26 rewrote main loop and added 'local' variable loop counters and flags '2008-05-25 keys keys F(23) and G(32) are wrong, should be F(32) and G(23) - see RoboRemocon ' added FastTurnLeft, Run, FastTurnRight on EFG ' changed blink to Remocon, and commented robot_voltage '2006-07-09 robot_voltage: ' missing ENDIF before RETURN ' maximum AD(6) is 88 on fully charged battery ' not 148 as in original code ' test set at 80 as quite quickly 88 is too high '2006-07-09 MAIN: added LED blink in so we can tell when robot is ready to receive IR cmnds ' OUT 52,1 'blue LED OFF ' GOSUB robot_voltage ' GOSUB robot_tilt ' OUT 52,0 'blue LED ON '------------------------------------------------ 'G6A assign #0-#5 TO group A left Leg '0 left ankle roll +ve lateral up 51-117 '1 left ankle pitch +ve toe up 19-165 19 is servo limit '2 left knee +ve straight 23-188 188 is servo limit '3 left hip pitch +ve FD 13-161 13 is servo limit '4 left hip roll +ve out 87-170 170 is servo limit '5 'G6B assign #6-#11 TO group B left Arm '6 left arm shoulder +ve Fd 13-189 both are servo limit '7 left arm shoulder +ve out 31-186 both are servo limit '8 left arm elbow +ve out 13-189 both are servo limit '9 '10 '11 'G6C assign #12-#17 TO group C right Arm '12 right arm shoulder +ve Fd 11-188 both are servo limit '13 right arm shoulder +ve out 13-186 both are servo limit '14 right arm elbow +ve out 11-188 both are servo limit '15 '16 '17 'G6D assign #18-#23 TO group D right Leg '18 right ankle roll +ve lateral up 52-116 '19 right ankle pitch +ve toe up 10-162 10 is servo limit '20 right knee +ve straight 23-190 190 is servo limit '21 right hip pitch +ve FD 27-158 27 is servo limit '22 right hip roll +ve out 86-188 188 is servo limit '23 'G6E assign #24-#29 TO group E 'in Poses 'G6A left Leg 'G6D right Leg 'G6B left Arm 'G6C right Arm '------------------------------------------------ 'From Compile/SetZero Point/Insert 14Sep08 ZERO G6A, 99, 101, 99, 104, 117 ZERO G6B,100, 104, 100 ZERO G6C, 99, 101, 99 ZERO G6D,114, 101, 98, 101, 89 '------------------------------------------------ DIM Scmnd AS BYTE 'first variable gets filled by PC serialport input if <7F DIM cmnd AS BYTE DIM Ain AS BYTE 'Analog in DIM f_MotorPower AS BYTE 'motor power state 1=>on DIM f_standing AS BYTE DIM f_StandAttention AS BYTE DIM f_GetUpFd AS BYTE DIM f_GetUpBk AS BYTE DIM f_AwaitPage AS BYTE DIM f_AwaitSpeed AS BYTE DIM cmndpage AS BYTE DIM Sspeed AS BYTE CONST ID = 0 ' 1:0, 2:32, 3:64, 4:96, CONST maxpage =2 CONST maxspeed =30 f_MotorPower =0 f_GetUpFd =0 'auto Fdgetup disabled f_GetUpBk =0 'auto Bkgetup disabled f_AwaitPage =0 f_AwaitSpeed =0 cmndpage =0 '== ASCII command check (48 - 87) IF Scmnd > 47 AND cmnd < 88 THEN GOTO ASCII_proc Scmnd = 0 'otherwise clear it of junk MotorsPowerInit: '== motor diretion setting ====================== DIR G6A,1,0,0,1,0,0 DIR G6B,1,1,1,1,1,1 DIR G6C,0,0,0,0,0,0 DIR G6D,0,1,1,0,1,0 GETMOTORSET G24,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0 MOTOR G24 PTP SETON PTP ALLON f_MotorPower =1 TEMPO 240 MUSIC "CDE" SPEED 5 'default GOTO Squat_PowerOff '------------------------------------------------ GetCmnd: 'set defaults PTP SETON PTP ALLON 'flash blue LED to indicate we are here IF f_MotorPower=1 THEN OUT 52,0 'blue LED ON=ready for cmnd if Power ON ELSE OUT 52,1 'blue LED OFF=ready for cmnd if Power OFF DELAY 500 'so it blinks slowly while Power off ENDIF 'ACTION 5 'this does K7, but only once after reset or power on!!!??? why? 'GOSUB robot_voltage GOSUB robot_tilt 'Scmnd is updated by any PCserial command byte IF Scmnd = 0 THEN GOTO getIRcmnd 'no cmnd from PC IF Scmnd > 47 THEN GOTO ASCII_proc 'PCserial cmnd ASCII cmnd =Scmnd Scmnd =0 'don't repeat cmnd GOTO cmndbranch getIRcmnd: cmnd =REMOCON(1) cmnd =cmnd - ID GOTO cmndbranch ASCII_proc: 'use number keys and letter keys 'use keys '0'=48(0) - '9'=57(9) and 'A'=65(10) - 'W'=87(32) IF Scmnd>57 THEN GOTO ascii_proc_chars ascii_proc_nums: cmnd = Scmnd - 48 Scmnd =0 'don't repeat cmnd GOTO cmndbranch ascii_proc_chars: cmnd = Scmnd - 55 '':'=58 - '@'=64 will do 3 - 9 also Scmnd =0 'don't repeat cmnd GOTO cmndbranch cmndbranch: IF cmnd=18 THEN cmndpage =0 'base page MUSIC "O1C" GOTO GetCmnd ENDIF IF cmnd=23 THEN 'choose a new speed f_AwaitSpeed =1 MUSIC "O4C" GOTO GetCmnd ENDIF IF cmnd=32 THEN 'choose a new page f_AwaitPage =1 MUSIC "O4C" GOTO GetCmnd ENDIF IF f_AwaitPage=1 AND cmnd<>0 THEN 'process new page value GOSUB MusicNote 'play cmnd cmndpage =cmnd f_AwaitPage =0 GOTO GetCmnd ENDIF IF cmndpage>maxpage THEN 'if illegal page then cmndpage =0 'base page MUSIC "O0C" GOTO GetCmnd ENDIF IF f_AwaitSpeed=1 AND cmnd<>0 THEN 'process new speed value GOSUB MusicNote 'play cmnd Sspeed =3 *cmnd SPEED Sspeed f_AwaitSpeed =0 GOTO GetCmnd ENDIF IF Sspeed>maxspeed THEN 'if illegal speed then Sspeed =5 SPEED Sspeed 'default speed cmnd =5 GOSUB MusicNote 'play cmnd GOSUB MusicNote 'play cmnd GOSUB MusicNote 'play cmnd GOTO GetCmnd ENDIF IF f_MotorPower=1 THEN OUT 52,1 'blue LED OFF while doing stuff ELSE OUT 52,0 'blue LED ON while disabled ENDIF ON cmnd GOTO GetCmnd,K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15,K16,K17,K18,K19,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K30,K31,K32 'if invalid fall through and GOTO GetCmnd GOTO GetCmnd '------------------------------------------------ k1: k1Stand: ON f_StandAttention GOTO StandAttention, D_Stand StandAttention: SPEED 10 GOSUB P_StandAttention WAIT f_standing =1 f_StandAttention =1 GOTO GetCmnd '-------------------------------------- k2: Clap: GOSUB hand_clapping GOTO D_EndPose '-------------------------------------- k3: Bow: SPEED 10 GOSUB P_arms_100_30_80 WAIT SPEED 5 GOSUB P_bow WAIT DELAY 1000 GOTO D_EndPose ' GOSUB fast_turn_left ' DELAY 1000 ' GOTO Stand '-------------------------------------- k4: HandsUp: SPEED 10 GOSUB P_hans_up GOTO GetCmnd '-------------------------------------- k5: 'P_right_attack1: MOVE G6D, 85, 71, 152, 91, 107, 60 MOVE G6A, 108, 76, 145, 93, 100, 60 MOVE G6C, 100, 40, 80, , , , MOVE G6B, 100, 40, 80, , , , 'RETURN 'GOSUB left_turn1 GOTO GetCmnd '-------------------------------------- k6: 'left_turn: SPEED 6 'arms downish, feet together, lean left, stand on left MOVE G6A, 112, 76, 145, 93, 92, 60 MOVE G6D, 85, 71, 152, 91, 112, 60 MOVE G6B, 100, 40, 80, , , , MOVE G6C, 100, 40, 80, , , , WAIT'GOSUB left_turn2 GOTO GetCmnd '-------------------------------------- k7: MUSIC "HFL" GOTO GetCmnd ' GOSUB fast_run ' GOTO Stand '-------------------------------------- k8: GOSUB right_shoot GOSUB P_stand WAIT DELAY 500 GOSUB left_shoot GOTO D_Stand '-------------------------------------- k9: MUSIC "HFL" GOTO GetCmnd '-------------------------------------- k10: 'A '0 GOSUB fast_walk GOTO D_Stand '-------------------------------------- k11: 'B '^1 IF f_standing=1 THEN GOSUB forward_walk ELSE GOSUB SquatWalkFd ENDIF GOTO GetCmnd '-------------------------------------- k12: 'C '_1 IF f_standing=1 THEN GOSUB backward_walk ELSE GOSUB SquatWalkBk ENDIF GOTO GetCmnd '-------------------------------------- k13: 'D '>1 IF f_standing=1 THEN GOSUB right_shift ELSE GOSUB SquatWalkR ENDIF GOTO GetCmnd '-------------------------------------- k14: 'E '<1 IF f_standing=1 THEN GOSUB left_shift ELSE GOSUB SquatWalkL ENDIF GOTO GetCmnd '-------------------------------------- k15: 'F 'A ON cmndpage GOTO PunchL,footup_balance GOTO GetCmnd PunchL: GOSUB left_attack GOSUB P_squat WAIT GOTO D_EndPose footup_balance: GOSUB foot_up GOTO D_Stand '-------------------------------------- k16: 'G 'Off SquatPowerCtrl: IF f_MotorPower =1 THEN GOTO Squat_PowerOff Squat_PowerOn: 'motor start position read GETMOTORSET G24,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0 MOTOR G24 f_MotorPower =1 GOSUB A_Squat SquatAndPowerCtrl_Snd_PwrOn: TEMPO 230 MUSIC "CDEF" GOTO GetCmnd Squat_PowerOff: GOSUB A_Squat MOTOROFF G24 'motor power off f_MotorPower =0 SquatAndPowerCtrl_Snd_PwrOff: TEMPO 230 MUSIC "FEDC" GOTO GetCmnd '-------------------------------------- k17: 'H 'C ON cmndpage GOTO PunchLF,BirdFlap GOTO GetCmnd PunchLF: GOSUB left_forward GOSUB P_squat WAIT GOTO D_EndPose BirdFlap: GOSUB wing_move GOTO D_Stand '-------------------------------------- k18: 'I 'E 'Page0 GOTO GetCmnd '-------------------------------------- k19: 'J 'P2 ON cmndpage GOTO GetUpBk,AutoGetUpBkOff,AutoGetUpBkOn GOTO GetCmnd GetUpBk: Ain = AD(5) 'TipSensor IF Ain > 200 THEN 'if already upright then liedown SPEED 8 GOSUB LieDownBk f_GetUpBk =0 'disable auto get up GOTO GetCmnd ENDIF GOSUB backward_Standup GOTO D_EndPose AutoGetUpBkOff: f_GetUpBk =0 MUSIC "HBL" GOTO GetCmnd AutoGetUpBkOn: f_GetUpBk =1 MUSIC "HBBL" GOTO GetCmnd '-------------------------------------- k20: 'K 'B ON cmndpage GOTO PunchR,BodyRock GOTO GetCmnd PunchR: GOSUB right_attack GOSUB P_squat WAIT GOTO D_EndPose BodyRock: GOSUB body_move GOTO D_Stand '-------------------------------------- k21: 'L '^2 ON cmndpage GOTO GetCmnd,ForwardRoll GOTO GetCmnd ForwardRoll: GOSUB forward_tumbling GOTO D_EndPose '-------------------------------------- k22: 'M '* GOSUB left_turn GOTO D_Stand '-------------------------------------- k23: ' N 'F ' GOSUB fast_turn_right ' DELAY 1000 ' GOTO Stand 'speed =next key GOTO GetCmnd '-------------------------------------- k24: 'O '# GOSUB right_turn GOTO D_Stand '-------------------------------------- k25: 'P 'P1 ON cmndpage GOTO GetUpFd,AutoGetUpFdOff,AutoGetUpFdOn GOTO GetCmnd GetUpFd: Ain = AD(5) 'TipSensor IF Ain > 200 THEN 'if already upright then liedown SPEED 8 GOSUB LieDownFd f_GetUpFd =0 'disable auto get up GOTO GetCmnd ENDIF GOSUB forward_standup GOTO D_EndPose AutoGetUpFdOff: f_GetUpFd =0 MUSIC "HBL" GOTO GetCmnd AutoGetUpFdOn: f_GetUpFd =1 MUSIC "HBBL" GOTO GetCmnd '-------------------------------------- k26: 'Q '[] 1 IF f_standing=1 THEN GOSUB A_Squat f_standing =0 ELSE GOSUB A_Stand f_standing =1 ENDIF GOTO GetCmnd '-------------------------------------- k27: 'R 'D GOSUB right_forward GOSUB P_squat WAIT GOTO D_EndPose '-------------------------------------- k28: 'S '<2 ON cmndpage GOTO GetCmnd,CartwheelL GOTO GetCmnd CartwheelL: GOSUB left_tumbling SPEED 10 GOTO D_EndPose '-------------------------------------- k29: 'T '[]2 ON cmndpage GOTO PunchF,HandStand GOTO GetCmnd PunchF: GOSUB forward_punch SPEED 10 GOTO D_Stand Handstand: SPEED 8 GOSUB fall_forward GOSUB standard_pose WAIT GOSUB foot_up2 GOSUB standard_pose WAIT GOSUB back_stand_up DELAY 1000 GOSUB P_arms_100_30_80 GOTO D_EndPose '-------------------------------------- k30: 'U '>2 ON cmndpage GOTO GetCmnd,CartwheelR GOTO GetCmnd CartwheelR: GOSUB righ_tumbling SPEED 10 GOTO D_EndPose '-------------------------------------- k31: ON cmndpage GOTO GetCmnd,BackwardRoll GOTO GetCmnd BackwardRoll: 'V '_2 GOSUB back_tumbling GOSUB back_standing SPEED 10 GOTO D_EndPose '-------------------------------------- k32: 'W 'G 'Page=nextkey GOTO GetCmnd '-------------------------------------- '--Terminators----------------------------------- '------------------------------------------------ D_Stand: ' GOSUB P_arms_100_30_80 GOSUB P_stand WAIT f_standing =1 f_StandAttention =0 GOTO GetCmnd '------------------------------------------------ D_EndPose: IF f_standing=1 THEN GOSUB A_StandEasy ELSE GOSUB A_squat ENDIF GOTO GetCmnd '== Poses ======================================= standard_pose: P_StandEasy: MOVE G6B, 100, 30, 80, 100, 100, 100 MOVE G6C, 100, 30, 80, 100, 100, 100 P_stand: MOVE G6A, 100, 76, 145, 93, 100', 100 MOVE G6D, 100, 76, 145, 93, 100', 100 RETURN '------------------------------------------------ P_StandAttention: MOVE G6A, 100, 56, 185, 73, 100, 100 MOVE G6B, 100, 12, 96, 100, 100, 100 MOVE G6C, 100, 12, 96, 100, 100, 100 MOVE G6D, 100, 56, 185, 73, 100, 100 RETURN '------------------------------------------------ P_squat: MOVE G6A, 100, 151, 23, 140, 101, 100 MOVE G6D, 100, 151, 23, 140, 101, 100 RETURN '------------------------------------------------ P_bow: MOVE G6A, 100, 58, 135, 160, 100, 100 MOVE G6D, 100, 58, 135, 160, 100, 100 RETURN '------------------------------------------------ P_hans_up: MOVE G6B, 100, 168, 150 MOVE G6C, 100, 168, 150 RETURN '------------------------------------------------ P_arms_100_30_80: 'arms down MOVE G6B, 100, 30, 80 MOVE G6C, 100, 30, 80 RETURN '------------------------------------------------ P_arms_100_35_90: MOVE G6B, 100, 40, 80 MOVE G6C, 100, 40, 80 RETURN '------------------------------------------------ P_arms_100_40_80: 'arms ready stance MOVE G6B, 100, 40, 80, , , , RETURN '------------------------------------------------ P_arms_100_105_80: MOVE G6B, 100, 105, 80 MOVE G6C, 100, 105, 80 RETURN '------------------------------------------------ '== Acts ======================================== A_StandEasy: GOSUB P_arms_100_30_80 '--------------- A_Stand: GOSUB P_stand f_standing =1 WAIT RETURN '------------------------------------------------ A_Squat: GOSUB P_arms_100_30_80 GOSUB P_Squat f_standing =0 WAIT RETURN '------------------------------------------------ '================================================ LieDownFd: GOSUB fall_forward GOSUB standard_pose RETURN '------------------------------------------------ LieDownBk: SPEED 8 MOVE G6A, 100, 170, 71, 23, 100, 100 MOVE G6D, 100, 170, 71, 23, 100, 100 MOVE G6B, 80, 50, 70, 100, 100, 100 MOVE G6C, 80, 50, 70, 100, 100, 100 WAIT MOVE G6A, 100, 133, 71, 23, 100, 100 MOVE G6D, 100, 133, 71, 23, 100, 100 MOVE G6B, 10, 96, 15, 100, 100, 100 MOVE G6C, 10, 96, 14, 100, 100, 100 WAIT MOVE G6A, 100, 133, 49, 23, 100, 100 MOVE G6D, 100, 133, 49, 23, 100, 100 MOVE G6B, 45, 116, 15, 100, 100, 100 MOVE G6C, 45, 116, 14, 100, 100, 100 WAIT GOSUB standard_pose RETURN '------------------------------------------------ foot_up: SPEED 5 MOVE G6A, 85, 71, 152, 91, 112, 60, MOVE G6D, 112, 76, 145, 93, 92, 60, GOSUB P_arms_100_40_80 WAIT MOVE G6A, 90, 98, 105, 115, 115, 60, MOVE G6D, 116, 74, 145, 98, 93, 60, MOVE G6B, 100, 95, 100 MOVE G6C, 100, 105, 100 WAIT MOVE G6A, 100, 151, 23, 140, 115 WAIT DELAY 1000 MOVE G6A, 85, 71, 152, 91, 112, 60, MOVE G6D, 112, 76, 145, 93, 92, 60, WAIT RETURN '------------------------------------------------ body_move: SPEED 6 GOSUB body_move1 GOSUB body_move2 GOSUB body_move3 MOVE G6A, 93, 76, 145, 94, 109, 100 MOVE G6D, 93, 76, 145, 94, 109, 100 GOSUB P_arms_100_105_80 WAIT MOVE G6A, 104, 112, 92, 116, 107 MOVE G6D, 79, 81, 145, 95, 108 WAIT MOVE G6A, 93, 76, 145, 94, 109, 100 MOVE G6D, 93, 76, 145, 94, 109, 100 WAIT MOVE G6D, 104, 112, 92, 116, 107 MOVE G6A, 79, 81, 145, 95, 108 WAIT MOVE G6A, 93, 76, 145, 94, 109, 100 MOVE G6D, 93, 76, 145, 94, 109, 100 WAIT GOSUB body_move3 GOSUB body_move2 GOSUB body_move1 RETURN body_move1: MOVE G6A, 85, 71, 152, 91, 112, 60 MOVE G6D,112, 76, 145, 93, 92, 60 GOSUB P_arms_100_40_80 WAIT RETURN body_move2: MOVE G6D,110, 92, 124, 97, 93, 70 MOVE G6A, 76, 72, 160, 82, 128, 70 GOSUB P_arms_100_35_90 WAIT RETURN body_move3: MOVE G6A, 93, 76, 145, 94, 109, 100 MOVE G6D, 93, 76, 145, 94, 109, 100 GOSUB P_arms_100_35_90 WAIT RETURN '------------------------------------------------ wing_move: DIM wmi AS BYTE 'loop counter SPEED 5 MOVE G6A, 85, 71, 152, 91, 112, 60 MOVE G6D,112, 76, 145, 93, 92, 60 GOSUB P_arms_100_40_80 WAIT MOVE G6A, 90, 98, 105, 115, 115, 60 MOVE G6D,116, 74, 145, 98, 93, 60 MOVE G6B,100, 150, 150, 100, 100, 100 MOVE G6C,100, 150, 150, 100, 100, 100 WAIT MOVE G6A, 90, 121, 36, 105, 115, 60 MOVE G6D,116, 60, 146, 138, 93, 60 MOVE G6B,100, 150, 150, 100, 100, 100 MOVE G6C,100, 150, 150, 100, 100, 100 WAIT MOVE G6A, 90, 98, 105, 64, 115, 60 MOVE G6D,116, 50, 160, 160, 93, 60 MOVE G6B,145, 110, 110, 100, 100, 100 MOVE G6C,145, 110, 110, 100, 100, 100 WAIT FOR wmi = 10 TO 15 SPEED wmi MOVE G6B,145, 80, 80, 100, 100, 100 MOVE G6C,145, 80, 80, 100, 100, 100 WAIT MOVE G6B,145, 120, 120, 100, 100, 100 MOVE G6C,145, 120, 120, 100, 100, 100 WAIT NEXT wmi DELAY 1000 SPEED 6 MOVE G6A, 90, 98, 105, 64, 115, 60 MOVE G6D,116, 50, 160, 160, 93, 60 MOVE G6B,100, 160, 180, 100, 100, 100 MOVE G6C,100, 160, 180, 100, 100, 100 WAIT MOVE G6A, 90, 121, 36, 105, 115, 60 MOVE G6D,116, 60, 146, 138, 93, 60 MOVE G6B,100, 150, 150, 100, 100, 100 MOVE G6C,100, 150, 150, 100, 100, 100 WAIT SPEED 4 MOVE G6A, 90, 98, 105, 115, 115, 60 MOVE G6D,116, 74, 145, 98, 93, 60 WAIT MOVE G6A, 85, 71, 152, 91, 112, 60 MOVE G6D,112, 76, 145, 93, 92, 60 MOVE G6B,100, 40, 80, , , , MOVE G6C,100, 40, 80, , , , WAIT RETURN '------------------------------------------------ right_shoot: SPEED 4 MOVE G6A,112, 56, 180, 79, 104, 100 MOVE G6D, 70, 56, 180, 79, 102, 100 MOVE G6B,110, 45, 70, 100, 100, 100 MOVE G6C, 90, 45, 70, 100, 100, 100 WAIT right_shoot1: SPEED 6 MOVE G6A,115, 60, 180, 79, 95, 100 MOVE G6D, 90, 90, 127, 65, 116, 100 MOVE G6B, 80, 45, 70, 100, 100, 100 MOVE G6C,120, 45, 70, 100, 100, 100 WAIT SPEED 15 HIGHSPEED SETON right_shoot2: MOVE G6A,115, 52, 180, 79, 95, 100 MOVE G6D, 90, 90, 127, 147, 116, 100 MOVE G6B,140, 45, 70, 100, 100, 100 MOVE G6C, 60, 45, 70, 100, 100, 100 WAIT DELAY 500 HIGHSPEED SETOFF right_shoot3: SPEED 5 MOVE G6A,115, 76, 145, 93, 102, 100 MOVE G6D, 70, 76, 145, 93, 104, 100 MOVE G6B,110, 45, 70, 100, 100, 100 MOVE G6C, 90, 45, 70, 100, 100, 100 WAIT RETURN '------------------------------------------------ left_shoot: SPEED 4 MOVE G6A, 70, 56, 180, 79, 102, 100 MOVE G6D,112, 56, 180, 79, 104, 100 MOVE G6B, 90, 45, 70, 100, 100, 100 MOVE G6C,110, 45, 70, 100, 100, 100 WAIT left_shoot1: SPEED 6 MOVE G6A, 90, 90, 127, 65, 116, 100 MOVE G6D,115, 60, 180, 79, 95, 100 MOVE G6B,140, 45, 70, 100, 100, 100 MOVE G6C, 60, 45, 70, 100, 100, 100 WAIT SPEED 15 HIGHSPEED SETON left_shoot2: MOVE G6A, 90, 90, 127, 147, 116, 100 MOVE G6D,115, 52, 180, 79, 95, 100 MOVE G6B, 60, 45, 70, 100, 100, 100 MOVE G6C,140, 45, 70, 100, 100, 100 WAIT DELAY 500 HIGHSPEED SETOFF left_shoot3: SPEED 5 MOVE G6A, 70, 76, 145, 93, 104, 100 MOVE G6D,115, 76, 145, 93, 102, 100 MOVE G6B, 90, 45, 70, 100, 100, 100 MOVE G6C,110, 45, 70, 100, 100, 100 WAIT RETURN '------------------------------------------------ fall_forward: 'handstanding SPEED 10 MOVE G6A, 100, 155, 25, 140, 100, 100 MOVE G6D, 100, 155, 25, 140, 100, 100 MOVE G6B, 130, 50, 85, 100, 100, 100 MOVE G6C, 130, 50, 85, 100, 100, 100 WAIT MOVE G6A, 60, 165, 25, 160, 145, 100 MOVE G6D, 60, 165, 25, 160, 145, 100 MOVE G6B, 150, 60, 90, 100, 100, 100 MOVE G6C, 150, 60, 90, 100, 100, 100 WAIT MOVE G6A, 60, 165, 30, 165, 155, 100 MOVE G6D, 60, 165, 30, 165, 155, 100 MOVE G6B, 170, 10, 100, 100, 100, 100 MOVE G6C, 170, 10, 100, 100, 100, 100 WAIT SPEED 3 MOVE G6A, 75, 165, 55, 165, 155, 100 MOVE G6D, 75, 165, 55, 165, 155, 100 MOVE G6B, 185, 10, 100, 100, 100, 100 MOVE G6C, 185, 10, 100, 100, 100, 100 WAIT SPEED 10 MOVE G6A, 80, 155, 85, 150, 150, 100 MOVE G6D, 80, 155, 85, 150, 150, 100 MOVE G6B, 185, 40, 60, 100, 100, 100 MOVE G6C, 185, 40, 60, 100, 100, 100 WAIT MOVE G6A, 100, 130, 120, 80, 110, 100 MOVE G6D, 100, 130, 120, 80, 110, 100 MOVE G6B, 125, 160, 10, 100, 100, 100 MOVE G6C, 125, 160, 10, 100, 100, 100 WAIT RETURN '------------------------------------------------ foot_up2: 'handstanding SPEED 6 MOVE G6A, 100, 125, 65, 10, 100, , MOVE G6D, 100, 125, 65, 10, 100, , MOVE G6B, 110, 30, 80, , , , MOVE G6C, 110, 30, 80, , , , SPEED 3 MOVE G6A, 100, 125, 65, 10, 100, , MOVE G6D, 100, 125, 65, 10, 100, , MOVE G6B, 170, 30, 80, , , , MOVE G6C, 170, 30, 80, , , , WAIT DELAY 200 SPEED 6 MOVE G6A, 100, 89, 129, 57, 100, , MOVE G6D, 100, 89, 129, 57, 100, , MOVE G6B, 180, 30, 80, , , , MOVE G6C, 180, 30, 80, , , , WAIT MOVE G6A, 100, 64, 179, 57, 100, , MOVE G6D, 100, 64, 179, 57, 100, , MOVE G6B, 190, 50, 80, , , , MOVE G6C, 190, 50, 80, , , , WAIT DELAY 2000 MOVE G6A, 100, 64, 179, 57, 100, , MOVE G6D, 100, 64, 179, 57, 100, , MOVE G6B, 190, 50, 80, , , , MOVE G6C, 190, 50, 80, , , , WAIT MOVE G6A, 100, 89, 129, 57, 100, , MOVE G6D, 100, 89, 129, 57, 100, , MOVE G6B, 180, 30, 80, , , , MOVE G6C, 180, 30, 80, , , , WAIT SPEED 3 MOVE G6A, 100, 125, 65, 10, 100, , MOVE G6D, 100, 125, 65, 10, 100, , MOVE G6B, 170, 30, 80, , , , MOVE G6C, 170, 30, 80, , , , WAIT SPEED 6 MOVE G6A, 100, 125, 65, 10, 100, , MOVE G6D, 100, 125, 65, 10, 100, , MOVE G6B, 110, 30, 80, , , , MOVE G6C, 110, 30, 80, , , , WAIT RETURN '------------------------------------------------ back_stand_up: 'Handstand -> SPEED 10 MOVE G6A, 100, 130, 120, 80, 110, 100 MOVE G6D, 100, 130, 120, 80, 110, 100 MOVE G6B, 150, 160, 10, 100, 100, 100 MOVE G6C, 150, 160, 10, 100, 100, 100 WAIT MOVE G6A, 80, 155, 85, 150, 150, 100 MOVE G6D, 80, 155, 85, 150, 150, 100 MOVE G6B, 185, 40, 60, 100, 100, 100 MOVE G6C, 185, 40, 60, 100, 100, 100 WAIT MOVE G6A, 75, 165, 55, 165, 155, 100 MOVE G6D, 75, 165, 55, 165, 155, 100 MOVE G6B, 185, 10, 100, 100, 100, 100 MOVE G6C, 185, 10, 100, 100, 100, 100 WAIT MOVE G6A, 60, 165, 30, 165, 155, 100 MOVE G6D, 60, 165, 30, 165, 155, 100 MOVE G6B, 170, 10, 100, 100, 100, 100 MOVE G6C, 170, 10, 100, 100, 100, 100 WAIT MOVE G6A, 60, 165, 25, 160, 145, 100 MOVE G6D, 60, 165, 25, 160, 145, 100 MOVE G6B, 150, 60, 90, 100, 100, 100 MOVE G6C, 150, 60, 90, 100, 100, 100 WAIT MOVE G6A, 100, 155, 25, 140, 100, 100 MOVE G6D, 100, 155, 25, 140, 100, 100 MOVE G6B, 130, 50, 85, 100, 100, 100 MOVE G6C, 130, 50, 85, 100, 100, 100 WAIT RETURN '------------------------------------------------ fast_walk: DIM fwi AS BYTE 'loop counter SPEED 10 'elbows straighter MOVE G6B,100, 30, 90 MOVE G6C,100, 30, 90 WAIT SPEED 7 fast_run01: MOVE G6A, 90, 72, 148, 93, 110, 70 MOVE G6D,108, 75, 145, 93, 95, 70 WAIT SPEED 15 fast_run02: MOVE G6A, 90, 95, 105, 115, 110, 70 MOVE G6D,112, 75, 145, 93, 95, 70 MOVE G6B, 90, 30, 90, 100, 100, 100 MOVE G6C,110, 30, 90, 100, 100, 100 WAIT SPEED 15 '---------------------------- 4 times FOR fwi = 1 TO 4 fast_run20: MOVE G6A,100, 80, 119, 118, 106, 100 MOVE G6D,105, 75, 145, 93, 100, 100 MOVE G6B, 80, 30, 90, 100, 100, 100 MOVE G6C,120, 30, 90, 100, 100, 100 fast_run21: MOVE G6A,105, 74, 140, 106, 100, 100 MOVE G6D, 95, 105, 124, 93, 106, 100 MOVE G6B,100, 30, 90, 100, 100, 100 MOVE G6C,100, 30, 90, 100, 100, 100 fast_run22: MOVE G6D,100, 80, 119, 118, 106, 100 MOVE G6A,105, 75, 145, 93, 100, 100 MOVE G6C, 80, 30, 90, 100, 100, 100 MOVE G6B,120, 30, 90, 100, 100, 100 fast_run23: MOVE G6D,105, 74, 140, 106, 100, 100 MOVE G6A, 95, 105, 124, 93, 106, 100 MOVE G6C,100, 30, 90, 100, 100, 100 MOVE G6B,100, 30, 90, 100, 100, 100 NEXT fwi '------------------------------ SPEED 8 MOVE G6A, 85, 80, 130, 95, 106, 100 MOVE G6D,108, 73, 145, 93, 100, 100 MOVE G6B, 80, 30, 90, 100, 100, 100 MOVE G6C,120, 30, 90, 100, 100, 100 WAIT fast_run03: MOVE G6A, 90, 72, 148, 93, 110, 70 MOVE G6D,108, 75, 145, 93, 93, 70 WAIT SPEED 5 RETURN '------------------------------------------------ left_turn: SPEED 6 'don't lean too fast 'feet together, lean left, stand on left,CGmid-foot MOVE G6A, 112, 76, 145, 93, 92, 60 MOVE G6D, 85, 71, 152, 91, 112, 60 'arms downish, need hands to clear hips GOSUB P_arms_100_40_80 WAIT 'right foot fwd, left foot back, 'arms swung opposite (slightly), and slightly out left_turn1: SPEED 9 MOVE G6A, 113, 75, 145, 97, 93, 60 MOVE G6D, 90, 50, 157, 115, 112, 60 MOVE G6B, 105, 40, 70 MOVE G6C, 90, 40, 70 WAIT ' RETURN 'lean less left so right foot is just touching floor 'right foot fwd, left foot back, 'arms swung opposite (more) left_turn2: MOVE G6A, 108, 78, 145, 98, 93, 60 MOVE G6D, 95, 43, 169, 110, 110, 60 MOVE G6B, 105, 40, 70 MOVE G6C, 80, 40, 70 WAIT RETURN '------------------------------------------------ right_turn: SPEED 6 'don't lean too fast 'feet together, lean right, stand on right,CGmid-foot MOVE G6A, 85, 71, 152, 91, 112, 60 MOVE G6D, 112, 76, 145, 93, 92, 60 'arms downish, need hands to clear hips GOSUB P_arms_100_40_80 WAIT SPEED 9 'left foot fwd, right foot back 'arms swung opposite (slightly), and slightly out MOVE G6A, 90, 50, 157, 115, 112, 60 MOVE G6D, 113, 75, 145, 97, 93, 60 MOVE G6B, 90, 40, 70, , , , MOVE G6C, 105, 40, 70, , , , WAIT 'lean less right so left foot is just touching floor 'left foot fwd, right foot back, 'arms swung opposite (more) MOVE G6D, 108, 78, 145, 98, 93, 60 MOVE G6A, 95, 43, 169, 110, 110, 60 MOVE G6C, 105, 40, 70 MOVE G6B, 80, 40, 70 WAIT RETURN '------------------------------------------------ forward_walk: SPEED 5 MOVE G6A, 85, 71, 152, 91, 112, 60 MOVE G6D, 112, 76, 145, 93, 92, 60 GOSUB P_arms_100_40_80 SPEED 14 'left up MOVE G6A, 90, 107, 105, 105, 114, 60 MOVE G6B, 90, 40, 80 MOVE G6C, 100, 40, 80 MOVE G6D, 114, 76, 145, 93, 90, 60 '--------------------------------------- 'left down MOVE G6A, 90, 56, 143, 122, 114, 60 MOVE G6B, 80, 40, 80 MOVE G6C, 105, 40, 80 MOVE G6D, 113, 80, 145, 90, 90, 60 MOVE24 90, 46, 163, 112, 114, 60, 80, 40, 80, , , , 105, 40, 80, , , , 112, 80, 145, 90, 90, 60, SPEED 10 'left center MOVE24 100, 66, 141, 113, 100, 100, 90, 40, 80, , , , 100, 40, 80, , , , 100, 83, 156, 80, 100, 100, MOVE24 113, 78, 142, 105, 90, 60, 100, 40, 80, , , , 100, 40, 80, , , , 90, 102, 136, 85, 114, 60, SPEED 14 'right up MOVE24 113, 76, 145, 93, 90, 60, 100, 40, 80, , , , 90, 40, 80, , , , 90, 107, 105, 105, 114, 60, 'right down MOVE24 113, 80, 145, 90, 90, 60, 105, 40, 80, , , , 80, 40, 80, , , , 90, 56, 143, 122, 114, 60, MOVE24 112, 80, 145, 90, 90, 60, 105, 40, 80, , , , 80, 40, 80, , , , 90, 46, 163, 112, 114, 60, SPEED 10 'right center MOVE24 100, 83, 156, 80, 100, 100, 100, 40, 80, , , , 90, 40, 80, , , , 100, 66, 141, 113, 100, 100, MOVE24 90, 102, 136, 85, 114, 60, 100, 40, 80, , , , 100, 40, 80, , , , 113, 78, 142, 105, 90, 60, SPEED 14 'left up MOVE24 90, 107, 105, 105, 114, 60, 90, 40, 80, , , , 100, 40, 80, , , , 113, 76, 145, 93, 90, 60, '--------------------------------------- SPEED 5 MOVE24 85, 71, 152, 91, 112, 60, 100, 40, 80, , , , 100, 40, 80, , , , 112, 76, 145, 93, 92, 60, GOSUB A_Stand WAIT RETURN '------------------------------------------------ left_shift: SPEED 5 GOSUB left_shift1 SPEED 9 GOSUB left_shift2 GOSUB left_shift3 GOSUB left_shift4 GOSUB left_shift5 GOSUB left_shift6 SPEED 5 GOSUB A_Stand WAIT RETURN '-------------------- left_shift1: MOVE G6A, 85, 71, 152, 91, 112, 60, MOVE G6D, 112, 76, 145, 93, 92, 60, GOSUB P_arms_100_40_80 WAIT RETURN left_shift2: MOVE G6D, 110, 92, 124, 97, 93, 70, MOVE G6A, 76, 72, 160, 82, 128, 70, GOSUB P_arms_100_35_90 WAIT RETURN left_shift3: MOVE G6A, 93, 76, 145, 94, 109, 100, MOVE G6D, 93, 76, 145, 94, 109, 100, WAIT RETURN left_shift4: MOVE G6A, 110, 92, 124, 97, 93, 70, MOVE G6D, 76, 72, 160, 82, 128, 70, WAIT RETURN left_shift5: MOVE G6D, 86, 83, 135, 97, 114, 60, MOVE G6A, 113, 78, 145, 93, 93, 60, MOVE G6C, 90, 40, 80, , , , MOVE G6B, 100, 40, 80, , , , WAIT RETURN left_shift6: MOVE G6D, 85, 71, 152, 91, 112, 60, MOVE G6A, 112, 76, 145, 93, 92, 60, GOSUB P_arms_100_40_80 WAIT RETURN '------------------------------------------------ right_shift: SPEED 5 GOSUB right_shift1 SPEED 9 GOSUB right_shift2 GOSUB right_shift3 GOSUB right_shift4 GOSUB right_shift5 GOSUB right_shift6 SPEED 5 GOSUB A_Stand WAIT RETURN '-------------------- right_shift1: MOVE G6D, 85, 71, 152, 91, 112, 60 MOVE G6A, 112, 76, 145, 93, 92, 60 GOSUB P_arms_100_40_80 WAIT RETURN right_shift2: MOVE G6A,110, 92, 124, 97, 93, 70 MOVE G6D, 76, 72, 160, 82, 128, 70 GOSUB P_arms_100_35_90 WAIT RETURN right_shift3: MOVE G6A, 93, 76, 145, 94, 109, 100 MOVE G6D, 93, 76, 145, 94, 109, 100 WAIT RETURN right_shift4: MOVE G6D,110, 92, 124, 97, 93, 70 MOVE G6A, 76, 72, 160, 82, 128, 70 WAIT RETURN right_shift5: MOVE G6A, 86, 83, 135, 97, 114, 60 MOVE G6D,113, 78, 145, 93, 93, 60 MOVE G6B, 90, 40, 80, , , , MOVE G6C,100, 40, 80, , , , WAIT RETURN right_shift6: MOVE G6A, 85, 71, 152, 91, 112, 60 MOVE G6D,112, 76, 145, 93, 92, 60 GOSUB P_arms_100_40_80 WAIT RETURN '------------------------------------------------ backward_walk: TEMPO 200 SPEED 5 GOSUB backward_walk1 SPEED 13 GOSUB backward_walk2 SPEED 7 GOSUB backward_walk3 SPEED 3 GOSUB backward_walk4 SPEED 4 GOSUB backward_walk5 SPEED 13 GOSUB backward_walk6 SPEED 7 GOSUB backward_walk7 SPEED 3 GOSUB backward_walk8 SPEED 4 GOSUB backward_walk9 SPEED 13 GOSUB backward_walk2 SPEED 5 GOSUB backward_walk1 GOSUB A_Stand WAIT RETURN '-------------------- backward_walk1: MOVE G6A, 90, 71, 152, 91, 112', 60 MOVE G6D,113, 76, 145, 93, 92', 60 MOVE G6C,100', 40, 80 MOVE G6B,100', 40, 80 WAIT RETURN backward_walk2: MOVE G6A, 90, 107, 105, 105, 114', 60 MOVE G6D,113, 78, 145, 93, 90', 60 MOVE G6B, 90', 40, 80 MOVE G6C,100', 40, 80 WAIT RETURN backward_walk3: MOVE G6D,113, 76, 142, 105, 90', 60 MOVE G6A, 90, 96, 136, 85, 114', 60 MOVE G6C,100', 40, 80 MOVE G6B,100', 40, 80 WAIT RETURN backward_walk4: MOVE G6D,100, 62, 146, 108, 100', 100 MOVE G6A,100, 88, 140, 86, 100', 100 MOVE G6C, 90', 40, 80 MOVE G6B,100', 40, 80 WAIT RETURN backward_walk5: MOVE G6D, 90, 56, 143, 122, 114', 60 MOVE G6A,113, 80, 145, 90, 90', 60 MOVE G6C, 80', 40, 80 MOVE G6B,105', 40, 80 WAIT RETURN backward_walk6: MOVE G6D, 90, 107, 105, 105, 114', 60 MOVE G6A,113, 78, 145, 93, 90', 60 MOVE G6C,90', 40, 80, , , , MOVE G6B,100', 40, 80, , , , WAIT RETURN backward_walk7: MOVE G6A,113, 76, 142, 105, 90', 60 MOVE G6D, 90, 96, 136, 85, 114', 60 MOVE G6C,100', 40, 80 MOVE G6B,100', 40, 80 WAIT RETURN backward_walk8: MOVE G6A,100, 62, 146, 108, 100', 100 MOVE G6D,100, 88, 140, 86, 100', 100 MOVE G6B, 90', 40, 80 MOVE G6C,100', 40, 80 WAIT RETURN backward_walk9: MOVE G6A, 90, 56, 143, 122, 114', 60 MOVE G6D,113, 80, 145, 90, 90', 60 MOVE G6B, 80', 40, 80 MOVE G6C,105', 40, 80 WAIT RETURN '------------------------------------------------ forward_tumbling: 'K21=ForwardRoll -> SPEED 8 'GOSUB standard_pose MOVE G6A,100, 155, 20, 140, 100, 100 MOVE G6D,100, 155, 20, 140, 100, 100 MOVE G6B,130, 50, 85, 100, 100, 100 MOVE G6C,130, 50, 85, 100, 100, 100 WAIT MOVE G6A, 60, 165, 30, 165, 155, 100 MOVE G6D, 60, 165, 30, 165, 155, 100 MOVE G6B,170, 10, 100, 100, 100, 100 MOVE G6C,170, 10, 100, 100, 100, 100 WAIT MOVE G6A, 75, 165, 55, 165, 155, 100 MOVE G6D, 75, 165, 55, 165, 155, 100 MOVE G6B,185, 10, 100, 100, 100, 100 MOVE G6C,185, 10, 100, 100, 100, 100 WAIT MOVE G6A, 80, 155, 85, 150, 150, 100 MOVE G6D, 80, 155, 85, 150, 150, 100 MOVE G6B,185, 40, 60, 100, 100, 100 MOVE G6C,185, 40, 60, 100, 100, 100 WAIT MOVE G6A,100, 130, 120, 80, 110, 100 MOVE G6D,100, 130, 120, 80, 110, 100 MOVE G6B,130, 160, 10, 100, 100, 100 MOVE G6C,130, 160, 10, 100, 100, 100 WAIT MOVE G6A,100, 160, 110, 140, 100, 100 MOVE G6D,100, 160, 110, 140, 100, 100 MOVE G6B,140, 70, 20, 100, 100, 100 MOVE G6C,140, 70, 20, 100, 100, 100 WAIT SPEED 15 MOVE G6A,100, 56, 110, 26, 100, 100 MOVE G6D,100, 71, 177, 162, 100, 100 MOVE G6B,170, 40, 50, 100, 100, 100 MOVE G6C,170, 40, 50, 100, 100, 100 WAIT MOVE G6A,100, 62, 110, 15, 100, 100 MOVE G6D,100, 71, 128, 113, 100, 100 MOVE G6B,190, 40, 50, 100, 100, 100 MOVE G6C,190, 40, 50, 100, 100, 100 WAIT SPEED 15 MOVE G6A,100, 55, 110, 15, 100, 100 MOVE G6D,100, 55, 110, 15, 100, 100 MOVE G6B,190, 40, 50, 100, 100, 100 MOVE G6C,190, 40, 50, 100, 100, 100 WAIT SPEED 10 MOVE G6A,100, 110, 100, 15, 100, 100 MOVE G6D,100, 110, 100, 15, 100, 100 MOVE G6B,170, 160, 115, 100, 100, 100 MOVE G6C,170, 160, 115, 100, 100, 100 WAIT MOVE G6A,100, 170, 70, 15, 100, 100 MOVE G6D,100, 170, 70, 15, 100, 100 MOVE G6B,190, 170, 120, 100, 100, 100 MOVE G6C,190, 170, 120, 100, 100, 100 WAIT MOVE G6A,100, 170, 30, 110, 100, 100 MOVE G6D,100, 170, 30, 110, 100, 100 MOVE G6B,190, 40, 60, 100, 100, 100 MOVE G6C,190, 40, 60, 100, 100, 100 WAIT RETURN '------------------------------------------------ left_tumbling: SPEED 8 MOVE G6A,100, 135, 60, 123, 100, 100 MOVE G6D,100, 135, 60, 123, 100, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT DELAY 100 SPEED 3 MOVE G6A,114, 135, 60, 123, 105, 100 MOVE G6D, 88, 110, 91, 116, 100, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT DELAY 100 MOVE G6A,114, 135, 60, 123, 105, 100 MOVE G6D,89, 135, 60, 123, 100, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT MOVE G6A,120, 135, 60, 123, 110, 100 MOVE G6D, 89, 135, 60, 123, 130, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT SPEED 4 MOVE G6A,120, 135, 60, 123, 120, 100 MOVE G6D,89, 135, 60, 123, 158, 100 MOVE G6B,100, 165, 185, 100, 100, 100 MOVE G6C,100, 165, 185, 100, 100, 100 WAIT SPEED 8 MOVE G6A,120, 131, 60, 123, 185, 100 MOVE G6D,120, 131, 60, 123, 183, 100 MOVE G6B,100, 165, 185, 100, 100, 100 MOVE G6C,100, 165, 185, 100, 100, 100 WAIT DELAY 200 SPEED 5 MOVE G6A,120, 131, 60, 123, 185, 100 MOVE G6D,120, 131, 60, 123, 183, 100 MOVE G6B,100, 120, 145, 100, 100, 100 MOVE G6C,100, 120, 145, 100, 100, 100 WAIT SPEED 6 MOVE G6A, 86, 112, 73, 127, 101, 100 MOVE G6D,105, 131, 60, 123, 183, 100 MOVE G6B,100, 120, 145, 100, 100, 100 MOVE G6C,100, 120, 145, 100, 100, 100 WAIT SPEED 3 MOVE G6A, 86, 118, 73, 127, 101, 100 MOVE G6D,112, 131, 62, 123, 133, 100 MOVE G6B,100, 80, 80, 100, 100, 100 MOVE G6C,100, 80, 80, 100, 100, 100 WAIT SPEED 3 MOVE G6A, 88, 115, 86, 115, 90, 100 MOVE G6D,107, 135, 62, 123, 113, 100 MOVE G6B,100, 80, 80, 100, 100, 100 MOVE G6C,100, 80, 80, 100, 100, 100 WAIT SPEED 4 MOVE G6A,100, 135, 60, 123, 100, 100 MOVE G6D,100, 135, 60, 123, 100, 100 MOVE G6B,100, 80, 80, 100, 100, 100 MOVE G6C,100, 80, 80, 100, 100, 100 WAIT RETURN '------------------------------------------------ forward_punch: SPEED 15 MOVE G6A, 92, 100, 110, 100, 107, 100 MOVE G6D, 92, 100, 110, 100, 107, 100 MOVE G6B,190, 150, 10, 100, 100, 100 MOVE G6C,190, 150, 10, 100, 100, 100 WAIT SPEED 15 HIGHSPEED SETON MOVE G6B,190, 10, 75, 100, 100, 100 MOVE G6C,190, 140, 10, 100, 100, 100 WAIT DELAY 500 MOVE G6B,190, 140, 10, 100, 100, 100 MOVE G6C,190, 10, 75, 100, 100, 100 WAIT DELAY 500 MOVE G6A, 92, 100, 113, 100, 107, 100 MOVE G6D, 92, 100, 113, 100, 107, 100 MOVE G6B,190, 150, 10, 100, 100, 100 MOVE G6C,190, 150, 10, 100, 100, 100 WAIT HIGHSPEED SETOFF MOVE G6A,100, 115, 90, 110, 100, 100 MOVE G6D,100, 115, 90, 110, 100, 100 MOVE G6B,100, 80, 60, 100, 100, 100 MOVE G6C,100, 80, 60, 100, 100, 100 WAIT RETURN '------------------------------------------------ righ_tumbling: SPEED 8 MOVE G6A,100, 135, 60, 123, 100, 100 MOVE G6D,100, 135, 60, 123, 100, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT DELAY 100 SPEED 3 MOVE G6A, 83, 110, 91, 116, 100, 100 MOVE G6D,114, 135, 60, 123, 105, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT DELAY 100 MOVE G6A,89, 135, 60, 123, 100, 100 MOVE G6D,114, 135, 60, 123, 105, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT MOVE G6A, 89, 135, 60, 123, 130, 100 MOVE G6D,120, 135, 60, 123, 110, 100 MOVE G6B,100, 120, 140, 100, 100, 100 MOVE G6C,100, 120, 140, 100, 100, 100 WAIT SPEED 4 MOVE G6A,89, 135, 60, 123, 158, 100 MOVE G6D,120, 135, 60, 123, 120, 100 MOVE G6B,100, 165, 185, 100, 100, 100 MOVE G6C,100, 165, 185, 100, 100, 100 WAIT SPEED 8 MOVE G6A,120, 131, 60, 123, 183, 100 MOVE G6D,120, 131, 60, 123, 185, 100 MOVE G6B,100, 165, 185, 100, 100, 100 MOVE G6C,100, 165, 185, 100, 100, 100 WAIT DELAY 200 SPEED 5 MOVE G6A,120, 131, 60, 123, 183, 100 MOVE G6D,120, 131, 60, 123, 185, 100 MOVE G6B,100, 120, 145, 100, 100, 100 MOVE G6C,100, 120, 145, 100, 100, 100 WAIT SPEED 6 MOVE G6A,105, 131, 60, 123, 183, 100 MOVE G6D, 86, 112, 73, 127, 101, 100 MOVE G6B,100, 120, 145, 100, 100, 100 MOVE G6C,100, 120, 145, 100, 100, 100 WAIT SPEED 3 MOVE G6A,112, 131, 62, 123, 133, 100 MOVE G6D, 86, 118, 73, 127, 101, 100 MOVE G6B,100, 80, 80, 100, 100, 100 MOVE G6C,100, 80, 80, 100, 100, 100 WAIT SPEED 3 MOVE G6A,107, 135, 62, 123, 113, 100 MOVE G6D, 88, 115, 89, 115, 90, 100 MOVE G6B,100, 80, 80, 100, 100, 100 MOVE G6C,100, 80, 80, 100, 100, 100 WAIT SPEED 4 MOVE G6A,100, 135, 60, 123, 100, 100 MOVE G6D,100, 135, 60, 123, 100, 100 MOVE G6B,100, 80, 80, 100, 100, 100 MOVE G6C,100, 80, 80, 100, 100, 100 WAIT RETURN '------------------------------------------------ back_tumbling: SPEED 8 MOVE G6A, 100, 170, 71, 23, 100, 100 MOVE G6D, 100, 170, 71, 23, 100, 100 MOVE G6B, 80, 50, 70, 100, 100, 100 MOVE G6C, 80, 50, 70, 100, 100, 100 WAIT MOVE G6A, 100, 133, 71, 23, 100, 100 MOVE G6D, 100, 133, 71, 23, 100, 100 MOVE G6B, 10, 96, 15, 100, 100, 100 MOVE G6C, 10, 96, 14, 100, 100, 100 WAIT MOVE G6A, 100, 133, 49, 23, 100, 100 MOVE G6D, 100, 133, 49, 23, 100, 100 MOVE G6B, 45, 116, 15, 100, 100, 100 MOVE G6C, 45, 116, 14, 100, 100, 100 WAIT MOVE G6A, 100, 133, 49, 23, 100, 100 MOVE G6D, 100, 70, 180, 160, 100, 100 MOVE G6B, 45, 50, 70, 100, 100, 100 MOVE G6C, 45, 50, 70, 100, 100, 100 WAIT SPEED 15 MOVE G6A, 100, 133, 180, 160, 100, 100 MOVE G6D, 100, 133, 180, 160, 100, 100 MOVE G6B, 10, 50, 70, 100, 100, 100 MOVE G6C, 10, 50, 70, 100, 100, 100 WAIT HIGHSPEED SETON MOVE G6A, 100, 95, 180, 160, 100, 100 MOVE G6D, 100, 95, 180, 160, 100, 100 MOVE G6B, 160, 50, 70, 100, 100, 100 MOVE G6C, 160, 50, 70, 100, 100, 100 WAIT HIGHSPEED SETOFF MOVE G6A, 100, 130, 120, 80, 110, 100 MOVE G6D, 100, 130, 120, 80, 110, 100 MOVE G6B, 130, 160, 10, 100, 100, 100 MOVE G6C, 130, 160, 10, 100, 100, 100 WAIT RETURN '------------------------------------------------ back_standing: 'K31=BackwardRoll -> SPEED 10 MOVE G6A,100, 130, 120, 80, 110, 100 MOVE G6D,100, 130, 120, 80, 110, 100 MOVE G6B,150, 160, 10, 100, 100, 100 MOVE G6C,150, 160, 10, 100, 100, 100 WAIT MOVE G6A, 80, 155, 85, 150, 150, 100 MOVE G6D, 80, 155, 85, 150, 150, 100 MOVE G6B,185, 40, 60, 100, 100, 100 MOVE G6C,185, 40, 60, 100, 100, 100 WAIT MOVE G6A, 75, 165, 55, 165, 155, 100 MOVE G6D, 75, 165, 55, 165, 155, 100 MOVE G6B,185, 10, 100, 100, 100, 100 MOVE G6C,185, 10, 100, 100, 100, 100 WAIT MOVE G6A, 60, 165, 30, 165, 155, 100 MOVE G6D, 60, 165, 30, 165, 155, 100 MOVE G6B,170, 10, 100, 100, 100, 100 MOVE G6C,170, 10, 100, 100, 100, 100 WAIT MOVE G6A, 60, 165, 25, 160, 145, 100 MOVE G6D, 60, 165, 25, 160, 145, 100 MOVE G6B,150, 60, 90, 100, 100, 100 MOVE G6C,150, 60, 90, 100, 100, 100 WAIT MOVE G6A,100, 155, 25, 140, 100, 100 MOVE G6D,100, 155, 25, 140, 100, 100 MOVE G6B,130, 50, 85, 100, 100, 100 MOVE G6C,130, 50, 85, 100, 100, 100 WAIT RETURN '------------------------------------------------ left_attack: 'SPEED 7 'GOSUB P_left_attack1 SPEED 50'12 HIGHSPEED SETON MOVE G6A, 98, 157, 20, 134, 110, 100 MOVE G6D, 57, 115, 77, 125, 134, 100 MOVE G6B,107, 135, 108, 100, 100, 100 MOVE G6C,112, 92, 99, 100, 100, 100 WAIT DELAY 1000 HIGHSPEED SETOFF SPEED 15 RETURN '------------------------------------------------ P_left_attack1: 'feet together, lean right, stand on right,CGmedian MOVE G6A, 85, 71, 152, 91, 107, 60 MOVE G6D, 108, 76, 145, 93, 100, 60 GOSUB P_arms_100_40_80 WAIT RETURN '------------------------------------------------ right_attack: 'SPEED 15 'GOSUB P_right_attack1 SPEED 50 HIGHSPEED SETON MOVE G6D, 98, 157, 20, 134, 110, 100 MOVE G6A, 57, 115, 77, 125, 134, 100 MOVE G6B,112, 92, 99, 100, 100, 100 MOVE G6C,107, 135, 108, 100, 100, 100 WAIT DELAY 1000 HIGHSPEED SETOFF SPEED 15 RETURN '------------------------------------------------ P_right_attack1: 'feet together, lean left, stand on left,CGmedian MOVE G6D, 85, 71, 152, 91, 107, 60 MOVE G6A, 108, 76, 145, 93, 100, 60 GOSUB P_arms_100_40_80 WAIT RETURN '------------------------------------------------ left_forward: SPEED 7 MOVE G6A, 85, 71, 152, 91, 107, 60 MOVE G6D, 108, 76, 145, 93, 100, 60 MOVE G6B, 130, 40, 80 MOVE G6C, 70, 40, 80 WAIT SPEED 12 HIGHSPEED SETON MOVE G6A, 107, 164, 21, 125, 93 MOVE G6D, 66, 163, 85, 65, 130 MOVE G6B, 189, 40, 77 MOVE G6C, 50, 72, 86 WAIT DELAY 1000 HIGHSPEED SETOFF RETURN '------------------------------------------------ right_forward: SPEED 7 MOVE G6D, 85, 71, 152, 91, 107, 60 MOVE G6A, 108, 76, 145, 93, 100, 60 MOVE G6C, 130, 40, 80, , , , MOVE G6B, 70, 40, 80, , , , WAIT SPEED 10 HIGHSPEED SETON MOVE G6D, 107, 164, 21, 125, 93 MOVE G6A, 66, 163, 85, 65, 130 MOVE G6C, 189, 40, 77 MOVE G6B, 50, 72, 86 WAIT DELAY 1000 HIGHSPEED SETOFF RETURN '------------------------------------------------ forward_standup: SPEED 10 MOVE G6A,100, 130, 120, 80, 110, 100 MOVE G6D,100, 130, 120, 80, 110, 100 MOVE G6B,150, 160, 10, 100, 100, 100 MOVE G6C,150, 160, 10, 100, 100, 100 WAIT MOVE G6A, 80, 155, 85, 150, 150, 100 MOVE G6D, 80, 155, 85, 150, 150, 100 MOVE G6B,185, 40, 60, 100, 100, 100 MOVE G6C,185, 40, 60, 100, 100, 100 WAIT MOVE G6A, 75, 165, 55, 165, 155, 100 MOVE G6D, 75, 165, 55, 165, 155, 100 MOVE G6B,185, 10, 100, 100, 100, 100 MOVE G6C,185, 10, 100, 100, 100, 100 WAIT MOVE G6A, 60, 165, 30, 165, 155, 100 MOVE G6D, 60, 165, 30, 165, 155, 100 MOVE G6B,170, 10, 100, 100, 100, 100 MOVE G6C,170, 10, 100, 100, 100, 100 WAIT MOVE G6A, 60, 165, 25, 160, 145, 100 MOVE G6D, 60, 165, 25, 160, 145, 100 MOVE G6B,150, 60, 90, 100, 100, 100 MOVE G6C,150, 60, 90, 100, 100, 100 WAIT MOVE G6A,100, 155, 25, 140, 100, 100 MOVE G6D,100, 155, 25, 140, 100, 100 MOVE G6B,130, 50, 85, 100, 100, 100 MOVE G6C,130, 50, 85, 100, 100, 100 WAIT RETURN '------------------------------------------------ backward_standup: 'P1=K19 SPEED 10 MOVE G6A,100, 10, 100, 115, 100, 100 MOVE G6D,100, 10, 100, 115, 100, 100 MOVE G6B,100, 130, 10, 100, 100, 100 MOVE G6C,100, 130, 10, 100, 100, 100 WAIT MOVE G6A,100, 10, 83, 140, 100, 100 MOVE G6D,100, 10, 83, 140, 100, 100 MOVE G6B, 20, 130, 10, 100, 100, 100 MOVE G6C, 20, 130, 10, 100, 100, 100 WAIT MOVE G6A,100, 126, 60, 50, 100, 100 MOVE G6D,100, 126, 60, 50, 100, 100 MOVE G6B, 20, 30, 90, 100, 100, 100 MOVE G6C, 20, 30, 90, 100, 100, 100 WAIT MOVE G6A,100, 165, 70, 15, 100, 100 MOVE G6D,100, 165, 70, 15, 100, 100 MOVE G6B, 30, 20, 95, 100, 100, 100 MOVE G6C, 30, 20, 95, 100, 100, 100 WAIT MOVE G6A,100, 165, 40, 100, 100, 100 MOVE G6D,100, 165, 40, 100, 100, 100 MOVE G6B,110, 70, 50, 100, 100, 100 MOVE G6C,110, 70, 50, 100, 100, 100 WAIT RETURN '------------------------------------------------ fast_run: DIM i AS BYTE 'HIGHSPEED SETON SPEED 15 'standard pose MOVE G6A, 99, 74, 145, 93, 101 MOVE G6D, 99, 74, 145, 93, 101 WAIT ' PTP SETOFF PTP ALLOFF fast_run_1: MOVE G6D, 99, 86, 126, 113, 101'rising right foot MOVE G6A, 99, 82, 140, 91, 101'rising left foot(reach out right foot) MOVE G6D, 99, 73, 140, 99, 101'take down right foot MOVE G6A, 99, 86, 128, 112, 101'rising left foot MOVE G6D, 99, 82, 140, 92, 101'rear right foot(reach out left foot) MOVE G6A, 99, 73, 140, 99, 101'take down left foot 'GOTO fast_run_1 'runs very well ' cmnd =REMOCON(1) ' IF cmnd<>0 THEN GOTO fast_run_1 'this stops all the time ' IF cmnd<>32 THEN GOTO fast_run_1 'this gives very erratic running ' ' FOR i=0 TO cmnd 'to debug value of cmnd ' MUSIC "C" ' NEXT i ' MOVE G6D, 94, 92, 126, 119, 101'rising right foot MOVE G6D, 99, 70, 140, 103, 101'take down right foot PTP SETON PTP ALLON 'standard pose MOVE G6A, 99, 76, 145, 93, 101 MOVE G6D, 99, 76, 145, 93, 101 WAIT 'HIGHSPEED SETOFF RETURN '------------------------------------------------ fast_turn_right: HIGHSPEED SETON SPEED 6 MOVE G6D, 99, 86, 165, 98, 101 MOVE G6A, 99, 66, 125, 88, 106 WAIT 'standard pose MOVE G6D, 99, 76, 145, 93, 101 MOVE G6A, 99, 76, 145, 93, 101 WAIT HIGHSPEED SETOFF RETURN '------------------------------------------------ fast_turn_left: HIGHSPEED SETON SPEED 6 MOVE G6A, 99, 86, 165, 98, 101 MOVE G6D, 99, 66, 125, 88, 106 WAIT 'standard pose MOVE G6A, 99, 76, 145, 93, 101 MOVE G6D, 99, 76, 145, 93, 101 WAIT HIGHSPEED SETOFF RETURN '------------------------------------------------ hand_clapping: DIM hci AS BYTE 'loop counter SPEED 10 WAIT HIGHSPEED SETON MOVE G6C, 145, 20, 70, , , , MOVE G6B, 145, 20, 70, , , , FOR hci = 0 TO 1 MOVE G6C, 145, 20, 40, , , , MOVE G6B, 145, 20, 40, , , , WAIT MOVE G6C, 145, 15, 25, , , , MOVE G6B, 145, 15, 25, , , , WAIT MOVE G6C, 145, 20, 40, , , , MOVE G6B, 145, 20, 40, , , , WAIT DELAY 100 MOVE G6C, 145, 15, 25, , , , MOVE G6B, 145, 15, 25, , , , WAIT MOVE G6C, 155, 20, 40, , , , MOVE G6B, 155, 20, 40, , , , WAIT DELAY 100 MOVE G6C, 155, 15, 25, , , , MOVE G6B, 155, 15, 25, , , , WAIT MOVE G6C, 155, 20, 40, , , , MOVE G6B, 155, 20, 40, , , , WAIT DELAY 400 NEXT hci MOVE G6C, 145, 20, 70, , , , MOVE G6B, 145, 20, 70, , , , HIGHSPEED SETOFF RETURN '================================================ '==Routines from Advanced Template Program======= '================================================ '================================================ SquatWalkFd: sit_forward_walking: SPEED 10 MOVE G6B,100, 35, 80, 100, 100, 100 MOVE G6C,100, 35, 80, 100, 100, 100 WAIT FOR I = 0 TO 3 MOVE G6A,115, 150, 24, 140, 94, 100 MOVE G6D, 86, 151, 26, 140, 110, 100 WAIT MOVE G6A,100, 160, 25, 133, 100, 100 MOVE G6D,100, 131, 26, 162, 100, 100 WAIT MOVE G6A, 86, 151, 26, 140, 110, 100 MOVE G6D,115, 150, 24, 140, 94, 100 WAIT MOVE G6A,100, 131, 26, 162, 100, 100 MOVE G6D,100, 160, 25, 133, 100, 100 WAIT NEXT I SPEED 8 MOVE G6A,115, 150, 24, 140, 94, 100 MOVE G6D, 86, 151, 26, 140, 110, 100 WAIT MOVE G6A,100, 151, 23, 140, 101, 100 MOVE G6D,100, 151, 23, 140, 101, 100 WAIT RETURN '================================================ SquatWalkBk: sit_backward_walking: SPEED 10 MOVE G6B,100, 35, 80, 100, 100, 100 MOVE G6C,100, 35, 80, 100, 100, 100 WAIT FOR I = 0 TO 3 MOVE G6A,115, 150, 24, 140, 94, 100 MOVE G6D, 86, 151, 26, 140, 110, 100 WAIT MOVE G6A,100, 131, 26, 162, 100, 100 MOVE G6D,100, 160, 25, 133, 100, 100 WAIT MOVE G6A, 86, 151, 26, 140, 110, 100 MOVE G6D,115, 150, 24, 140, 94, 100 WAIT MOVE G6A,100, 160, 25, 133, 100, 100 MOVE G6D,100, 131, 26, 162, 100, 100 WAIT NEXT I SPEED 8 MOVE G6A,115, 150, 24, 140, 94, 100 MOVE G6D, 86, 151, 26, 140, 110, 100 WAIT MOVE G6A,100, 151, 23, 140, 101, 100 MOVE G6D,100, 151, 23, 140, 101, 100 WAIT RETURN '================================================ SquatWalkR: sit_right_walking: SPEED 8 MOVE G6A, 86, 151, 23, 140, 105, 100 MOVE G6D,112, 150, 23, 140, 100, 100 MOVE G6B,100, 40, 75, 100, 100, 100 MOVE G6C,100, 40, 75, 100, 100, 100 WAIT MOVE G6A, 86, 151, 26, 140, 115, 100 MOVE G6D, 86, 151, 26, 140, 115, 100 WAIT 'SPEED 10 MOVE G6A,118, 154, 24, 140, 95, 100 MOVE G6D, 80, 154, 24, 140, 110, 100 'MOVE G6B,100, 70, 75, 100, 100, 100 WAIT SPEED 8 MOVE G6A,100, 151, 23, 140, 101, 100 MOVE G6D,100, 151, 23, 140, 101, 100 MOVE G6B,100, 30, 80, , , MOVE G6C,100, 30, 80, , , WAIT RETURN '================================================ SquatWalkL: sit_left_walking: SPEED 8 MOVE G6A,112, 150, 24, 140, 100, 100 MOVE G6D, 86, 151, 24, 140, 105, 100 MOVE G6B,100, 40, 75, 100, 100, 100 MOVE G6C,100, 40, 75, 100, 100, 100 WAIT MOVE G6A, 86, 150, 24, 140, 115, 100 MOVE G6D, 86, 151, 24, 140, 115, 100 WAIT MOVE G6A, 86, 151, 24, 140, 105, 100 MOVE G6D,115, 150, 24, 140, 100, 100 WAIT SPEED 5 GOSUB sit_position RETURN '================================================ sit_position: SPEED 10 MOVE G6A,100, 151, 27, 140, 100, 100 MOVE G6D,100, 151, 27, 140, 100, 100 MOVE G6B,100, 30, 80, , , MOVE G6C,100, 30, 80, , , WAIT MOVE G6A,100, 151, 23, 140, 101, 100 MOVE G6D,100, 151, 23, 140, 101, 100 MOVE G6B,100, 30, 80, , , MOVE G6C,100, 30, 80, , , WAIT RETURN '================================================ '------------------------------------------------ '================================================ Utilities: 'various sensor routines '------------------------------------------------ robot_voltage: ' [ 10 x Value / 256 = Voltage] DIM rvi AS BYTE 'loop counter Ain = AD(6) 'next to Remocon IF Ain < 80 THEN ' 148=5.8v FOR rvi = 0 TO 2 OUT 52,1 DELAY 200 OUT 52,0 DELAY 200 NEXT rvi ENDIF RETURN '------------------------------------------------ robot_tilt: 'DB tilt sensor 'standing 5v 256 'lying back 3.4v 174 'lying front 1.9v 97 'upside down 1.6v 83 Ain = AD(5) 'TipSensor IF Ain > 200 THEN RETURN IF Ain > 150 THEN GOTO QGetUpBk QGetUpFd: IF f_GetUpFd=0 THEN RETURN GOSUB forward_standup '1675 forward_standup: GOTO Qstanding QGetUpBk: IF f_GetUpBk=0 THEN RETURN GOSUB backward_standup '1717 backward_standup: Qstanding: IF f_standing=1 THEN GOSUB A_StandEasy ELSE GOSUB A_squat ENDIF RETURN '------------------------------------------------ MusicNote: ON cmnd GOTO MusicO0C,MusicO0D,MusicO0E,MusicO0F,MusicO0G,MusicO0A,MusicO0B,MusicO1C,MusicO1D,MusicO1E,MusicO1F RETURN MusicO0C: MUSIC "O0C" RETURN MusicO0D: MUSIC "O0D" RETURN MusicO0E: MUSIC "O0E" RETURN MusicO0F: MUSIC "O0F" RETURN MusicO0G: MUSIC "O0G" RETURN MusicO0A: MUSIC "O0A" RETURN MusicO0B: MUSIC "O0B" RETURN MusicO1C: MUSIC "O1C" RETURN MusicO1D: MUSIC "O1D" RETURN MusicO1E: MUSIC "O1E" RETURN MusicO1F: MUSIC "O1F" RETURN '------------------------------------------------ '------------------------------------------------