LITHE 파이썬 브레인과 실시간 C++ 스파인 연결 저비용 로봇 제어 프레임워크

LITHE 파이썬 브레인과 실시간 C++ 스파인 연결 저비용 로봇 제어 프레임워크
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 라즈베리 파이 4B와 pi3hat를 이용해 CPU 코어를 격리하고 lock‑free 공유 메모리를 활용함으로써, 파이썬 기반 고수준 Brain이 1 kHz 실시간 C++ Spine의 제어 로직을 중단 없이 동적으로 교체할 수 있는 LITHE 아키텍처를 제안한다. 실험 결과, WCET < 100 µs, 최대 릴리스 지터 < 4 µs를 달성했으며, 대형 언어 모델이 실시간 시스템 식별 및 제어법 진화를 수행하는 시연을 보여준다.

상세 분석

LITHE는 기존 로봇 제어 계층 구조에서 발생하는 “불변 컴파일 코드” 문제를 소프트웨어 레벨에서 해결한다는 점에서 혁신적이다. 가장 큰 핵심은 Linux vanilla 커널 위에 isolcpus 파라미터와 nohz_full, rcu_nocbs 등 실시간 친화적 부팅 옵션을 적용해 특정 코어를 완전히 스케줄러와 인터럽트로부터 격리한 것이다. 이렇게 하면 CPU 1은 전용 실시간 스파인 스레드만 실행하게 되며, 운영체제의 일반적인 잡스케줄링이나 가비지 컬렉션이 전혀 방해하지 않는다.

IPC는 POSIX 공유 메모리와 Seqlock 기반의 무잠금 설계로 구현된다. 파이썬 Brain은 /dev/shm에 매핑된 구조체에 ctypes를 통해 직접 접근하고, C++ Spine은 원자적 시퀀스 카운터를 확인해 일관된 데이터를 읽는다. 이 방식은 ROS 2와 같은 DDS 기반 메시징이 초래하는 직렬화·복사 비용을 완전히 제거하고, 1 kHz 루프에서 마이크로초 수준의 지터만을 남긴다.

핫스와핑 메커니즘은 dlopen으로 새로운 .so 파일을 로드하고, 로드된 객체의 진입점을 가리키는 원자적 포인터를 교체함으로써 구현된다. 로드 과정은 별도 CPU 2(Brain)에서 gcc를 호출해 컴파일하고, mlockall로 메모리를 물리 RAM에 고정시켜 페이지 폴트와 스와핑을 방지한다. 스파인 스레드는 매 사이클 시작 시 현재 포인터를 읽어 최신 제어법을 실행하므로, 로드가 완료되기 전까지는 기존 로직이 계속 동작한다. 이 설계는 “한 사이클도 놓치지 않는다”는 보장을 제공한다.

파이프라인 실행 구조는 Double‑Buffer 방식으로, 센서 읽기·제어 계산·버스 전송을 겹쳐 수행한다. CPU 3(Transport)에서 CAN‑FD 버스 I/O를 비동기적으로 처리하고, Spine은 이전 사이클에서 계산된 명령을 즉시 전송하면서 동시에 다음 사이클의 제어법을 계산한다. 이로써 버스 대기시간이 CPU 1의 계산에 전혀 영향을 미치지 않아, 이론적인 1 cycle 지연(Z‑1)만 존재한다.

성능 평가에서는 스트레스 테스트와 실제 1‑DOF 로봇 실험을 통해 WCET < 100 µs, MRJ < 4 µs를 달성했으며, qwen2.5‑coder‑7b LLM이 실시간 시스템 식별을 수행해 PID 파라미터를 자동 튜닝하고, 새로운 임피던스 제어법을 0.2 s 내에 교체하는 시나리오를 성공적으로 보여준다. 이는 저비용 SBC에서도 고수준 AI와 실시간 제어가 안전하게 공존할 수 있음을 증명한다.

전반적으로 LITHE는 커널 패치를 요구하지 않고, 표준 Linux 배포판만으로도 “사용자 공간 실시간”을 구현한다는 점에서 실용성이 높으며, 오픈소스 HAL을 통해 다양한 CAN‑FD·CANopen 디바이스를 손쉽게 통합할 수 있다. 향후 연구에서는 멀티‑스파인 확장, 실시간 메모리 할당 분석, 그리고 더 복잡한 다관절 로봇에 대한 적용 가능성을 탐색할 여지가 있다.


댓글 및 학술 토론

Loading comments...

의견 남기기