KUKA 로봇 언어 역공학: DSL을 API 위에 구현

산업용 로봇 전용 DSL인 KUKA Robot Language(KRL)를 일반‑목적 Robotics API 위에 재구현하였다. 언어 구조를 역공학하고, AST 기반 인터프리터와 바이트코드 기반 인터프리터 두 가지 실행 방식을 설계·구현함으로써 기존 KRL 코드와의 호환성을 유지하면서도 확장성과 유지보수성을 크게 향상시켰다.

KUKA 로봇 언어 역공학: DSL을 API 위에 구현

초록

산업용 로봇 전용 DSL인 KUKA Robot Language(KRL)를 일반‑목적 Robotics API 위에 재구현하였다. 언어 구조를 역공학하고, AST 기반 인터프리터와 바이트코드 기반 인터프리터 두 가지 실행 방식을 설계·구현함으로써 기존 KRL 코드와의 호환성을 유지하면서도 확장성과 유지보수성을 크게 향상시켰다.

상세 요약

본 논문은 상용 로봇 컨트롤러에 내재된 전용 DSL인 KRL을 역공학하여, 보다 범용적인 Java 기반 Robotics API 위에 구현하는 과정을 상세히 제시한다. 첫 번째 단계는 KRL의 문법과 의미론을 추출하는 것으로, 공식 매뉴얼과 실제 현장 코드 샘플을 병행 분석하여 비공식적인 구문 규칙과 특수 명령(예: $VEL_AXIS, $APO)까지 포괄적인 문법 트리를 구축한다. 이 과정에서 토큰화, 파싱, 의미 검증 단계가 명확히 구분되며, 특히 KRL이 지원하는 실시간 제어 흐름(예: WAIT, INTERRUPT, CATCH)과 모션 프로파일링(PTP, LIN, CIRC)의 매핑이 핵심 난관으로 부각된다.

다음으로 저자들은 두 가지 실행 모델을 제안한다. 첫 번째는 파싱 단계에서 생성된 추상 구문 트리(AST)를 직접 순회하며 Robotics API의 메서드 호출로 변환하는 트리 기반 인터프리터이다. 이 방식은 디버깅이 용이하고, 동적 코드 삽입이나 런타임 최적화에 유리하지만, 반복 실행 시 파싱 오버헤드가 누적될 수 있다. 두 번째는 KRL 프로그램을 자체 바이트코드 형태로 컴파일한 뒤, 가벼운 스택 기반 가상 머신에서 실행하는 바이트코드 기반 인터프리터다. 바이트코드는 명령어와 피연산자를 압축하여 메모리 사용량을 최소화하고, 인터프리터 루프가 고정된 형태이므로 실시간 성능이 크게 향상된다.

두 인터프리터 모두 KRL의 특수한 제어 구조—예를 들어, 멀티스레드형 INTERRUPT와 CATCH 블록, 그리고 모션 중단 및 재시작 메커니즘—를 Robotics API의 콜백 및 이벤트 시스템에 매핑한다. 특히, 모션 명령은 API의 Motion 객체와 MotionControl 인터페이스를 활용해 구현되며, KRL의 속도·가속도 제한 파라미터는 API 레이어에서 동적으로 적용된다.

성능 평가에서는 동일한 작업을 두 인터프리터와 원본 KRL 컨트롤러에서 실행했을 때, 바이트코드 인터프리터가 평균 15 % 정도의 실행 시간 절감을 보였으며, 메모리 사용량도 30 % 이하로 감소했다. 트리 기반 인터프리터는 개발 편의성 측면에서 우수했으며, 복잡한 디버깅 시나리오에서 빠른 문제 파악이 가능했다.

마지막으로 논문은 이러한 구현이 로봇 소프트웨어의 포팅 비용을 크게 낮추고, 기존 레거시 코드와 새로운 모듈을 동시에 운용할 수 있는 하이브리드 환경을 제공한다는 점을 강조한다. 향후 작업으로는 자동 테스트 프레임워크와 실시간 안전 검증 모듈을 추가하여 산업 현장에서의 신뢰성을 더욱 강화할 계획이다.


📜 논문 원문 (영문)

🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...