30 lines
2.4 KiB
Markdown
30 lines
2.4 KiB
Markdown
모든 길목(10,9,6,13) 에 대한 정/역 방향에 대한 로직을 정의하고, 나머지 모든위치에서는 해당 길목으로 이동을 한다.
|
|
목적지에 따라서 길목을 지정한다
|
|
|
|
0001 10 역방향 : 0010(BS) 0012(BS) 0016(BS) 0001(BS), 정방향(회전필요) : [ 0010(BR) 0009(FR) 0007(BS) 0010(BS) : 방향전환 완료] - 동일
|
|
0015 09 정방향 : 0009(FS), 역방향(회전필요) : [ 0009(FL) 0010(BS) 0007(FL) 0009(FS) ] - 동일
|
|
0011 06 역방향 : 0006(BS) 0011(BS), 정방향(회전필요) : [ 0006(BL) 0007(FS) 00013(BL) 0006(BS) ] - 동일
|
|
버퍼 06 역방향 : 0006(BL) 0005(BS) ~ 나머지 0031까지는 BS상태로 계속 이동, 정방향(회전필요) : [ 0006(BL) 0007(FS) 0013(BL) 0006(BL) ] - 동일
|
|
0008 13 역방향 : 0013(BS) 0019(BS) 0008(BS), 정방향(회전필요) : [ 0013(BL) 0006(FL) 0007(BS) 0013(BS) ] - 동일
|
|
0019 13 역방향 : 0013(BS) 0019(BS), 정방향(회전필요) : [ 0013(BL) 0006(FL) 0007(BS) 0013(BS) ] - 동일
|
|
|
|
나머지 모든 경유는 각 경유지로 해당 방향으로 그대로 길을 찾는다
|
|
목적지를 보고 목적지의 경유지까지 경로로를 계산한다 (A*)
|
|
|
|
동일노드가 목적지 일때에는
|
|
도킹방향이 맞고 마크센서가 ON 되어있는 경우에만 완료처리를 한다.
|
|
도킹방향이 맞고 마크센서가 OFF되어있다면 반대방향으로 한번 이동하고, 다시 역방향 이동하면서 MARK STOP 처리한다.
|
|
도킹방향이 맞지 않는 경우 일반 노드 검색처럼 경유지 처리한다
|
|
|
|
버퍼에서 버퍼로 이동하는 경우에는 별도 로직으로 처리한다
|
|
|
|
모니터가 좌측에 있는 경우라면 도킹방향이 맞지 않으므로 0006까지 이동을 완료 한 후 기존 로직을 적용
|
|
모니터가 우측에 있는 방향이라면 도킹방향이 맞는 경우이다
|
|
목표가 현재 기준 좌측이라면?
|
|
BACK으로 이동하면 좌측이동이므로 목적지 노드까지 A*로 계산하여 이동 후 MARK STOP 한다
|
|
목표가 현재 기준 우측이라면?
|
|
위치 정밀도를 높이기 위해서 목표 지점을 벗어난 후 다시 좌측으로 마크스탑한다
|
|
A* -> Back -> MARKSTOP
|
|
|
|
* 인식된 위치가 전체 경로상에 존재하지 않는 노드라면 모든 경로계산을 다시 계산 한다
|
|
* 경로상 노드에 포함되어있다 해도 진입방향등을 고려하여 일치하지 않으면 경로 이탈로 간주하고 다시 계산 한다 |