장비제어 통합솔루션 R-Machine : 야근 라이브러리

2021. 1. 5. 19:40장비제어개발관한이야기

반응형

 

솔루션 구성도
Ragnarok 라이브러리

 

날씨가 점점 추워지는 하루입니다. 나이가 들어서 그런지 어쩐 지는 잘 모르겠지만, 자꾸 지갑이 텅텅 비네요. 어쨌거나, 1일 1 포스팅에 도전하고 있습니다. 오늘 포스팅할 주제는 R-Machine(가칭)입니다.

 

장비제어 통합설루션 R-Machine 이란?

이름만 거창하지 사실은 반복되는 업무, 야근의 탈출을 위해 설계하게 된 종합 솔루션입니다. 아직, 내공이 부족해서 뭐라 이름 짓기가 힘드네요. R은 라그나로크에 R입니다. 단순 이름이니 넘어가도록 하겠습니다. 확실하게 정한 거 아닙니다.

 

10년 넘게 장비회사에 다니면서, 반복되는 일, 실수가 많은 일을 모아서 일종의 편의 설루션을 만들었습니다. 그리고, 주로 비전장비를 다루게 되면서 비전관련되 라이브러리도 많이 필요하기 때문에 크게 제어, 비전 두 가지로 나누어지면서 구현을 하게 되었습니다. 장비회사답게 멋진 소프트웨어는 아니더라도 어느 정도 틀에 맞춰야 생산성이 나오기 때문에 공통된 작업을 피하기 위해서 만들게 되었습니다. 

 

어떻게 구성되어 있나?

일단 위와 같이 21개의 프로젝트로 시작이 되었습니다. 몇 개의 테스트 프로젝트 + DLL 프로젝트로 구성된 설루션입니다. 현재는 종류가 많지 않아 하나의 설루션으로 관리되고 있지만, 크게 HW제어, 비전으로 나눌 생각입니다. 그리고 각 프로젝트의 Core 프로젝트 성격과 기능을 간략히 설명드리겠습니다. Core에서부터 시작하여 세세한 클래스들이 한 프로젝트에 하나씩 기능이 내장됩니다.

 

1.RagnarokCore

설루션에 Main이 되는 프로젝트입니다. ATL 설정, Cognex 라이브러리 설정, OpenCV 설정, 기본 자료형 Define문, 저희 회사의 기본이 되는 부분입니다. 모든 프로젝트에 기본이 되는 부분을 모아 놨으며, 기본적인 Macro 함수 등이 다수가 있습니다. 밑에 설명되는 HelaCore 및 IRonMCore의 상위 개념입니다.

 

2. HelaCore

비전부에 메인이 되는 프로젝트로서, 비전결과 처리, 이미지 처리, 도형처리, 같은 비전 관련 유틸리티 클래스를 가지고 있습니다. 하위프로젝트에서는 비전 셋업과 같은 공통적으로 적용되는 GUI 등을 가진 프로젝트, 각종 이미지 필터 등을 가지고 있습니다.

 

3.IRonMCore

제어부에 핵식이되는 프로젝트로서 각종 하드웨어에 설정에 필요 한 인터페이스 클래스 등을 정의하고 있습니다. 주로 카메라, IO , Motion을 원격 또는 직접 제어할 수 있는 기능을 가지고 있습니다. 또한 위에 검사 쪽과 마찬가지로 모션설정 카메라설정에 관하여 어느 프로젝트에서나 같은 GUI를 사용할 수 있게 GUI 프로젝트를 포함하고 있습니다.

 

 

 

마치며,

모든 프로젝트마다 카메라, IO , Motion 소스, 비전소스를 Ctrl+C, V를 통해서 여러 프로젝트에 적용시켜 왔습니다. 그렇게 되면서 같은 기능들이 저마다 프로젝트에서 다르게 동작하고, 유지보수는 힘들어지고, 결국 망할 거라 생각이 들었습니다. 지금이라도 공통된 기능을 라이브러리 형태로 구현하면서, 좀 더 생산성 있는 개발자가 되려고 합니다.

 

아쉬운 건, 회사에서는 이런 게 있는 거 조차 모른다는 겁니다. 아마 좀 다녀보신 분들은 알거라 생각됩니다. 진짜 모릅니다. 라이브러리 구성, 리펙토링 이런거도 좀 알아주는 장비회사 되었으면 합니다. 

반응형