@startuml

title Rコース全体制御

state ライントレース戦略 {
}


state ET相撲仕込み戦略{
	[*] --> 後退中
	後退中 --> 新幹線停止:一定距離後退
	新幹線停止 --> ライントレース中 :駅スイッチ操作
	ライントレース中 --> 段差越え : 段差前座標到達
	段差越え --> [*] : 角速度検知
}

state ET相撲戦略 {
	[*] --> 土俵内直進中 
	土俵内直進中 --> 土俵直進にて黒線横断中 : 黒線認識
	土俵直進にて黒線横断中 --> 左ブロック方向旋回 : 黒線を抜ける
	左ブロック方向旋回 -->  左ブロックまで前進中 : 指定角度到達
	左ブロックまで前進中 --> 左ブロック色認識 : ブロック前座標到達
	左ブロック色認識 --> 左ブロックを押し出し : 置き場色!=認識色
	左ブロック色認識 --> 左ブロックを寄り切り : 置き場色==認識色
	左ブロックを寄り切り --> 右ブロック方向旋回 : 寄り切り完了
	左ブロックを押し出し --> 右ブロック方向旋回 : 押し出し完了

	右ブロック方向旋回 --> 右ブロックまで前進中 : 指定角度到達
	右ブロックまで前進中 --> 右ブロック色認識 : ブロック前座標到達
	右ブロック色認識 --> 右ブロックを押し出し : 置き場色!=認識色
	右ブロック色認識 --> 右ブロックを寄り切り : 置き場色!=認識色
	右ブロックを寄り切り --> 中心方向旋回 : 寄り切り完了
	右ブロックを押し出し --> 中心方向旋回 : 押し出し完了
	中心方向旋回 --> 中心方向前進 : 中心方向角度到達
	中心方向前進 --> 正面方向旋回 : 交差点到達
	正面方向旋回 --> [*] : 正面方向到達
}

state 懸賞運び戦略{
	[*] --> 相撲後後退中 
	相撲後後退中 --> 三方前旋回中 : 旋回開始座標到達
	三方前旋回中 --> 三方前直進中 : 指定角度到達
	三方前直進中 --> 懸賞確保中 : 懸賞置き場前座標到達
	懸賞確保中 --> 三方前後退中 : アーム上昇完了
	三方前後退中 --> 懸賞方向へ旋回中 : ライン認識
	懸賞方向へ旋回中 --> 懸賞方向へ前進中 : 指定角度到達
	懸賞方向へ前進中 --> 懸賞パージ中 : 懸賞置き場前到達
	懸賞パージ中 --> ライン復帰中 : アーム下降完了
	ライン復帰中 --> [*] : ライン認識
}

state 直角駐車戦略{
	[*] --> 旋回中
	旋回中 --> 旋回中
}

[*] --> ライントレース戦略
ライントレース戦略 -r-> ET相撲仕込み戦略 : ゲート座標通過
ET相撲仕込み戦略 -r-> ET相撲戦略
ET相撲戦略 --> ET相撲戦略 : 未攻略の土俵有
ET相撲戦略 -d-> 懸賞運び戦略 : 全土俵攻略
懸賞運び戦略 -r-> 直角駐車戦略
直角駐車戦略 -r-> [*] 

@enduml