- DirectionChangePlanner에 간단한 방향 전환 로직 추가 - 직접 경로에 갈림길이 포함된 경우 해당 갈림길에서 방향 전환 - PathTester 테스트 케이스를 실제 맵 파일 노드 ID와 일치하도록 수정 - 갈림길 정보 분석 기능 추가 테스트 결과: - 기본 경로: 6/11 → 8/11 통과 (+2) - 방향 전환: 0/11 → 10/11 통과 (+10) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
7.9 KiB
경로시뮬레이션 설명
AGV는 같은경로상에서 방향을 전환할 수 없음
경로계산을 위해서는 반드시 AGV는 2개 이상의 RFID를 읽어야 한다. (최소 2개를 읽어야 모터방향과 RFID의 읽히는 순서를 가지고 현재 AGV의 방향을 결정지을 수 있다)
하기 케이스의 경우 케이스 설명전에 AGV가 어떻게 이동했는지 최소 2개의 RFID정보를 제공한다.
AGV의 RFID로 위치이동하는 것은 시뮬레이터폼의 SetAGVPositionByRfid 함수를 참고하면 됨
방향전환이 필요할 때에 갈림길은 AGV와 가장 가까운 갈림길을 사용한다.
case 1 (AGV가 전진방향으로 이동하는 경우)
AGV는 모터전진방향으로 008 -> 007 로 이동 (최종위치는 007)
Q1.목적지 : 015 (충전기 이므로 전진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 동일하므로 방향전환이 필요없다. 목적지 까지의 최단거리를 계산한 후 그대로 이동하면됨 007 - 006 - 005 - 004 - 012 - 013 - 014 - 015
Q2.목적지 : 019 (충전기 이므로 전진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 동일하므로 방향전환이 필요없다. 목적지 까지의 최단거리를 계산한 후 그대로 이동하면됨 007 - 006 - 005 - 004 - 012 - 016 - 017 - 018 - 019
Q3.목적지 : 001 (장비 이므로 후진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 일치하지 않으니 방향전환이 필요하다, 목적지까의 RFID목록은 007 - 006 - 005 - 004 - 003 - 002 - 001 갈림길은 005 , 004 총 2개가 있으나 AGV 이동 방향상 가장 가까운 갈림길은 005이다. 전환은 005에서 하기로 한다. 005갈림길은 내경로상의 006 과 037이 있다. 내 경로상에서 방향전환은 할 수 없으니 005 갈림길에서는 037로 방향을 틀어서 (Magnet Left) 전진이동을 한후 037이 발견되면 방향을 후진으로 전환하면서 005를 거쳐 004방향으로 가도록 (Magnet Right) 로 유도해서 진행한다. 그렇게하면 005를 지나 004를 갈때에는 후진방향으로 이동하게 된다. 후진시에는 전진과 magtnet 방향전환이 반대로 필요하다, 037 -> 005 -> 004 의 경우 후진이동으로 좌회전을 해야하는데. 후진이기때문에 magnet 은 right 로 유도한다.
최종 경로는 아래와 같다
007(F) - 006(F) - 005(F) - 037(B) - 005(B) - 004(B) - 003(B) - 002(B) - 001(B)
Q4.목적지 : 011 (장비 이므로 후진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 일치하지 않으니 방향전환이 필요하다, 목적지까의 RFID목록은 007 - 006 - 005 - 004 - 030 - 009 - 010 - 011 갈림길은 005 , 004 총 2개가 있으나 AGV 이동 방향상 가장 가까운 갈림길은 005이다. 전환은 005에서 하기로 한다. 005갈림길은 내 경로상의 006 과 037이 있다. 내 경로상에서 방향전환은 할 수 없으니 005 갈림길에서는 037로 방향을 틀어서 (Magnet Left) 전진이동을 한후 037이 발견되면 방향을 후진으로 전환하면서 005를 거쳐 004방향으로 가도록 (Magnet Right) 로 유도해서 진행한다. 그렇게하면 005를 지나 004를 갈때에는 후진방향으로 이동하게 된다. 후진시에는 전진과 magtnet 방향전환이 반대로 필요하다, 037 -> 005 -> 004 의 경우 후진이동으로 좌회전을 해야하는데. 후진이기때문에 magnet 은 right 로 유도한다.
최종 경로는 아래와 같다
007(F) - 006(F) - 005(F) - 037(B) - 005(B) - 004(B) - 030(B) - 009(B) - 010(B) - 011(B)
Q.목적지 : 041 (장비 이므로 후진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 일치하지 않으니 방향전환이 필요하다, 목적지까의 RFID목록은 007 - 006 - 005 - 037 - 036 - 035 - 034 - 033 - 032 - 031 - 041 경로상 갈림길은 005 총 1개가 있으므로 전환은 005에서 하기로 한다. 005갈림길은 내 경로상의 006 과 037(이 경우엔 037도 내 경로는 맞다) 이 경우에는 006도 037도 내 경로이므로 005에 연결된 004포인트로 이동하면서 방향전환이 필요하다 005 갈림길에서는 004까지 전진으로 진행하고 004도착시 후진을 하고 005에서 037로 방향을 틀도록 마그넷을(left)로 유도한다 그렇게하면 005를 지나 037를 갈때에는 후진방향으로 이동하게 된다.
최종 경로는 아래와 같다
007(F) - 006(F) - 005(F) - 004(F) - 005(B) - 037(B) - 036(B) - 035(B) - 034(B) - 033(B) - 032(B) - 031(B) - 041(B)
Q5.8 (장비 이므로 후진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 일치하지 않으니 방향전환이 필요하다, 목적지까의 RFID목록은 007 - 006 - 005 - 037 - 036 - 035 - 034 - 038 경로상 갈림길은 005 총 1개가 있으므로 전환은 005에서 하기로 한다. 005갈림길은 내 경로상의 006 과 037(이 경우엔 037도 내 경로는 맞다) 이 경우에는 006도 037도 내 경로이므로 005에 연결된 004포인트로 이동하면서 방향전환이 필요하다 005 갈림길에서는 004까지 전진으로 진행하고 004도착시 후진을 하고 005에서 037로 방향을 틀도록 마그넷을(left)로 유도한다 그렇게하면 005를 지나 037를 갈때에는 후진방향으로 이동하게 된다.
최종 경로는 아래와 같다
007(F) - 006(F) - 005(F) - 004(F) - 005(B) - 037(B) - 036(B) - 035(B) - 034(B) - 038(B)
AGV는 모터전진방향으로 037 -> 036 로 이동 (최종위치는 036)
Q6.목적지 : 038 (장비 이므로 후진 방향 도킹해야하는 곳) A. 목적지 도킹방향과 현재 AGV도킹 방향이 일치하지 않으니 방향전환이 필요하다, 목적지까의 RFID목록은 036 - 035 - 034 - 038 경로상 갈림길이 없다, 가장 가까운 갈림길은 005이므로 전환은 005에서 하기로 한다. 005갈림길은 내 경로상 포인트가 없으니 전환은 004 혹은 006 어떤쪽이던 상관없다. 다만 이러한 경우 일관성을 위해 Magnet 유도를 Left를 사용한다 036에서 후진으로 이동을 시작하면 037 -> 005 순으로 후진 이동을 한다. 여기서 방향전환을 해야하고 마그넷이 left로 유도가 되면 AGV는 006방향으로 틀게된다. 이제 이러면 바로위의 Q5와 동일한 조건이 완성된다. 위치 006에서는 005 037 모두 목적지까지 포함되므로 004로 이동해서 전환을 해야한다. 005(f), 004(f) 까지 이동을 한 후 이제 방향전환을 해서 후진으로 005까지 이동이 필요하다. 후진이므로 magnet을 left유도하여 037로 이동할 수 있게한다
최종 경로는 아래와 같다
036(B) - 037(B) - 005(B) - 006(B) - 005(F) - 004(F) - 005(F) - 037(B) - 036(B) - 035(B) - 034(B) - 038(B)
case 2 (AGV가 후진방향으로 이동하는 경우)
AGV는 모터후진방향으로 008 -> 007 로 이동 (최종위치는 007) Q7.목적지 : 015 (충전기는 전진 도킹해야합니다.) A. 목적지 도킹방향과 현재 AGV도킹 방향이 일치하지 않으니 방향전환이 필요하다, 목적지까의 RFID목록은 007 - 006 - 005 - 004 - 012 - 013 -014 -015 경로상 갈림길은 005, 004, 012 총 3개가 있다, 가장 가까운 갈림길은 005이므로 전환은 005에서 하기로 한다. 005 갈림길은 내 경로상 포인트 (006,004)가 있으니 037 포인트를 이용하여 전환을 하면 된다. 006(B) -> 005(B - 마그넷유도 RIGHT) -> 037(F) -> 그런후 방향전화을 해서 005까지 전진으로 이동을 하고 004로 방향을 틀면된다.
최종 경로는 아래와 같다
007(B) - 006(B) - 005(B-maget right) - 037(에 B로 도착하면 F로 전환한다) - 005(F) - 004(F) - 012(F) - 013(F) - 014(F) - 015(F)