PoC for timeout for turn detection

This commit is contained in:
Bartek Dobrowolski-Nowakowski
2022-04-18 20:57:47 +02:00
parent d447b60344
commit 590c1ee7ed
3 changed files with 132 additions and 49 deletions

View File

@@ -22,9 +22,11 @@ TurnTolerance := 10
GoTo EndTurnDef
CheckTurn(x,y, b_size := 2)
CheckTurn(x,y, timeout := 3500, b_size := 2)
{
check_turn_start_tick_count := A_TickCount
;ToolTipper("A_TickCount at the begining of CheckTurn " A_TickCount, 100, 150)
color_player := 0xDE6E70
if (__enableTurn_mod__ = 0){
return
@@ -34,11 +36,21 @@ CheckTurn(x,y, b_size := 2)
loop {
tc := BitGrab(x, y, b_size)
;ToolTipper("debug until loop")
for i, c in tc
{
check_turn_now_tick_count := A_TickCount
check_turn_tick_count_from_start_to_now := check_turn_now_tick_count - check_turn_start_tick_count
if (check_turn_tick_count_from_start_to_now > timeout) {
ToolTipper("Turn Check Timeout exceeded", 100, 200)
return false
}
;ToolTipper("debug i loop")
td := Distance(c, color_player)
ToolTipper("Turn" td)
; ToolTipper("Turn" td)
if (td < 20 ){
turn_complete := true
@@ -46,10 +58,20 @@ CheckTurn(x,y, b_size := 2)
}
}
} until turn_complete = true
ToolTipper("Turn Found")
check_turn_now_tick_count := A_TickCount
check_turn_tick_count_from_start_to_now := check_turn_now_tick_count - check_turn_start_tick_count
if (check_turn_tick_count_from_start_to_now > timeout) {
ToolTipper("Turn Check Timeout exceeded", 100, 200)
return false
}
} until (turn_complete = true)
check_turn_found_tick_count := A_TickCount
check_turn_tick_count_from_start_to_found := check_turn_found_tick_count - check_turn_start_tick_count
ToolTipper("tickCount from start to end " check_turn_tick_count_from_start_to_found, 100, 250)
; Sleep, 100000 ; debug
;ToolTipper("Turn Found")
return
return true
}
ResetTurn:

View File

@@ -53,67 +53,128 @@ Race_PANAM()
Loop {
; Turn 1
; Tooltip
CheckTurn(turn1.startX, turn1.startY)
ToolTipper("Turn 1 start found")
/*
if( A_Index != 1){
Nitrous_Off()
Accel_On(75)
turn_one_end_found := false
if (CheckTurn(turn1.startX, turn1.startY))
{
turn_one_end_found := true
ToolTipper("Turn 1 start found")
}
*/
/*
if( A_Index != 1){
Nitrous_Off()
Accel_On(75)
}
*/
controller.Axes.LX.SetState(18-3*%A_Index%)
;Sleep(500)
Accel_On(100)
CheckTurn(turn1.endX, turn1.endY)
ToolTipper("Turn 1 end found")
Nitrous_On()
controller.Axes.LX.SetState(75)
sleep(2000)
controller.Axes.LX.SetState(65)
sleep(2500)
controller.Axes.LX.SetState(62)
sleep(2000)
turn_one_end_found := false
turn_one_end_found := true ; debug TODO check if wheels are curved
if (CheckTurn(turn1.endX, turn1.endY))
{
turn_one_end_found := true
ToolTipper("Turn 1 end found")
Nitrous_On()
controller.Axes.LX.SetState(75)
}
sleep(2000)
if (turn_one_end_found)
{
controller.Axes.LX.SetState(65)
}
sleep(2500)
if (turn_one_end_found)
{
controller.Axes.LX.SetState(62)
}
sleep(2000)
turn_two_start_found := false
; Turn 2
if( A_Index = 1 || A_Index = 6){
CheckTurn(turn2.startX, turn2.startY)
if (CheckTurn(turn2.startX, turn2.startY, 5000))
{
turn_two_start_found := true
}
}
else{
CheckTurn(545, turn2.startY)
if (CheckTurn(545, turn2.startY)) {
turn_two_start_found := true
}
}
if (turn_two_start_found)
{
ToolTipper("Turn 2 start found")
controller.Axes.LX.SetState(18.3)
}
ToolTipper("Turn 2 start found")
controller.Axes.LX.SetState(18.3)
CheckTurn(turn2.endX, turn2.endY)
ToolTipper("Turn 2 end found")
controller.Axes.LX.SetState(50)
if( A_Index = 1 || A_Index = 6){
controller.Axes.LX.SetState(75)
sleep(2000)
controller.Axes.LX.SetState(65)
sleep(500)
turn_two_end_found := false
turn_two_end_found := true ; debug TODO check if wheels are curved
if (CheckTurn(turn2.endX, turn2.endY))
{
turn_two_end_found := true
ToolTipper("Turn 2 end found")
controller.Axes.LX.SetState(50)
}
if( A_Index = 1 || A_Index = 6){
if (turn_two_end_found)
{
controller.Axes.LX.SetState(75)
}
sleep(2000)
if (turn_two_end_found)
{
controller.Axes.LX.SetState(65)
}
sleep(500)
}
else{
Turn_Left(500, 28)
if (turn_two_end_found)
{
Turn_Left(500, 28)
}
}
; Turn 3
CheckTurn(turn3.startX, turn3.startY)
Nitrous_Off()
ToolTipper("Turn 3 start found")
controller.Axes.LX.SetState(12)
CheckTurn(turn3.endX, turn3.endY)
Nitrous_On()
ToolTipper("Turn 3 end found")
controller.Axes.LX.SetState(42)
sleep(500)
controller.Axes.LX.SetState(58)
if (CheckTurn(turn3.startX, turn3.startY))
{
Nitrous_Off()
ToolTipper("Turn 3 start found")
controller.Axes.LX.SetState(12)
}
turn_three_end_found := false
turn_three_end_found := true ; debug TODO check if wheels are curved
if (CheckTurn(turn3.endX, turn3.endY))
{
turn_three_end_found := true
Nitrous_On()
ToolTipper("Turn 3 end found")
controller.Axes.LX.SetState(42)
}
sleep(500)
if (turn_three_end_found)
{
controller.Axes.LX.SetState(58)
}
sleep(2000)
controller.Axes.LX.SetState(62)
if (turn_three_end_found)
{
controller.Axes.LX.SetState(62)
}
sleep(2000)
CheckTurn(lap_marker.startX, lap_marker.startY)
ToolTipper("Lap Complete")