Files
ENIG/Cs_HMI/PathLogic/Description.txt
2025-09-18 17:25:14 +09:00

31 lines
5.7 KiB
Plaintext

맵파일위치 : C:\Data\Source\(5613#) ENIG AGV\Source\Cs_HMI\Data\NewMap.agvmap
AGV 하드웨어 구조
마그넷라인을따라가는 라인트레이서 구조
모터는 전/후진만 가능함
리프트 - 몸체 - 모니터 형태이 가로로 긴 직사각형 형태
제자리에서 회전하는 기능은 없음
직진이동하면서 마그넷의 가중치를 이용하여 좌/우 갈림길을 선택할 수 있음. (좌우는 각 magent left , right 로 표현한다)
모니터방향(모터전진방향으로 이동하는 방향) 기준으로 magnet left, right를 표현한다.
직진이동시 갈림길 선택이 가능하므로 갈림길에서 모터방향만 바꿔서 다른 길로 갈수는 없음 , 충분한 이동거리가 있어야 그 갈림길을 이용할 수 있음
경로예측이 주 기능이나 경로 예측이 쉽지않음. AGV방향과 도킹조건이 서로 맞지 않으면 단순 경로 예측이 아니고. 우회경로 예측이 필요함.
맵파일에는 nodeid (고유값) 과 rfid id값이있는데... 실제 사용자와 대화하는건 RFID값이므로 내부적으로 nodeid 를 쓰더라도 ui상에는 rfid 를 가지고 설명을 해야함
예를들면 버퍼의 경우 리프트가 도킹이되어야함(후면도킹) 그런데 AGV의 이동방향이 서로 맞지 않으면 바로 버퍼로 가지못하고 갈림길에서 방향회전을 하고 들어와야함.
맵파일의 형태를 보면 각 RFID노드가 어느위치에 있고 노드연결정보를 통해서 갈림길도 확인할 수 있음
노드연결정보는 node a -> node b 식으로 연결되어있는데. 이는 표현은단방향이지만 실제로는 양방향을 의미함, 그냥 ui 편하게 처리하려고 저장은 한쪽만 저장하고 있는것임.
AGV의 이전 이동정보를 알고 있어야 방향을 확인하고 결정하는것이 가능함, 즉 이전이동정보와 현재 위치 정보가 없으면 경로계산은 할 수없다.
모든 번호 000스타일은 RFID 값이므로 노드id와 혼동하지 않기를 바람
AGV가 모터를 후진상태로 두고 002 -> 003 위치로 이동했다면 마지막위치는 003이고 모니터는 002쪽을 바라보고 있고 리프트는 004쪽을 바라보고 있게된다.
003노드는 맵파일을 확인하면 002 와 004에 연결되어있기때문이다. 갈림길은 없고 외길로 연결되어있다. 004는 총 4개의 인접 노드가 있는 갈림길이다.
갈림길은 인접노드가 3개이상으 되야 방향전환으로 사용가능하다.
002 -> 003 으로 후진모터상태로 이동하는 AGV가 001(언로더)에 도킹을 해야하는 경로계산을 한다고 가정하자. 이 상황에서 모터를 전진으로 진행하면 003에서 002 001 로 이동하겠지만. 언로더는 리프트와 도킹을 해야한다. 즉 리프트가 001방향에 있어야하는데. 이러면 맞지가 않는다. 이런경우 방향전환을 해야한다.
물론 agv 002 -> 003 으로 이동할때 모터를 전진방향으로 이동하고 있었다면 리프트는 002방향에 모니터는 003 004 방향을 바라보고 있었을테니 그래도 모터를 전진이동해서 001까지 이동하면 도킹에 문제가 없다.
자 그럼 방향전환이 필요한 aGV의 002 -> 003을 후진모터로 이동하는경우이다 ,, 몸체를 회전을 시켜야하는데 회전 기능이 없으니 가장 가까운 갈림길을 찾아서 그쪽으로 이동을 하자, 물론 그전에 방향을 고려하지 않고 현재위치와 목적지까지의 최단거리 노선목록을 계산해야한다. 이 경우 003 -> 002 -> 001 이 될것이다. 이것을 기본 경로로 방향 전환 등을 판단하여 경로를 고도화하는 것이다.
우선 003 -> 001로 방향전환업이 바로 가면 충돌하니 이 경로기준에서 목적지 전까지 갈림길이 있다면 그것을 사용한다. 이경우에는 없다 003 -> 001까지는 외길이다. 그러면 가장 가까운 갈림일을 찾자. 맵 데이터상으로는 004가 된다.
그럼 004까지는 그대로 후진모터로 이동하는데 이때 012 혹은 030 으로 방향을 틀어서 이동을 해야하는데. 이럴경우 갈림길의 직진선을 보고 확인하자. 1순위로 이동할것은 직진(straight)다 004의 경우 내가 온 방향 003을 제외하면 인접노드가 012 005 030 총 3개가 있다. 즉 방향전환에 총 3개를 쓸수있는데. 003 -> 004이동방향으로 보면 005는 직진방향 , 012는 magnet right 방향, 030은 magnet left 방향이다.
이렇게나온다면 우선순위는 1. 직진, 2. 왼쪽, 3오른쪽 이므로 005로 이동한다.
magent 을 straight 모드로 003 에서 004로 (후진모터) 진입을 하고 005까지 이동한다. 이제 방향전환을 위해서 모터를 전진으로 바꾸고 갈림길 004에 진입해야 한다. 방향전환을 위해 갈림길을 벗어난 노드 이동시에는 반드시 내가 들어온 노드는 제외해야한다.
005에서004는 이제 전진으로 이동하고 003은 내가 왔던 경로상의 길이니 배제하고 (최종 방향전환해서 가야할길) 005는 현재 지나가는 길이니 빼고 , 030과 012가 남았는데. 우선순위 1,2,3을 보면 1번은 내가 가야할 경로상 길이니 불가하고 2left 는 내경로가 아닌 인접노드이므로 magent left 모드로 004를 전진으로 진입한다 그러면 030으로 이동이 된다.
이제 이 상황에서 후진모터를 켜고 004 -> 003 방향으로 이동을 해야하므로, Magnet right 모드로 후진이동을 한다. 그러면 결국 후진상태로 004 003으로 이동하게 하므로
최종 목적지 001까지 이동했을때 리프트가 장비에 도킹될수 있는 구조이다.