본문으로 건너뛰기

라이브러리 개요

산업용 manipulator를 위한 real-time 제어 라이브러리입니다. 기존 코드 수정 없이 새 로봇을 추가할 수 있습니다.

핵심 기능

기능설명
1 kHz 실시간 제어격리 CPU + PREEMPT_RT 커널. 실행 시간 < 100 µs, 지터 < 50 µs
이중 안전 상태 머신SafetyMode (하드웨어 보호) + RobotMode (사용자 제어). 명시적 명령만 상태 변경
플러그 앤 플레이 확장Scaffold 도구로 Description Package 생성 → colcon build → 자동 통합
어댑터 기반 ROS2 통합제어 로직은 프레임워크 독립적. ROS2를 다른 통신 계층으로 교체 가능
Composable Launch각 컴포넌트를 독립 실행하거나 조합. 필요한 것만 활성화
컨벤션 기반 자동 발견description_package 인수만으로 URDF, config, SRDF 자동 감지

아키텍처

의존성은 항상 아래로만 흐릅니다. ROS2 없이 제어 로직을 테스트하고, 코어 수정 없이 통신 계층을 교체할 수 있습니다.

Launch 구조

PLEM은 composable launch 시스템을 사용합니다. 각 컴포넌트를 독립적으로 실행하거나 필요한 것만 조합할 수 있습니다.

컴포넌트역할필수 여부
plem_launch.py통합 orchestrator필수
├─ rt_driver.launch.pyRT EtherCAT driver (1kHz)필수
├─ ros2_control.launch.pyHardware interface + controllers필수
├─ moveit.launch.py모션 플래닝선택
└─ plem_ai_serverPython WebSocket/UDP bridge선택

자세한 내용은 ROS2 Launch 가이드를 참고하세요.

컨벤션 기반 자동 발견

PLEM은 description package의 구조를 컨벤션으로 정의하여 설정 파일을 자동으로 발견합니다.

경로용도필수 여부
urdf/*.urdf.xacro로봇 모델 정의자동 발견
config/joint_limits.yaml관절 제한필수
config/controllers.yamlController 설정선택 (자동 생성)
srdf/*.srdfMoveIt 설정선택 (MoveIt용)

패키지 이름에서 _description 접미사를 제거하여 로봇 이름을 자동 추출합니다 (예: ur5e_descriptionur5e).

자세한 프로토콜은 Description Protocol 레퍼런스를 참고하세요.

새 로봇 통합 (빠른 개요)

# 1. Description Package 생성
ros2 run plem_bringup create_description --name my_robot --dof 6

# 2. URDF, joint_limits.yaml 편집

# 3. 빌드 & 실행
colcon build --packages-select my_robot_description
ros2 launch plem_bringup plem_launch.py description_package:=my_robot_description

새 제조사 로봇의 하드웨어 제어가 필요하면 ros2 run plem_bringup create_robot으로 C++ 확장 패키지를 생성합니다.

상세한 통합 절차는 로봇 통합 가이드를 참고하세요.

다음 단계

설치 가이드로 이동하여 PLEM 설치를 확인하고 첫 프로젝트를 빌드하세요.