目次

システム状態遷移

 センサー、モータを動かすブロックが完成したなら
 システムの状態遷移を考えます。

 状態遷移図を描いて、最上位でのテスト、デバッグを
 やりやすくして、開発時間を短縮します。

 通勤電車の中で描いた、最終状態遷移図は、以下。



 各状態の概要を、次のようにしました。

 NONE

  電源投入、動作上限時間経過で、状態NONEになります。

  start gateが開いたなら、次の状態に遷移。

  start gateの開閉判定は、用意したAPI get_start を利用。

 NORMAL

  クランクとレーンチェンジのマーカーを検出するまで
  状態NORMALで動作させます。

  クランクマーカーは、1本の白線になるので、センサーが
  ALL_WHITEを検出時とします。




  NORMAL→CRANKの状態遷移の条件は、ALL_WHITE検出。

  レーンチェンジマーカーは、左右のどちらかに寄せた白線に
  なるので、センサーがLEFT_WHITEあるいはRIGHT_WHITEを検出
  時とします。




  NORMAL→LANEの状態遷移条件は、LEFT_WHITEかRIGHT_WHITE検出。


 CRANK

  状態CRANKは、LEFT_WHITEかRIGHT_WHITEを検出するまでに限定。

  動作は状態NORMALのときと同じですが、移動速度を抑えて直進。

  状態CRANKから状態ROTATEに遷移するための条件が必要なので
  単純にLEFT_WHITEかRIGHT_WHITEを検出したときとします。

  CRANK→ROTATEの状態遷移条件は、LEFT_WHITEかRIGHT_WHITE検出。

  状態ROTATEで利用ため、方向をLEFTかRIGHTとして記憶します。

 ROTATE

  状態ROTATEは、左あるいは右に90度旋回することにしました。

  90度旋回が終わるのは、センターラインCENTERを検出したときにします。
  CENTER検出まで、指定方向に信地旋回を継続。

  ROTATE→NORMALの状態遷移条件は、CENTER検出。

 LANE

  状態LANEは、LEFT_WHITEかRIGHT_WHITEを検出してからALL_BLACKを
  検出するまで。

  レーンチェンジの場合、コース上にセンターラインがない
  ALL_BLACKがあります。これを検出してから方向を変えます。



  ALL_BLACKを検出したなら、次の状態に遷移させます。

  LANE→CHANGEの状態遷移条件は、ALL_BLACK検出。

 CHANGE

  状態CHANGEは、ALL_BLACKを検出してから指定時間経過までとします。

  コースから脱輪すると失格になるので、移動速度により
  左右に傾ける角度が変わることに。そこで、移動速度を
  利用して、傾けてから直進に戻すまでの時間と計算。
  これを指定時間とします。

 BLIND

  状態BLINDは、センターラインCENTERを検出するまでとします。


 状態と大まかな動作を考えたので、スクリプト言語で状態NONEを
 除いた内容を記述しました。

#!/usr/bin/python

# BLIND
def perform_blind(x) :
  # get state
  xstate = x[0]
  # sensor
  xsensor = x[1]
  xl = 30
  xr = 30
  # direction
  if len(x) > 2:
    xdir = x[1]
  dir = 'DIR_CENTER'
  # next state
  state = xstate+1
  if xstate == 61:
    # judge
    if xsensor == 'CENTER':
      state = 63
  if xstate == 63:
    # judge
    if xdir == 'DIR_LEFT':
      xl = 35
      xr = 30
      dir = 'DIR_LEFT'
    elif xdir == 'DIR_RIGHT':
      xl = 30
      xr = 35
      dir = 'DIR_RIGHT'
  if xstate == 67:
    state = 10
  # concatenate
  result = [state,xl,xr,dir]
  return result

# CHNAGE
def perform_change(x):
  # get state
  xstate = x[0]
  # sensor
  xsensor = x[1]
  xl = 30
  xr = 30
  # direction
  xdir = x[2]
  if xdir == 'DIR_LEFT':
    dir = 'DIR_RIGHT'
  elif xdir == 'DIR_RIGHT':
    dir = 'DIR_LEFT'
  else:
    dir = ''
  # next state
  state = xstate+1
  if xstate == 50:
    # judge
    if xdir == 'DIR_LEFT':
      xl = 30
      xr = 50
      dir = 'DIR_RIGHT'
    elif xdir == 'DIR_RIGHT':
      xl = 50
      xr = 30
      dir = 'DIR_LEFT'
    else:
      xl = 30
      xr = 30
      dir = ''
  if xstate == 54:
    state = 60
  # concatenate
  result = [state,xl,xr]
  if xstate == 54:
    result = [state,xl,xr,dir]
  return result

# LANE
def perform_lane(x):
  # get state
  xstate = x[0]
  # sensor
  xsensor = x[1]
  if xsensor == 'ALL_BLACK':
    xl = 20
    xr = 20
  if xsensor == 'LEFT_WHITE':
    xl = 30
    xr = 30
  if xsensor == 'RIGHT_WHIT':
    xl = 30
    xr = 30
  elif xsensor == 'CENTER':
    xl = 30
    xr = 30
  elif xsensor == 'TINY_LEFT':
    xl = 30
    xr = 35
  elif xsensor == 'LEFT':
    xl = 30
    xr = 35
  elif xsensor == 'BIG_LEFT':
    xl = 30
    xr = 35
  elif xsensor == 'TINY_RIGHT':
    xl = 35
    xr = 30
  elif xsensor == 'RIGHT':
    xl = 35
    xr = 30
  elif xsensor == 'BIG_RIGHT':
    xl = 35
    xr = 30
  else:
    xl = 30
    xr = 30
  # direction
  xdir = x[2]
  if xdir == 'DIR_LEFT':
    dir  = ['DIR_LEFT','DIR_RIGHT']
  elif xdir == 'DIR_RIGHT':
    dir  = ['DIR_RIGHT','DIR_LEFT']
  else:
    dir = ['DIR_CENTER','DIR_CENTER']
  # next state
  state = xstate+1
  if xstate == 43:
    # judge
    if xsensor == 'ALL_BLACK':
      state = 50
    else:
      state = 40
  # concatenate
  result = [state,xl,xr]
  if state > 49:
    result = [state,xl,xr,dir]
  return result

# ROTATE
def perform_rotate(x):
  # get state
  xstate = x[0]
  # sensor
  xsensor = x[1]
  if xsensor == 'ALL_BLACK':
    xl = 20
    xr = 20
  elif xsensor == 'CENTER':
    xl = 30
    xr = 30
  elif xsensor == 'TINY_LEFT':
    xl = 30
    xr = 35
  elif xsensor == 'LEFT':
    xl = 30
    xr = 35
  elif xsensor == 'BIG_LEFT':
    xl = 30
    xr = 35
  elif xsensor == 'TINY_RIGHT':
    xl = 35
    xr = 30
  elif xsensor == 'RIGHT':
    xl = 35
    xr = 30
  elif xsensor == 'BIG_RIGHT':
    xl = 35
    xr = 30
  else:
    xl = 30
    xr = 30
  # direction
  dir = 'DIR_CENTER'
  # next state
  state = xstate+1
  if xstate == 33:
    # judge
    if xsensor == 'CENTER':
      state = 10
    else:
      state = 30
  # concatenate
  result = [state,xl,xr]
  if state == 10:
    result = [state,xl,xr,'return NORMAL']
  return result

