//------------------------------------------ // 迷路 2 //------------------------------------------ SET:Power:1 SET:loop_cnt:0 SET:pan_sum:0 ONCALL:&:Gsensor_status:1:9000 POSE:AIBO:oStanding WAIT // 通常モード :100 POSE:AIBO:oStanding WAIT MOVE:LEGS:WALK:0:FORWARD:0 // 前進 SET:t:0 :110 IF:<:Distance:300:120 // 前方障害物チェック WAIT:1 ADD:t:1 IF:>:t:100:120 GO:110 :120 // 前方に障害物があった場合 PLAY:LEGS:WalkToWS POSE:AIBO:oStanding // 一時停止 WAIT :130 MOVE:HEAD:ABS:0:-90:0:1000 MOVE:HEAD:ABS:0:0:0:1000 MOVE:HEAD:ABS:0:90:0:1000 MOVE:HEAD:ABS:0:0:0:1000 :1010 IF:=:Wait:0:1100 // 処理中 :1011 SET:count:0 :1020 IF:<:Distance:300:1040 // Distanceが300以下かどうか? ADD:pan_sum:Head_pan ADD:count:1 IF:=:Wait:0:100 GO:1020 :1040 // Distance が300以下になったとき IF:=:count:0:1010 :1041 ADD:loop_cnt:1 IF:=:loop_cnt:2:1043 :1042 // loop_cnt=1のとき DIV:pan_sum:count LET:ave1:pan_sum GO:1010 :1043 // loop_cnt=2のとき DIV:pan_sum:count LET:ave2:pan_sum GO:1010 :1100 // Waitループ終了 IF:=:loop_cnt:1:1110 // aveが2つのとき(2が左、1が右) LET:temp_ave:ave1 MUL:temp_ave:-1 IF:<=:ave2:temp_ave:1110 LET:pan:ave2 GO:1200 :1110 LET:pan:ave1 GO:1200 :1200 LET:loop_cnt:0 :2000 IF:>:pan:50:3010 IF:>:pan:20:3020 IF:>:pan:0:3030 IF:>:pan:-20:2030 IF:>:pan:-50:2020 IF:>:pan:-90:2010 IF:<:Distance:300:133 GO:100 :133 PLAY:SOUND:ang1_xxa:100 MOVE:LEGS:STEP:11:0:10 WAIT GO:130 :2010 MOVE:HEAD:ABS:0:0:0:1000 WAIT :2011 MOVE:LEGS:STEP:12:0:6 WAIT IF:>:Distance:300:100 GO:2030 :2020 MOVE:HEAD:ABS:0:0:0:1000 WAIT :2021 MOVE:LEGS:STEP:12:0:4 WAIT IF:>:Distance:300:100 GO:2030 :2030 MOVE:HEAD:ABS:0:0:0:1000 WAIT :2031 MOVE:LEGS:STEP:12:0:2 WAIT IF:>:Distance:300:100 GO:2030 :3010 MOVE:HEAD:ABS:0:0:0:1000 WAIT :3011 MOVE:LEGS:STEP:13:0:6 WAIT IF:>:Distance:300:100 GO:3030 :3020 MOVE:HEAD:ABS:0:0:0:1000 WAIT :3021 MOVE:LEGS:STEP:13:0:4 WAIT IF:>:Distance:300:100 GO:3030 :3030 MOVE:HEAD:ABS:0:0:0:1000 WAIT :3031 MOVE:LEGS:STEP:13:0:2 WAIT IF:>:Distance:300:100 GO:3030 :9000 QUIT:AIBO MOVE:AIBO:ReactiveGU WAIT RESUME