본문으로 건너뛰기

로봇 스택 기동

스택은 기기에서 plem 으로 띄웁니다. 통합 사용자에게 필요한 것은 세 가지입니다.

  • 어떤 선택이 내가 쓸 인터페이스를 바꾸는가
  • 떴는지 어떻게 확인하는가
  • 안 떴을 때 무엇을 보는가

기동 절차

plem 을 실행해 로봇 프로필을 고르고 기동합니다. 단일 로봇이든 여러 대든 같은 launch 파일 하나로 통일돼 있습니다. 기동 직전에 선택된 EtherCAT 마스터의 슬레이브를 조회하고, 결과가 0이면 스택을 시작하지 않습니다.

무엇이 내 인터페이스를 바꾸는가

plem 의 선택launch 인자추가로 생기는 것선행 조건
MoveItmoveitplem/plan_trajectory
충돌 회피enable_cumotion지원 모델에 cuMotion 계획 파이프라인 등록 — ROS 2 Humble(JetPack 6) 트레인 한정: Jazzy(JetPack 7) 장비에는 cuMotion 이 아직 프로비저닝되지 않았습니다. 지원 모델에서 이 옵션을 켜고 기동하면 cuMotion 플러그인을 찾지 못해 로봇 스택 기동이 실패합니다(사전 경고 없음) — 켜지 마세요 MoveIt
카메라·지각perception_stack지원 카메라의 토픽 — 캘리브레이션이 끝나 있어야 환경 지도(ESDF)까지 올라옴MoveIt · 지각 지원 카메라
Teaching Pendant · Plem Labteaching_pendant · plem_lab웹 UI 브릿지 (ROS 2 통합에는 불필요)

세 가지를 주의하세요.

MoveIt 이 꺼지면 cuMotion 과 카메라, 지각 노드가 아예 뜨지 않습니다. 카메라 옵션만 켜도 소용없습니다. 실제 환경 회피에는 MoveIt·충돌 회피·카메라·캘리브레이션이 모두 필요합니다.

COLLISION_AWARE 요청의 수락 여부는 goal 단계에서 결정되지 않습니다. 모델 지원과 파이프라인 상태는 수락 뒤에 검사되므로 goal 이 abort 될 수 있습니다. 결과까지 확인하세요.

저장된 선택이 없을 때 plem 은 MoveIt 켜짐·충돌 회피 꺼짐으로 시작하지만, launch 파일 자체의 기본값은 그 반대(moveit=false, enable_cumotion=true)입니다. plem 은 마지막 선택을 기억하므로, 직접 ros2 launch 로 띄우신다면 원하는 값을 명시하세요.

떴는지 확인하기

기동은 단번에 끝나지 않습니다. 로봇은 1초 간격으로 엇갈려 올라오고, 그 위의 계층이 차례로 붙습니다.

시점올라오는 것
하드웨어 활성화 직후plem/set_mode · plem/control_command · status_broadcaster · rt_*
약 3–4초웹 UI 브릿지 (Pendant·Lab 을 켠 경우)
약 5초카메라·지각 노드, MoveIt
지각 사용 시기동 6초 뒤부터 환경 지도 서비스가 광고되기를 최대 60초 대기 후 MoveIt 기동

가장 확실한 신호는 plem/set_mode 액션이 응답하는 것입니다. 여기까지 왔으면 하드웨어 인터페이스가 활성화된 상태입니다. 클라이언트는 고정 시간을 기다리지 말고 wait_for_server 로 대기하세요.

안 뜰 때

증상할 일
기동 전에 EtherCAT 슬레이브가 없다고 막힘슬레이브 0 또는 상태 조회 실패로봇 컨트롤 박스 전원과 EtherCAT 케이블을 확인하고 다시 기동
로그의 [EtherCATBus] Failed to request master.마스터를 잡지 못함 — 원인은 구분되지 않음이전 스택이 완전히 내려갔는지 확인하고(§재기동) 다시 기동
지각이 "driver-only" 로 강등됐다는 안내카메라 캘리브레이션 기록 없음 (실패가 아니라 축소 기동)그대로 쓰셔도 됩니다. 지각 기능이 필요하면 캘리브레이션 먼저
환경 지도 준비 실패로 종료지각 스택이 제때 뜨지 못해 launch 전체가 멈춤카메라 연결을 확인하고(문제 해결) 다시 기동
MoveIt·웹 브릿지 관련 경고 후 계속 진행해당 구성 요소만 빠지고 나머지는 정상 기동웹 화면이 필요하면 스택을 내리고 다시 기동

재기동

이전 스택이 완전히 내려간 뒤에 다시 띄우세요. 아직 살아 있으면 EtherCAT 마스터를 잡지 못해 실패하고, 반쯤 뜬 스택이 같은 네임스페이스에 중복 노드를 남겨 이후 관측을 오염시킵니다. 정지에는 시간이 걸릴 수 있습니다. 카메라를 쓰는 구성은 특히 그렇습니다.

경고
plem kill 은 최후 수단입니다

정상 정지는 로봇에 BRAKED 를 요청한 뒤 프로세스를 내립니다(요청은 최선 노력이며 성공을 확인하지는 않습니다).

plem kill 은 그 요청조차 없이 기기 전체에서 매칭되는 프로세스를 종료하고 곧 강제 종료로 올립니다. 따로 띄워 두신 RViz·PlotJuggler 같은 도구도 함께 끊깁니다. 정상 정지가 듣지 않을 때만 쓰세요.

직접 기동할 때

plem 을 거치지 않고 ros2 launch 로 띄우신다면 네 가지를 챙기세요. 빠뜨린 값은 대부분 오류가 아니라 조용한 기본값으로 떨어집니다.

  • 프로필 디렉터리: robots/ 를 담고 있는 루트를 명시합니다(보통 ~/.plem). launch 기본값은 빈 값이라, 생략하거나 robots/ 자체를 넘기면 내장 기본 프로필(그리퍼 없음·카메라 없음)로 떨어져 장착한 장비가 사라집니다.
  • 로봇 이름: 목록의 각 이름이 곧 네임스페이스가 됩니다.
  • 로봇 시리얼: 로봇 목록과 같은 개수·순서로 지정합니다 — 시리얼이 없는 로봇은 ,S2 처럼 빈 슬롯을 자리로 남깁니다(개수가 다르면 기동 전에 오류). 등록 모델은 시리얼이 필수입니다: 기기별 관절 캘리브레이션 프로필(~/.plem/profiles/<시리얼>.json)이 오프셋의 정본이라, 생략하면 조용한 기본값이 아니라 드라이버가 명시적 오류로 조립을 거부합니다.
  • EtherCAT 마스터: 역시 같은 개수·순서로 지정합니다. 항목이 모자라면 오류 없이 그 로봇의 순번(0부터)으로 대체됩니다.