# CRANK
def perform_crank(x):
  # get state
  xstate = x[0]
  # sensor
  xsensor = x[1]
  if xsensor == 'ALL_BLACK':
    xl = 20
    xr = 20
  elif xsensor == 'ALL_WHITE':
    xl = 20
    xr = 20
  elif xsensor == 'LEFT_WHITE':
    xl = 25
    xr = 25
  elif xsensor == 'RIGHT_WHITE':
    xl = 25
    xr = 25
  elif xsensor == 'CENTER':
    xl = 30
    xr = 30
  elif xsensor == 'TINY_LEFT':
    xl = 35
    xr = 30
  elif xsensor == 'LEFT':
    xl = 40
    xr = 30
  elif xsensor == 'BIG_LEFT':
    xl = 45
    xr = 30
  elif xsensor == 'TINY_RIGHT':
    xl = 50
    xr = 55
  elif xsensor == 'RIGHT':
    xl = 30
    xr = 40
  elif xsensor == 'BIG_RIGHT':
    xl = 30
    xr = 45
  elif xsensor == 'BOTH_WHITE':
    xl = 30
    xr = 20
  else:
    xl = 30
    xr = 30
  # direction
  if xsensor == 'LEFT_WHITE':
    dir = 'DIR_LEFT'
  elif xsensor == 'RIGHT_WHITE':
    dir = 'DIR_RIGHT'
  else:
    dir = 'DIR_CENTER'
  # next state
  state = xstate+1
  if xstate == 23:
    # judge
    if xsensor == 'LEFT_WHITE':
      state = 30
    elif xsensor == 'RIGHT_WHITE':
      state = 30
    else:
      state = 20
  # concatenate
  result = [state,xl,xr]
  if state > 29:
    result = [state,xl,xr,dir]
  return result

# NORMAL
def perform_normal(x):
  # get state
  xstate = x[0]
  # sensor
  xsensor = x[1]
  if xsensor == 'ALL_BLACK':
    xl = 30
    xr = 30
  elif xsensor == 'ALL_WHITE':
    xl = 40
    xr = 40
  elif xsensor == 'LEFT_WHITE':
    xl = 45
    xr = 45
  elif xsensor == 'RIGHT_WHITE':
    xl = 45
    xr = 45
  elif xsensor == 'CENTER':
    xl = 50
    xr = 50
  elif xsensor == 'TINY_LEFT':
    xl = 55
    xr = 50
  elif xsensor == 'LEFT':
    xl = 60
    xr = 50
  elif xsensor == 'BIG_LEFT':
    xl = 70
    xr = 50
  elif xsensor == 'TINY_RIGHT':
    xl = 50
    xr = 55
  elif xsensor == 'RIGHT':
    xl = 50
    xr = 60
  elif xsensor == 'BIG_RIGHT':
    xl = 50
    xr = 70
  elif xsensor == 'BOTH_WHITE':
    xl = 20
    xr = 20
  else:
    xl = 50
    xr = 50
  # direction
  if xsensor == 'LEFT_WHITE':
    dir = 'DIR_LEFT'
  elif xsensor == 'RIGHT_WHITE':
    dir = 'DIR_RIGHT'
  else:
    dir = 'DIR_CENTER'
  # next state
  state = xstate+1
  if xstate == 13:
    # judge
    if xsensor == 'ALL_WHITE':
      state = 20
    elif xsensor == 'LEFT_WHITE':
      state = 40
    elif xsensor == 'RIGHT_WHITE':
      state = 40
    else:
      state = 10
  # concatenate
  result = [state,xl,xr]
  if state > 19:
    result = [state,xl,xr,dir]
  return result

# NORMAL stimulus
def normal_stimulus():
  ii = range(10,14)
  for e in ii:
    for ee in range(0,len(mydic)):
      xx = [e,mydic[ee]]
      print xx,'=>',perform_normal(xx)

# CRANK stimulus
def crank_stimulus():
  ii = range(20,24)
  for e in ii:
    for ee in range(0,len(mydic)):
      xx = [e,mydic[ee]]
      print xx,'=>',perform_crank(xx)

# ROTATE stimulus
def rotate_stimulus():
  ii = range(30,34)
  for e in ii:
    for ee in range(0,len(mydic)):
      xx = [e,mydic[ee]]
      print xx,'=>',perform_rotate(xx)

# LANE stimulus
def lane_stimulus():
  ii = range(40,44)
  dlist = ['DIR_LEFT','DIR_RIGHT']
  for e in ii:
    for e1 in range(0,len(mydic)):
      for e2 in dlist:
        xx = [e,mydic[e1],e2]
        print xx,'=>',perform_lane(xx)

# CHANGE stimulus
def change_stimulus():
  ii = range(50,55)
  dlist = ['DIR_LEFT','DIR_RIGHT']
  for e in ii:
    for e1 in range(0,len(mydic)):
      for e2 in dlist:
        xx = [e,mydic[e1],e2]
        print xx,'=>',perform_change(xx)

# BLIND
def blind_stimulus():
  ii = range(60,68)
  dlist = ['DIR_LEFT','DIR_RIGHT']
  for e in ii:
    for e1 in range(0,len(mydic)):
      for e2 in dlist:
        xx = [e,mydic[e1],e2]
        print xx,'=>',perform_blind(xx)

mydic = []
mydic.append('ALL_BLACK')
mydic.append('ALL_WHITE')
mydic.append('LEFT_WHITE')
mydic.append('RIGHT_WHITE')
mydic.append('CENTER')
mydic.append('TINY_RIGHT')
mydic.append('RIGHT')
mydic.append('BIG_RIGHT')
mydic.append('TINY_LEFT')
mydic.append('LEFT')
mydic.append('BIG_LEFT')
mydic.append('BOTH_WHITE')
mydic.append('ILLEAGAL')

# NORMAL
normal_stimulus()

# CRANK
crank_stimulus()

# ROTATE
rotate_stimulus()

# LANE
lane_stimulus()

# CHANGE
change_stimulus()

# BLIND
blind_stimulus()


 Pythonを利用し、状態遷移に必要な次のパラメータを入力。

 現在の状態値は整数、他の2パラメータは文字列とします。
 文字列の利用で、考えやすくなります。

 関数からの変値は、次の状態値、左右のモータ用DUTY比、旋回に
 利用する方向としてまとめ。

 NORMAL状態のときに、状態値とセンサー値を与えた時の
 動作を確認。

[10,'ALL_BLACK']   => [11,30,30]
[10,'ALL_WHITE']   => [11,40,40]
[10,'LEFT_WHITE']  => [11,45,45]
[10,'RIGHT_WHITE'] => [11,45,45]
[10,'CENTER']      => [11,50,50]
[10,'TINY_RIGHT']  => [11,50,55]
[10,'RIGHT']       => [11,50,60]
[10,'BIG_RIGHT']   => [11,50,70]
[10,'TINY_LEFT']   => [11,55,50]
[10,'LEFT']        => [11,60,50]
[10,'BIG_LEFT']    => [11,70,50]
[10,'BOTH_WHITE']  => [11,20,20]
[10,'ILLEAGAL']    => [11,50,50]
[11,'ALL_BLACK']   => [12,30,30]
[11,'ALL_WHITE']   => [12,40,40]
[11,'LEFT_WHITE']  => [12,45,45]
[11,'RIGHT_WHITE'] => [12,45,45]
[11,'CENTER']      => [12,50,50]
[11,'TINY_RIGHT']  => [12,50,55]
[11,'RIGHT']       => [12,50,60]
[11,'BIG_RIGHT']   => [12,50,70]
[11,'TINY_LEFT']   => [12,55,50]
[11,'LEFT']        => [12,60,50]
[11,'BIG_LEFT']    => [12,70,50]
[11,'BOTH_WHITE']  => [12,20,20]
[11,'ILLEAGAL']    => [12,50,50]
[12,'ALL_BLACK']   => [13,30,30]
[12,'ALL_WHITE']   => [13,40,40]
[12,'LEFT_WHITE']  => [13,45,45]
[12,'RIGHT_WHITE'] => [13,45,45]
[12,'CENTER']      => [13,50,50]
[12,'TINY_RIGHT']  => [13,50,55]
[12,'RIGHT']       => [13,50,60]
[12,'BIG_RIGHT']   => [13,50,70]
[12,'TINY_LEFT']   => [13,55,50]
[12,'LEFT']        => [13,60,50]
[12,'BIG_LEFT']    => [13,70,50]
[12,'BOTH_WHITE']  => [13,20,20]
[12,'ILLEAGAL']    => [13,50,50]
[13,'ALL_BLACK']   => [10,30,30]
[13,'ALL_WHITE']   => [20,40,40,'DIR_CENTER']
[13,'LEFT_WHITE']  => [40,45,45,'DIR_LEFT']
[13,'RIGHT_WHITE'] => [40,45,45,'DIR_RIGHT']
[13,'CENTER']      => [10,50,50]
[13,'TINY_RIGHT']  => [10,50,55]
[13,'RIGHT']       => [10,50,60]
[13,'BIG_RIGHT']   => [10,50,70]
[13,'TINY_LEFT']   => [10,55,50]
[13,'LEFT']        => [10,60,50]
[13,'BIG_LEFT']    => [10,70,50]
[13,'BOTH_WHITE']  => [10,20,20]
[13,'ILLEAGAL']    => [10,50,50]

 状態遷移図にある、3つのセンサー値で、対応する
 状態に遷移していることを確認できました。

