순서

I. Class 호출 순서
II. Conveyor System Flow
III. Conveyor Motion Flow
IV. 구조 특이점

 


 I. Class 호출 순서

 

제어기 내부의 Robot 제어 알고리즘 Flow 중 Conveyor가 호출되도록 한다.

그 후 호출 순서는

CControlModuleConeyor 내부에서
CControlModuleSystem -> CControlModuleMotion 순서로 호출 후
반환된 데이터로 Robot Motion 계산

CControlModuleConveyor에서는 CControlModuleConveyorManager Instance를 이용해
각 컨베이어를 관리하며, 제어 클래스를 상속하므로 이 위치에서 로봇을 통제하도록 한다.

각 System, Motion에 대한 내부 Flow는 다음과 같다.

 


II. Conveyor System Flow

 

 이 클래스의 목적은 컨베이어 전체 시스템에서 로봇 동작을 제외한 모든 부분을 담당한다.

최종 목적은 결국 Conveyor의 데이터를 받아 현 Object의 상태를 업데이트 하는데에 있다.

개발하다가 중단되었으나 기본 기능은 아래로 충분했다...

 

CControlModuleConveyorSystem :: proces()

 

 


III. Conveyor Motion Flow

 

이 클래스의 목적은 System에서 정의된 MotionState를 참조하여 그저 동작만 진행한다.

 

CControlModuleConveyorMotion :: process()

 


IV. 구조 특이점

 

Flow 몇 번이고 수정하며 Motion Class가 매우 단순화 되었는데
그 이유는 Motion 클래스에서 완벽하게 Motion만 관여하고 싶었다.

현재 어떤 모션을 해야할지 판단하는 로직 조차 Motion내부에 만들고 싶지 않아서
Object를 관리하는 System에서 Object를 기준으로 Motion 상태를 명령 내리는 식으로 만들었다.

그 결과 System에서 모든 관리를 다 해주고 Motion에서는
1. 내가 현재 무슨 모션을 해야할지 그저 동작만함
2. 현재 Step에서 Conveyor의 Increasement를 계산함
3. Conveyor Reference 기준으로 (X, Y, Z, Rx, Ry, Rz)를 외부로 반환해줌.

동작 알고리즘만 존재하는 Class가 되었다.

+ Recent posts