[13,'ALL_WHITE']   => [20,40,40,'DIR_CENTER']
[13,'LEFT_WHITE']  => [40,45,45,'DIR_LEFT']
[13,'RIGHT_WHITE'] => [40,45,45,'DIR_RIGHT']

 CRANK状態のときに、状態値とセンサー値を与えて動作確認。

[20,'ALL_BLACK']   => [21,20,20]
[20,'ALL_WHITE']   => [21,20,20]
[20,'LEFT_WHITE']  => [21,25,25]
[20,'RIGHT_WHITE'] => [21,25,25]
[20,'CENTER']      => [21,30,30]
[20,'TINY_RIGHT']  => [21,50,55]
[20,'RIGHT']       => [21,30,40]
[20,'BIG_RIGHT']   => [21,30,45]
[20,'TINY_LEFT']   => [21,35,30]
[20,'LEFT']        => [21,40,30]
[20,'BIG_LEFT']    => [21,45,30]
[20,'BOTH_WHITE']  => [21,30,20]
[20,'ILLEAGAL']    => [21,30,30]
[21,'ALL_BLACK']   => [22,20,20]
[21,'ALL_WHITE']   => [22,20,20]
[21,'LEFT_WHITE']  => [22,25,25]
[21,'RIGHT_WHITE'] => [22,25,25]
[21,'CENTER']      => [22,30,30]
[21,'TINY_RIGHT']  => [22,50,55]
[21,'RIGHT']       => [22,30,40]
[21,'BIG_RIGHT']   => [22,30,45]
[21,'TINY_LEFT']   => [22,35,30]
[21,'LEFT']        => [22,40,30]
[21,'BIG_LEFT']    => [22,45,30]
[21,'BOTH_WHITE']  => [22,30,20]
[21,'ILLEAGAL']    => [22,30,30]
[22,'ALL_BLACK']   => [23,20,20]
[22,'ALL_WHITE']   => [23,20,20]
[22,'LEFT_WHITE']  => [23,25,25]
[22,'RIGHT_WHITE'] => [23,25,25]
[22,'CENTER']      => [23,30,30]
[22,'TINY_RIGHT']  => [23,50,55]
[22,'RIGHT']       => [23,30,40]
[22,'BIG_RIGHT']   => [23,30,45]
[22,'TINY_LEFT']   => [23,35,30]
[22,'LEFT']        => [23,40,30]
[22,'BIG_LEFT']    => [23,45,30]
[22,'BOTH_WHITE']  => [23,30,20]
[22,'ILLEAGAL']    => [23,30,30]
[23,'ALL_BLACK']   => [20,20,20]
[23,'ALL_WHITE']   => [20,20,20]
[23,'LEFT_WHITE']  => [30,25,25,'DIR_LEFT']
[23,'RIGHT_WHITE'] => [30,25,25,'DIR_RIGHT']
[23,'CENTER']      => [20,30,30]
[23,'TINY_RIGHT']  => [20,50,55]
[23,'RIGHT']       => [20,30,40]
[23,'BIG_RIGHT']   => [20,30,45]
[23,'TINY_LEFT']   => [20,35,30]
[23,'LEFT']        => [20,40,30]
[23,'BIG_LEFT']    => [20,45,30]
[23,'BOTH_WHITE']  => [20,30,20]
[23,'ILLEAGAL']    => [20,30,30]

 CRANK→ROTATEは、センサー値としてLEFT_WHITEかRIGHT_WHITEを
 検出したときなので、それができたことを確認。

[23,'LEFT_WHITE']  => [30,25,25,'DIR_LEFT']
[23,'RIGHT_WHITE'] => [30,25,25,'DIR_RIGHT']

 ROTATE状態のときに、状態値とセンサー値を与えて動作を確認。

[30,'ALL_BLACK']   => [31,20,20]
[30,'ALL_WHITE']   => [31,30,30]
[30,'LEFT_WHITE']  => [31,30,30]
[30,'RIGHT_WHITE'] => [31,30,30]
[30,'CENTER']      => [31,30,30]
[30,'TINY_RIGHT']  => [31,35,30]
[30,'RIGHT']       => [31,35,30]
[30,'BIG_RIGHT']   => [31,35,30]
[30,'TINY_LEFT']   => [31,30,35]
[30,'LEFT']        => [31,30,35]
[30,'BIG_LEFT']    => [31,30,35]
[30,'BOTH_WHITE']  => [31,30,30]
[30,'ILLEAGAL']    => [31,30,30]
[31,'ALL_BLACK']   => [32,20,20]
[31,'ALL_WHITE']   => [32,30,30]
[31,'LEFT_WHITE']  => [32,30,30]
[31,'RIGHT_WHITE'] => [32,30,30]
[31,'CENTER']      => [32,30,30]
[31,'TINY_RIGHT']  => [32,35,30]
[31,'RIGHT']       => [32,35,30]
[31,'BIG_RIGHT']   => [32,35,30]
[31,'TINY_LEFT']   => [32,30,35]
[31,'LEFT']        => [32,30,35]
[31,'BIG_LEFT']    => [32,30,35]
[31,'BOTH_WHITE']  => [32,30,30]
[31,'ILLEAGAL']    => [32,30,30]
[32,'ALL_BLACK']   => [33,20,20]
[32,'ALL_WHITE']   => [33,30,30]
[32,'LEFT_WHITE']  => [33,30,30]
[32,'RIGHT_WHITE'] => [33,30,30]
[32,'CENTER']      => [33,30,30]
[32,'TINY_RIGHT']  => [33,35,30]
[32,'RIGHT']       => [33,35,30]
[32,'BIG_RIGHT']   => [33,35,30]
[32,'TINY_LEFT']   => [33,30,35]
[32,'LEFT']        => [33,30,35]
[32,'BIG_LEFT']    => [33,30,35]
[32,'BOTH_WHITE']  => [33,30,30]
[32,'ILLEAGAL']    => [33,30,30]
[33,'ALL_BLACK']   => [30,20,20]
[33,'ALL_WHITE']   => [30,30,30]
[33,'LEFT_WHITE']  => [30,30,30]
[33,'RIGHT_WHITE'] => [30,30,30]
[33,'CENTER']      => [10,30,30,'return NORMAL']
[33,'TINY_RIGHT']  => [30,35,30]
[33,'RIGHT']       => [30,35,30]
[33,'BIG_RIGHT']   => [30,35,30]
[33,'TINY_LEFT']   => [30,30,35]
[33,'LEFT']        => [30,30,35]
[33,'BIG_LEFT']    => [30,30,35]
[33,'BOTH_WHITE']  => [30,30,30]
[33,'ILLEAGAL']    => [30,30,30]

 ROTATE→NORMALは、センサー値としてCENTERを検出した
 ときなので、それができたことを確認。

[33,'CENTER']      => [10,30,30,'return NORMAL']

 LANE状態のときに、状態値とセンサー値を与えた時の
 動作を確認。

[40,'ALL_BLACK','DIR_LEFT']    => [41,30,30]
[40,'ALL_BLACK','DIR_RIGHT']   => [41,30,30]
[40,'ALL_WHITE','DIR_LEFT']    => [41,30,30]
[40,'ALL_WHITE','DIR_RIGHT']   => [41,30,30]
[40,'LEFT_WHITE','DIR_LEFT']   => [41,30,30]
[40,'LEFT_WHITE','DIR_RIGHT']  => [41,30,30]
[40,'RIGHT_WHITE','DIR_LEFT']  => [41,30,30]
[40,'RIGHT_WHITE','DIR_RIGHT'] => [41,30,30]
[40,'CENTER','DIR_LEFT']       => [41,30,30]
[40,'CENTER','DIR_RIGHT']      => [41,30,30]
[40,'TINY_RIGHT','DIR_LEFT']   => [41,35,30]
[40,'TINY_RIGHT','DIR_RIGHT']  => [41,35,30]
[40,'RIGHT','DIR_LEFT']        => [41,35,30]
[40,'RIGHT','DIR_RIGHT']       => [41,35,30]
[40,'BIG_RIGHT','DIR_LEFT']    => [41,35,30]
[40,'BIG_RIGHT','DIR_RIGHT']   => [41,35,30]
[40,'TINY_LEFT','DIR_LEFT']    => [41,30,35]
[40,'TINY_LEFT','DIR_RIGHT']   => [41,30,35]
[40,'LEFT','DIR_LEFT']         => [41,30,35]
[40,'LEFT','DIR_RIGHT']        => [41,30,35]
[40,'BIG_LEFT','DIR_LEFT']     => [41,30,35]
[40,'BIG_LEFT','DIR_RIGHT']    => [41,30,35]
[40,'BOTH_WHITE','DIR_LEFT']   => [41,30,30]
[40,'BOTH_WHITE','DIR_RIGHT']  => [41,30,30]
[40,'ILLEAGAL','DIR_LEFT']     => [41,30,30]
[40,'ILLEAGAL','DIR_RIGHT']    => [41,30,30]
[41,'ALL_BLACK','DIR_LEFT']    => [42,30,30]
[41,'ALL_BLACK','DIR_RIGHT']   => [42,30,30]
[41,'ALL_WHITE','DIR_LEFT']    => [42,30,30]
[41,'ALL_WHITE','DIR_RIGHT']   => [42,30,30]
[41,'LEFT_WHITE','DIR_LEFT']   => [42,30,30]
[41,'LEFT_WHITE','DIR_RIGHT']  => [42,30,30]
[41,'RIGHT_WHITE','DIR_LEFT']  => [42,30,30]
[41,'RIGHT_WHITE','DIR_RIGHT'] => [42,30,30]
[41,'CENTER','DIR_LEFT']       => [42,30,30]
[41,'CENTER','DIR_RIGHT']      => [42,30,30]
[41,'TINY_RIGHT','DIR_LEFT']   => [42,35,30]
[41,'TINY_RIGHT','DIR_RIGHT']  => [42,35,30]
[41,'RIGHT','DIR_LEFT']        => [42,35,30]
[41,'RIGHT','DIR_RIGHT']       => [42,35,30]
[41,'BIG_RIGHT','DIR_LEFT']    => [42,35,30]
[41,'BIG_RIGHT','DIR_RIGHT']   => [42,35,30]
[41,'TINY_LEFT','DIR_LEFT']    => [42,30,35]
[41,'TINY_LEFT','DIR_RIGHT']   => [42,30,35]
[41,'LEFT','DIR_LEFT']         => [42,30,35]
[41,'LEFT','DIR_RIGHT']        => [42,30,35]
[41,'BIG_LEFT','DIR_LEFT']     => [42,30,35]
[41,'BIG_LEFT','DIR_RIGHT']    => [42,30,35]
[41,'BOTH_WHITE','DIR_LEFT']   => [42,30,30]
[41,'BOTH_WHITE','DIR_RIGHT']  => [42,30,30]
[41,'ILLEAGAL','DIR_LEFT']     => [42,30,30]
[41,'ILLEAGAL','DIR_RIGHT']    => [42,30,30]
[42,'ALL_BLACK','DIR_LEFT']    => [43,30,30]
[42,'ALL_BLACK','DIR_RIGHT']   => [43,30,30]
[42,'ALL_WHITE','DIR_LEFT']    => [43,30,30]
[42,'ALL_WHITE','DIR_RIGHT']   => [43,30,30]
[42,'LEFT_WHITE','DIR_LEFT']   => [43,30,30]
[42,'LEFT_WHITE','DIR_RIGHT']  => [43,30,30]
[42,'RIGHT_WHITE','DIR_LEFT']  => [43,30,30]
[42,'RIGHT_WHITE','DIR_RIGHT'] => [43,30,30]
[42,'CENTER','DIR_LEFT']       => [43,30,30]
[42,'CENTER','DIR_RIGHT']      => [43,30,30]
[42,'TINY_RIGHT','DIR_LEFT']   => [43,35,30]
[42,'TINY_RIGHT','DIR_RIGHT']  => [43,35,30]
[42,'RIGHT','DIR_LEFT']        => [43,35,30]
[42,'RIGHT','DIR_RIGHT']       => [43,35,30]
[42,'BIG_RIGHT','DIR_LEFT']    => [43,35,30]
[42,'BIG_RIGHT','DIR_RIGHT']   => [43,35,30]
[42,'TINY_LEFT','DIR_LEFT']    => [43,30,35]
[42,'TINY_LEFT','DIR_RIGHT']   => [43,30,35]
[42,'LEFT','DIR_LEFT']         => [43,30,35]
[42,'LEFT','DIR_RIGHT']        => [43,30,35]
[42,'BIG_LEFT','DIR_LEFT']     => [43,30,35]
[42,'BIG_LEFT','DIR_RIGHT']    => [43,30,35]
[42,'BOTH_WHITE','DIR_LEFT']   => [43,30,30]
[42,'BOTH_WHITE','DIR_RIGHT']  => [43,30,30]
[42,'ILLEAGAL','DIR_LEFT']     => [43,30,30]
[42,'ILLEAGAL','DIR_RIGHT']    => [43,30,30]
[43,'ALL_BLACK','DIR_LEFT']    => [50,30,30,['DIR_LEFT','DIR_RIGHT']]
[43,'ALL_BLACK','DIR_RIGHT']   => [50,30,30,['DIR_RIGHT','DIR_LEFT']]
[43,'ALL_WHITE','DIR_LEFT']    => [40,30,30]
[43,'ALL_WHITE','DIR_RIGHT']   => [40,30,30]
[43,'LEFT_WHITE','DIR_LEFT']   => [40,30,30]
[43,'LEFT_WHITE','DIR_RIGHT']  => [40,30,30]
[43,'RIGHT_WHITE','DIR_LEFT']  => [40,30,30]
[43,'RIGHT_WHITE','DIR_RIGHT'] => [40,30,30]
[43,'CENTER','DIR_LEFT']       => [40,30,30]
[43,'CENTER','DIR_RIGHT']      => [40,30,30]
[43,'TINY_RIGHT','DIR_LEFT']   => [40,35,30]
[43,'TINY_RIGHT','DIR_RIGHT']  => [40,35,30]
[43,'RIGHT','DIR_LEFT']        => [40,35,30]
[43,'RIGHT','DIR_RIGHT']       => [40,35,30]
[43,'BIG_RIGHT','DIR_LEFT']    => [40,35,30]
[43,'BIG_RIGHT','DIR_RIGHT']   => [40,35,30]
[43,'TINY_LEFT','DIR_LEFT']    => [40,30,35]
[43,'TINY_LEFT','DIR_RIGHT']   => [40,30,35]
[43,'LEFT','DIR_LEFT']         => [40,30,35]
[43,'LEFT','DIR_RIGHT']        => [40,30,35]
[43,'BIG_LEFT','DIR_LEFT']     => [40,30,35]
[43,'BIG_LEFT','DIR_RIGHT']    => [40,30,35]
[43,'BOTH_WHITE','DIR_LEFT']   => [40,30,30]
[43,'BOTH_WHITE','DIR_RIGHT']  => [40,30,30]
[43,'ILLEAGAL','DIR_LEFT']     => [40,30,30]
[43,'ILLEAGAL','DIR_RIGHT']    => [40,30,30]

 LANE→CHANGEの状態遷移は、センサー値としてALL_BLACKを
 検出したときなので、それができたことを確認。

[43,'ALL_BLACK','DIR_LEFT']    => [50,30,30,['DIR_LEFT','DIR_RIGHT']]
[43,'ALL_BLACK','DIR_RIGHT']   => [50,30,30,['DIR_RIGHT','DIR_LEFT']]

 CHANGEでは、左か右のどちらかに車体を寄せます。
 CHANGEで方向を変えたなら、BLINDで逆方向に車体を寄せるように制御します。

 CHANGE状態のときに、状態値とセンサー値を与えた時の
 動作を確認。

[50,'ALL_BLACK','DIR_LEFT']    => [51,30,50]
[50,'ALL_BLACK','DIR_RIGHT']   => [51,50,30]
[50,'ALL_WHITE','DIR_LEFT']    => [51,30,50]
[50,'ALL_WHITE','DIR_RIGHT']   => [51,50,30]
[50,'LEFT_WHITE','DIR_LEFT']   => [51,30,50]
[50,'LEFT_WHITE','DIR_RIGHT']  => [51,50,30]
[50,'RIGHT_WHITE','DIR_LEFT']  => [51,30,50]
[50,'RIGHT_WHITE','DIR_RIGHT'] => [51,50,30]
[50,'CENTER','DIR_LEFT']       => [51,30,50]
[50,'CENTER','DIR_RIGHT']      => [51,50,30]
[50,'TINY_RIGHT','DIR_LEFT']   => [51,30,50]
[50,'TINY_RIGHT','DIR_RIGHT']  => [51,50,30]
[50,'RIGHT','DIR_LEFT']        => [51,30,50]
[50,'RIGHT','DIR_RIGHT']       => [51,50,30]
[50,'BIG_RIGHT','DIR_LEFT']    => [51,30,50]
[50,'BIG_RIGHT','DIR_RIGHT']   => [51,50,30]
[50,'TINY_LEFT','DIR_LEFT']    => [51,30,50]
[50,'TINY_LEFT','DIR_RIGHT']   => [51,50,30]
[50,'LEFT','DIR_LEFT']         => [51,30,50]
[50,'LEFT','DIR_RIGHT']        => [51,50,30]
[50,'BIG_LEFT','DIR_LEFT']     => [51,30,50]
[50,'BIG_LEFT','DIR_RIGHT']    => [51,50,30]
[50,'BOTH_WHITE','DIR_LEFT']   => [51,30,50]
[50,'BOTH_WHITE','DIR_RIGHT']  => [51,50,30]
[50,'ILLEAGAL','DIR_LEFT']     => [51,30,50]
[50,'ILLEAGAL','DIR_RIGHT']    => [51,50,30]
[51,'ALL_BLACK','DIR_LEFT']    => [52,30,30]
[51,'ALL_BLACK','DIR_RIGHT']   => [52,30,30]
[51,'ALL_WHITE','DIR_LEFT']    => [52,30,30]
[51,'ALL_WHITE','DIR_RIGHT']   => [52,30,30]
[51,'LEFT_WHITE','DIR_LEFT']   => [52,30,30]
[51,'LEFT_WHITE','DIR_RIGHT']  => [52,30,30]
[51,'RIGHT_WHITE','DIR_LEFT']  => [52,30,30]
[51,'RIGHT_WHITE','DIR_RIGHT'] => [52,30,30]
[51,'CENTER','DIR_LEFT']       => [52,30,30]
[51,'CENTER','DIR_RIGHT']      => [52,30,30]
[51,'TINY_RIGHT','DIR_LEFT']   => [52,30,30]
[51,'TINY_RIGHT','DIR_RIGHT']  => [52,30,30]
[51,'RIGHT','DIR_LEFT']        => [52,30,30]
[51,'RIGHT','DIR_RIGHT']       => [52,30,30]
[51,'BIG_RIGHT','DIR_LEFT']    => [52,30,30]
[51,'BIG_RIGHT','DIR_RIGHT']   => [52,30,30]
[51,'TINY_LEFT','DIR_LEFT']    => [52,30,30]
[51,'TINY_LEFT','DIR_RIGHT']   => [52,30,30]
[51,'LEFT','DIR_LEFT']         => [52,30,30]
[51,'LEFT','DIR_RIGHT']        => [52,30,30]
[51,'BIG_LEFT','DIR_LEFT']     => [52,30,30]
[51,'BIG_LEFT','DIR_RIGHT']    => [52,30,30]
[51,'BOTH_WHITE','DIR_LEFT']   => [52,30,30]
[51,'BOTH_WHITE','DIR_RIGHT']  => [52,30,30]
[51,'ILLEAGAL','DIR_LEFT']     => [52,30,30]
[51,'ILLEAGAL','DIR_RIGHT']    => [52,30,30]
[52,'ALL_BLACK','DIR_LEFT']    => [53,30,30]
[52,'ALL_BLACK','DIR_RIGHT']   => [53,30,30]
[52,'ALL_WHITE','DIR_LEFT']    => [53,30,30]
[52,'ALL_WHITE','DIR_RIGHT']   => [53,30,30]
[52,'LEFT_WHITE','DIR_LEFT']   => [53,30,30]
[52,'LEFT_WHITE','DIR_RIGHT']  => [53,30,30]
[52,'RIGHT_WHITE','DIR_LEFT']  => [53,30,30]
[52,'RIGHT_WHITE','DIR_RIGHT'] => [53,30,30]
[52,'CENTER','DIR_LEFT']       => [53,30,30]
[52,'CENTER','DIR_RIGHT']      => [53,30,30]
[52,'TINY_RIGHT','DIR_LEFT']   => [53,30,30]
[52,'TINY_RIGHT','DIR_RIGHT']  => [53,30,30]
[52,'RIGHT','DIR_LEFT']        => [53,30,30]
[52,'RIGHT','DIR_RIGHT']       => [53,30,30]
[52,'BIG_RIGHT','DIR_LEFT']    => [53,30,30]
[52,'BIG_RIGHT','DIR_RIGHT']   => [53,30,30]
[52,'TINY_LEFT','DIR_LEFT']    => [53,30,30]
[52,'TINY_LEFT','DIR_RIGHT']   => [53,30,30]
[52,'LEFT','DIR_LEFT']         => [53,30,30]
[52,'LEFT','DIR_RIGHT']        => [53,30,30]
[52,'BIG_LEFT','DIR_LEFT']     => [53,30,30]
[52,'BIG_LEFT','DIR_RIGHT']    => [53,30,30]
[52,'BOTH_WHITE','DIR_LEFT']   => [53,30,30]
[52,'BOTH_WHITE','DIR_RIGHT']  => [53,30,30]
[52,'ILLEAGAL','DIR_LEFT']     => [53,30,30]
[52,'ILLEAGAL','DIR_RIGHT']    => [53,30,30]
[53,'ALL_BLACK','DIR_LEFT']    => [54,30,30]
[53,'ALL_BLACK','DIR_RIGHT']   => [54,30,30]
[53,'ALL_WHITE','DIR_LEFT']    => [54,30,30]
[53,'ALL_WHITE','DIR_RIGHT']   => [54,30,30]
[53,'LEFT_WHITE','DIR_LEFT']   => [54,30,30]
[53,'LEFT_WHITE','DIR_RIGHT']  => [54,30,30]
[53,'RIGHT_WHITE','DIR_LEFT']  => [54,30,30]
[53,'RIGHT_WHITE','DIR_RIGHT'] => [54,30,30]
[53,'CENTER','DIR_LEFT']       => [54,30,30]
[53,'CENTER','DIR_RIGHT']      => [54,30,30]
[53,'TINY_RIGHT','DIR_LEFT']   => [54,30,30]
[53,'TINY_RIGHT','DIR_RIGHT']  => [54,30,30]
[53,'RIGHT','DIR_LEFT']        => [54,30,30]
[53,'RIGHT','DIR_RIGHT']       => [54,30,30]
[53,'BIG_RIGHT','DIR_LEFT']    => [54,30,30]
[53,'BIG_RIGHT','DIR_RIGHT']   => [54,30,30]
[53,'TINY_LEFT','DIR_LEFT']    => [54,30,30]
[53,'TINY_LEFT','DIR_RIGHT']   => [54,30,30]
[53,'LEFT','DIR_LEFT']         => [54,30,30]
[53,'LEFT','DIR_RIGHT']        => [54,30,30]
[53,'BIG_LEFT','DIR_LEFT']     => [54,30,30]
[53,'BIG_LEFT','DIR_RIGHT']    => [54,30,30]
[53,'BOTH_WHITE','DIR_LEFT']   => [54,30,30]
[53,'BOTH_WHITE','DIR_RIGHT']  => [54,30,30]
[53,'ILLEAGAL','DIR_LEFT']     => [54,30,30]
[53,'ILLEAGAL','DIR_RIGHT']    => [54,30,30]
[54,'ALL_BLACK','DIR_LEFT']    => [60,30,30,'DIR_RIGHT']
[54,'ALL_BLACK','DIR_RIGHT']   => [60,30,30,'DIR_LEFT']
[54,'ALL_WHITE','DIR_LEFT']    => [60,30,30,'DIR_RIGHT']
[54,'ALL_WHITE','DIR_RIGHT']   => [60,30,30,'DIR_LEFT']
[54,'LEFT_WHITE','DIR_LEFT']   => [60,30,30,'DIR_RIGHT']
[54,'LEFT_WHITE','DIR_RIGHT']  => [60,30,30,'DIR_LEFT']
[54,'RIGHT_WHITE','DIR_LEFT']  => [60,30,30,'DIR_RIGHT']
[54,'RIGHT_WHITE','DIR_RIGHT'] => [60,30,30,'DIR_LEFT']
[54,'CENTER','DIR_LEFT']       => [60,30,30,'DIR_RIGHT']
[54,'CENTER','DIR_RIGHT']      => [60,30,30,'DIR_LEFT']
[54,'TINY_RIGHT','DIR_LEFT']   => [60,30,30,'DIR_RIGHT']
[54,'TINY_RIGHT','DIR_RIGHT']  => [60,30,30,'DIR_LEFT']
[54,'RIGHT','DIR_LEFT']        => [60,30,30,'DIR_RIGHT']
[54,'RIGHT','DIR_RIGHT']       => [60,30,30,'DIR_LEFT']
[54,'BIG_RIGHT','DIR_LEFT']    => [60,30,30,'DIR_RIGHT']
[54,'BIG_RIGHT','DIR_RIGHT']   => [60,30,30,'DIR_LEFT']
[54,'TINY_LEFT','DIR_LEFT']    => [60,30,30,'DIR_RIGHT']
[54,'TINY_LEFT','DIR_RIGHT']   => [60,30,30,'DIR_LEFT']
[54,'LEFT','DIR_LEFT']         => [60,30,30,'DIR_RIGHT']
[54,'LEFT','DIR_RIGHT']        => [60,30,30,'DIR_LEFT']
[54,'BIG_LEFT','DIR_LEFT']     => [60,30,30,'DIR_RIGHT']
[54,'BIG_LEFT','DIR_RIGHT']    => [60,30,30,'DIR_LEFT']
[54,'BOTH_WHITE','DIR_LEFT']   => [60,30,30,'DIR_RIGHT']
[54,'BOTH_WHITE','DIR_RIGHT']  => [60,30,30,'DIR_LEFT']
[54,'ILLEAGAL','DIR_LEFT']     => [60,30,30,'DIR_RIGHT']
[54,'ILLEAGAL','DIR_RIGHT']    => [60,30,30,'DIR_LEFT']

 CHANGE→BLINDと遷移する時、BLIND→NORMALに遷移する時に
 方向を予め設定しておきます。

 BLIND状態に入るときに、NORMALへ遷移する条件を携えます。

 BLIND状態のときに、状態値とセンサー値を与えた時の
 動作を確認。

[60,'ALL_BLACK','DIR_LEFT']    => [61,30,30]
[60,'ALL_BLACK','DIR_RIGHT']   => [61,30,30]
[60,'ALL_WHITE','DIR_LEFT']    => [61,30,30]
[60,'ALL_WHITE','DIR_RIGHT']   => [61,30,30]
[60,'LEFT_WHITE','DIR_LEFT']   => [61,30,30]
[60,'LEFT_WHITE','DIR_RIGHT']  => [61,30,30]
[60,'RIGHT_WHITE','DIR_LEFT']  => [61,30,30]
[60,'RIGHT_WHITE','DIR_RIGHT'] => [61,30,30]
[60,'CENTER','DIR_LEFT']       => [61,30,30]
[60,'CENTER','DIR_RIGHT']      => [61,30,30]
[60,'TINY_RIGHT','DIR_LEFT']   => [61,30,30]
[60,'TINY_RIGHT','DIR_RIGHT']  => [61,30,30]
[60,'RIGHT','DIR_LEFT']        => [61,30,30]
[60,'RIGHT','DIR_RIGHT']       => [61,30,30]
[60,'BIG_RIGHT','DIR_LEFT']    => [61,30,30]
[60,'BIG_RIGHT','DIR_RIGHT']   => [61,30,30]
[60,'TINY_LEFT','DIR_LEFT']    => [61,30,30]
[60,'TINY_LEFT','DIR_RIGHT']   => [61,30,30]
[60,'LEFT','DIR_LEFT']         => [61,30,30]
[60,'LEFT','DIR_RIGHT']        => [61,30,30]
[60,'BIG_LEFT','DIR_LEFT']     => [61,30,30]
[60,'BIG_LEFT','DIR_RIGHT']    => [61,30,30]
[60,'BOTH_WHITE','DIR_LEFT']   => [61,30,30]
[60,'BOTH_WHITE','DIR_RIGHT']  => [61,30,30]
[60,'ILLEAGAL','DIR_LEFT']     => [61,30,30]
[60,'ILLEAGAL','DIR_RIGHT']    => [61,30,30]
[61,'ALL_BLACK','DIR_LEFT']    => [62,30,30]
[61,'ALL_BLACK','DIR_RIGHT']   => [62,30,30]
[61,'ALL_WHITE','DIR_LEFT']    => [62,30,30]
[61,'ALL_WHITE','DIR_RIGHT']   => [62,30,30]
[61,'LEFT_WHITE','DIR_LEFT']   => [62,30,30]
[61,'LEFT_WHITE','DIR_RIGHT']  => [62,30,30]
[61,'RIGHT_WHITE','DIR_LEFT']  => [62,30,30]
[61,'RIGHT_WHITE','DIR_RIGHT'] => [62,30,30]
[61,'CENTER','DIR_LEFT']       => [62,30,30]
[61,'CENTER','DIR_RIGHT']      => [62,30,30]
[61,'TINY_RIGHT','DIR_LEFT']   => [62,30,30]
[61,'TINY_RIGHT','DIR_RIGHT']  => [62,30,30]
[61,'RIGHT','DIR_LEFT']        => [62,30,30]
[61,'RIGHT','DIR_RIGHT']       => [62,30,30]
[61,'BIG_RIGHT','DIR_LEFT']    => [62,30,30]
[61,'BIG_RIGHT','DIR_RIGHT']   => [62,30,30]
[61,'TINY_LEFT','DIR_LEFT']    => [62,30,30]
[61,'TINY_LEFT','DIR_RIGHT']   => [62,30,30]
[61,'LEFT','DIR_LEFT']         => [62,30,30]
[61,'LEFT','DIR_RIGHT']        => [62,30,30]
[61,'BIG_LEFT','DIR_LEFT']     => [62,30,30]
[61,'BIG_LEFT','DIR_RIGHT']    => [62,30,30]
[61,'BOTH_WHITE','DIR_LEFT']   => [62,30,30]
[61,'BOTH_WHITE','DIR_RIGHT']  => [62,30,30]
[61,'ILLEAGAL','DIR_LEFT']     => [62,30,30]
[61,'ILLEAGAL','DIR_RIGHT']    => [62,30,30]
[62,'ALL_BLACK','DIR_LEFT']    => [63,30,30]
[62,'ALL_BLACK','DIR_RIGHT']   => [63,30,30]
[62,'ALL_WHITE','DIR_LEFT']    => [63,30,30]
[62,'ALL_WHITE','DIR_RIGHT']   => [63,30,30]
[62,'LEFT_WHITE','DIR_LEFT']   => [63,30,30]
[62,'LEFT_WHITE','DIR_RIGHT']  => [63,30,30]
[62,'RIGHT_WHITE','DIR_LEFT']  => [63,30,30]
[62,'RIGHT_WHITE','DIR_RIGHT'] => [63,30,30]
[62,'CENTER','DIR_LEFT']       => [63,30,30]
[62,'CENTER','DIR_RIGHT']      => [63,30,30]
[62,'TINY_RIGHT','DIR_LEFT']   => [63,30,30]
[62,'TINY_RIGHT','DIR_RIGHT']  => [63,30,30]
[62,'RIGHT','DIR_LEFT']        => [63,30,30]
[62,'RIGHT','DIR_RIGHT']       => [63,30,30]
[62,'BIG_RIGHT','DIR_LEFT']    => [63,30,30]
[62,'BIG_RIGHT','DIR_RIGHT']   => [63,30,30]
[62,'TINY_LEFT','DIR_LEFT']    => [63,30,30]
[62,'TINY_LEFT','DIR_RIGHT']   => [63,30,30]
[62,'LEFT','DIR_LEFT']         => [63,30,30]
[62,'LEFT','DIR_RIGHT']        => [63,30,30]
[62,'BIG_LEFT','DIR_LEFT']     => [63,30,30]
[62,'BIG_LEFT','DIR_RIGHT']    => [63,30,30]
[62,'BOTH_WHITE','DIR_LEFT']   => [63,30,30]
[62,'BOTH_WHITE','DIR_RIGHT']  => [63,30,30]
[62,'ILLEAGAL','DIR_LEFT']     => [63,30,30]
[62,'ILLEAGAL','DIR_RIGHT']    => [63,30,30]
[63,'ALL_BLACK','DIR_LEFT']    => [64,30,30]
[63,'ALL_BLACK','DIR_RIGHT']   => [64,30,30]
[63,'ALL_WHITE','DIR_LEFT']    => [64,30,30]
[63,'ALL_WHITE','DIR_RIGHT']   => [64,30,30]
[63,'LEFT_WHITE','DIR_LEFT']   => [64,30,30]
[63,'LEFT_WHITE','DIR_RIGHT']  => [64,30,30]
[63,'RIGHT_WHITE','DIR_LEFT']  => [64,30,30]
[63,'RIGHT_WHITE','DIR_RIGHT'] => [64,30,30]
[63,'CENTER','DIR_LEFT']       => [64,30,30]
[63,'CENTER','DIR_RIGHT']      => [64,30,30]
[63,'TINY_RIGHT','DIR_LEFT']   => [64,30,30]
[63,'TINY_RIGHT','DIR_RIGHT']  => [64,30,30]
[63,'RIGHT','DIR_LEFT']        => [64,30,30]
[63,'RIGHT','DIR_RIGHT']       => [64,30,30]
[63,'BIG_RIGHT','DIR_LEFT']    => [64,30,30]
[63,'BIG_RIGHT','DIR_RIGHT']   => [64,30,30]
[63,'TINY_LEFT','DIR_LEFT']    => [64,30,30]
[63,'TINY_LEFT','DIR_RIGHT']   => [64,30,30]
[63,'LEFT','DIR_LEFT']         => [64,30,30]
[63,'LEFT','DIR_RIGHT']        => [64,30,30]
[63,'BIG_LEFT','DIR_LEFT']     => [64,30,30]
[63,'BIG_LEFT','DIR_RIGHT']    => [64,30,30]
[63,'BOTH_WHITE','DIR_LEFT']   => [64,30,30]
[63,'BOTH_WHITE','DIR_RIGHT']  => [64,30,30]
[63,'ILLEAGAL','DIR_LEFT']     => [64,30,30]
[63,'ILLEAGAL','DIR_RIGHT']    => [64,30,30]
[64,'ALL_BLACK','DIR_LEFT']    => [65,30,30]
[64,'ALL_BLACK','DIR_RIGHT']   => [65,30,30]
[64,'ALL_WHITE','DIR_LEFT']    => [65,30,30]
[64,'ALL_WHITE','DIR_RIGHT']   => [65,30,30]
[64,'LEFT_WHITE','DIR_LEFT']   => [65,30,30]
[64,'LEFT_WHITE','DIR_RIGHT']  => [65,30,30]
[64,'RIGHT_WHITE','DIR_LEFT']  => [65,30,30]
[64,'RIGHT_WHITE','DIR_RIGHT'] => [65,30,30]
[64,'CENTER','DIR_LEFT']       => [65,30,30]
[64,'CENTER','DIR_RIGHT']      => [65,30,30]
[64,'TINY_RIGHT','DIR_LEFT']   => [65,30,30]
[64,'TINY_RIGHT','DIR_RIGHT']  => [65,30,30]
[64,'RIGHT','DIR_LEFT']        => [65,30,30]
[64,'RIGHT','DIR_RIGHT']       => [65,30,30]
[64,'BIG_RIGHT','DIR_LEFT']    => [65,30,30]
[64,'BIG_RIGHT','DIR_RIGHT']   => [65,30,30]
[64,'TINY_LEFT','DIR_LEFT']    => [65,30,30]
[64,'TINY_LEFT','DIR_RIGHT']   => [65,30,30]
[64,'LEFT','DIR_LEFT']         => [65,30,30]
[64,'LEFT','DIR_RIGHT']        => [65,30,30]
[64,'BIG_LEFT','DIR_LEFT']     => [65,30,30]
[64,'BIG_LEFT','DIR_RIGHT']    => [65,30,30]
[64,'BOTH_WHITE','DIR_LEFT']   => [65,30,30]
[64,'BOTH_WHITE','DIR_RIGHT']  => [65,30,30]
[64,'ILLEAGAL','DIR_LEFT']     => [65,30,30]
[64,'ILLEAGAL','DIR_RIGHT']    => [65,30,30]
[65,'ALL_BLACK','DIR_LEFT']    => [66,30,30]
[65,'ALL_BLACK','DIR_RIGHT']   => [66,30,30]
[65,'ALL_WHITE','DIR_LEFT']    => [66,30,30]
[65,'ALL_WHITE','DIR_RIGHT']   => [66,30,30]
[65,'LEFT_WHITE','DIR_LEFT']   => [66,30,30]
[65,'LEFT_WHITE','DIR_RIGHT']  => [66,30,30]
[65,'RIGHT_WHITE','DIR_LEFT']  => [66,30,30]
[65,'RIGHT_WHITE','DIR_RIGHT'] => [66,30,30]
[65,'CENTER','DIR_LEFT']       => [66,30,30]
[65,'CENTER','DIR_RIGHT']      => [66,30,30]
[65,'TINY_RIGHT','DIR_LEFT']   => [66,30,30]
[65,'TINY_RIGHT','DIR_RIGHT']  => [66,30,30]
[65,'RIGHT','DIR_LEFT']        => [66,30,30]
[65,'RIGHT','DIR_RIGHT']       => [66,30,30]
[65,'BIG_RIGHT','DIR_LEFT']    => [66,30,30]
[65,'BIG_RIGHT','DIR_RIGHT']   => [66,30,30]
[65,'TINY_LEFT','DIR_LEFT']    => [66,30,30]
[65,'TINY_LEFT','DIR_RIGHT']   => [66,30,30]
[65,'LEFT','DIR_LEFT']         => [66,30,30]
[65,'LEFT','DIR_RIGHT']        => [66,30,30]
[65,'BIG_LEFT','DIR_LEFT']     => [66,30,30]
[65,'BIG_LEFT','DIR_RIGHT']    => [66,30,30]
[65,'BOTH_WHITE','DIR_LEFT']   => [66,30,30]
[65,'BOTH_WHITE','DIR_RIGHT']  => [66,30,30]
[65,'ILLEAGAL','DIR_LEFT']     => [66,30,30]
[65,'ILLEAGAL','DIR_RIGHT']    => [66,30,30]
[66,'ALL_BLACK','DIR_LEFT']    => [67,30,30]
[66,'ALL_BLACK','DIR_RIGHT']   => [67,30,30]
[66,'ALL_WHITE','DIR_LEFT']    => [67,30,30]
[66,'ALL_WHITE','DIR_RIGHT']   => [67,30,30]
[66,'LEFT_WHITE','DIR_LEFT']   => [67,30,30]
[66,'LEFT_WHITE','DIR_RIGHT']  => [67,30,30]
[66,'RIGHT_WHITE','DIR_LEFT']  => [67,30,30]
[66,'RIGHT_WHITE','DIR_RIGHT'] => [67,30,30]
[66,'CENTER','DIR_LEFT']       => [67,30,30]
[66,'CENTER','DIR_RIGHT']      => [67,30,30]
[66,'TINY_RIGHT','DIR_LEFT']   => [67,30,30]
[66,'TINY_RIGHT','DIR_RIGHT']  => [67,30,30]
[66,'RIGHT','DIR_LEFT']        => [67,30,30]
[66,'RIGHT','DIR_RIGHT']       => [67,30,30]
[66,'BIG_RIGHT','DIR_LEFT']    => [67,30,30]
[66,'BIG_RIGHT','DIR_RIGHT']   => [67,30,30]
[66,'TINY_LEFT','DIR_LEFT']    => [67,30,30]
[66,'TINY_LEFT','DIR_RIGHT']   => [67,30,30]
[66,'LEFT','DIR_LEFT']         => [67,30,30]
[66,'LEFT','DIR_RIGHT']        => [67,30,30]
[66,'BIG_LEFT','DIR_LEFT']     => [67,30,30]
[66,'BIG_LEFT','DIR_RIGHT']    => [67,30,30]
[66,'BOTH_WHITE','DIR_LEFT']   => [67,30,30]
[66,'BOTH_WHITE','DIR_RIGHT']  => [67,30,30]
[66,'ILLEAGAL','DIR_LEFT']     => [67,30,30]
[66,'ILLEAGAL','DIR_RIGHT']    => [67,30,30]
[67,'ALL_BLACK','DIR_LEFT']    => [10,30,30,'return NORMAL']
[67,'ALL_BLACK','DIR_RIGHT']   => [10,30,30,'return NORMAL']
[67,'ALL_WHITE','DIR_LEFT']    => [10,30,30,'return NORMAL']
[67,'ALL_WHITE','DIR_RIGHT']   => [10,30,30,'return NORMAL']
[67,'LEFT_WHITE','DIR_LEFT']   => [10,30,30,'return NORMAL']
[67,'LEFT_WHITE','DIR_RIGHT']  => [10,30,30,'return NORMAL']
[67,'RIGHT_WHITE','DIR_LEFT']  => [10,30,30,'return NORMAL']
[67,'RIGHT_WHITE','DIR_RIGHT'] => [10,30,30,'return NORMAL']
[67,'CENTER','DIR_LEFT']       => [10,30,30,'return NORMAL']
[67,'CENTER','DIR_RIGHT']      => [10,30,30,'return NORMAL']
[67,'TINY_RIGHT','DIR_LEFT']   => [10,30,30,'return NORMAL']
[67,'TINY_RIGHT','DIR_RIGHT']  => [10,30,30,'return NORMAL']
[67,'RIGHT','DIR_LEFT']        => [10,30,30,'return NORMAL']
[67,'RIGHT','DIR_RIGHT']       => [10,30,30,'return NORMAL']
[67,'BIG_RIGHT','DIR_LEFT']    => [10,30,30,'return NORMAL']
[67,'BIG_RIGHT','DIR_RIGHT']   => [10,30,30,'return NORMAL']
[67,'TINY_LEFT','DIR_LEFT']    => [10,30,30,'return NORMAL']
[67,'TINY_LEFT','DIR_RIGHT']   => [10,30,30,'return NORMAL']
[67,'LEFT','DIR_LEFT']         => [10,30,30,'return NORMAL']
[67,'LEFT','DIR_RIGHT']        => [10,30,30,'return NORMAL']
[67,'BIG_LEFT','DIR_LEFT']     => [10,30,30,'return NORMAL']
[67,'BIG_LEFT','DIR_RIGHT']    => [10,30,30,'return NORMAL']
[67,'BOTH_WHITE','DIR_LEFT']   => [10,30,30,'return NORMAL']
[67,'BOTH_WHITE','DIR_RIGHT']  => [10,30,30,'return NORMAL']
[67,'ILLEAGAL','DIR_LEFT']     => [10,30,30,'return NORMAL']
[67,'ILLEAGAL','DIR_RIGHT']    => [10,30,30,'return NORMAL']


目次

inserted by FC2 system