로봇 제어 화면 — Robot Control
Robot Control Setup 에서 Start 를 누르면 이 화면으로 넘어옵니다. s 를 누르면 스택이 기동되고, 기동이 끝나면 아래 화면처럼 채워집니다.
| 영역 | 내용 |
|---|---|
| 상태 줄 (위 두 줄) | EtherCAT·모드·안전 상태·슬레이브·CPU/메모리·ROS 도메인 |
| Robots (왼쪽 위) | 기동한 로봇 목록과 각 로봇의 모드 |
| Joint Move (왼쪽) | 관절 값 입력과 저장 포즈로 이동 |
| 로그 (오른쪽) | 그리퍼 상태 칩 + 스택 로그와 로봇 이벤트 |
| 키 안내 (아래) | 지금 누를 수 있는 키, 설치 버전, 워크스페이스·컨트롤러 표시 |
상태 줄 읽기
| 칸 | 표시 | 뜻 |
|---|---|---|
| EtherCAT | ● eth0 초록 / ✖ eth0 빨강 | 버스 연결 여부와 인터페이스 이름 |
| 모드 | TRAJ 초록 · FREE 주황 · BRAKE 회색 · STOP 주황 · ERR 빨강 | 로봇 모드 — 궤적 추종 · 프리드라이브 · 브레이크 · 정지 중 · 오류 |
| 안전 | NORMAL 초록 / P-STOP 빨강 | 보호정지 여부 — 빨강이면 정지와 복구 |
| 슬레이브 | ● ● ● ● ● ● ● 7/7 | 목록에서 고른 로봇의 마스터에 붙은 EtherCAT 장치마다 점 하나(서보 드라이브 외 장치도 포함). 초록 = 정상(OP), 주황 = 초기화 중, 빨강 = 링크 끊김·오류. 뒤 숫자는 정상/전체 |
| WKC | WKC 7/7 초록 / 빨강 | EtherCAT 워킹 카운터 — 현재/기대 값. 장치 수와 같지 않을 수 있습니다. 빨강이면 이번 주기에 일부 장치의 응답이 빠진 것입니다 |
| CPU · MEM | CPU 42% · MEM 5.1/16GB (32%) | 기기 부하. 3초마다 갱신 |
| DOM | DOM 42 초록 / DOM 42 ⚠ 노랑 / DOM 0 ⚠ 빨강 | ROS 도메인 — 노랑은 셸 값과 설정값이 다름, 빨강은 도메인 0(미지정이거나 0 으로 지정) |
| NITROS | req:on · req:off · ? · -- | 카메라 스택의 GPU 직결 전송 요청 여부입니다. 실제로 동작 중이라는 뜻은 아닙니다. Collision Avoidance 를 켠 기동에서만 조회하며 -- 는 조회하지 않음, ? 는 확인하지 못함(카메라 노드 미기동·응답 지연 등) |
로봇 목록
각 행은 ● 이름 … 모드 입니다. ● 초록은 ROS 2 연결됨, ○ 회색은 아직 연결 전입니다. 보호정지 중에는 모드 자리에 빨간 P-STOP 이 나옵니다. 여러 대를 띄웠으면 ← 로 목록에, → 로 로그로 포커스를 옮기고, 목록에서 고른 로봇이 관절 이동과 로그의 대상이 됩니다. b 는 왼쪽 패널 전체를 숨기거나 다시 보입니다.
브레이크와 프리드라이브
| 키 | 동작 |
|---|---|
r | 브레이크 ↔ 궤적 추종(TRAJ) 전환. 움직이는 중에 누르면 브레이크 전환을 요청합니다 — 급정지할 수 있습니다. 상태 줄이 BRAKE 로 바뀐 것을 보기 전까지는 멈춘 것으로 여기지 마세요 |
f | 브레이크 ↔ 프리드라이브(FREE) 전환. 프리드라이브에서는 손으로 팔을 움직일 수 있습니다 |
f 는 브레이크 상태에서만 프리드라이브로 들어갑니다. 궤적 추종 중에 누르면 먼저 브레이크만 걸리고 Braking first. Press [f] again after BRAKED to enter FreeDrive. 가 뜹니다 — 브레이크가 걸린 뒤 한 번 더 누르세요. 아직 기동 전이면 Press [s] to launch first, 연결 중이면 ROS2 connecting — try again in a moment 가 뜹니다.
전환 명령이 받아들여진 뒤에도 하드웨어 상태를 다시 확인합니다. 보호정지 중이면 mode change acknowledged but PROTECTIVE_STOP is active — motion will be blocked by hardware., 관절이 설계 범위 밖이면 joints beyond URDF design range … Press [R] to attempt FreeDrive recovery. 가 뜹니다. 둘 다 정지와 복구를 따르세요.
r 로 브레이크를 풀면 로봇이 명령을 받습니다. 작업 반경에 사람과 물건이 없는지 확인하시고, 비상정지에 손이 닿는 위치에서 조작하세요. 화면의 어떤 키도 물리 비상정지를 대신하지 않습니다.
관절 이동
왼쪽 Joint Move 패널에서 관절 값을 직접 입력하거나 저장된 포즈로 이동합니다. MoveIt 을 켜고 기동했을 때만 쓸 수 있고, 로봇이 궤적 추종(TRAJ) 모드여야 움직입니다.
직접 입력
Target°칸에 목표 각도를 도 단위로 입력하세요. 비워 둔 관절은 지금 위치를 유지합니다.- Execute 를 누르거나 입력란에서
Enter를 치세요. Reset 은 입력을 지웁니다. - 결과가 패널 아래 줄에 나옵니다. 성공은 플래너가 명령을 받아들였다는 뜻이지 도착했다는 뜻이 아닙니다 — 성공하면 입력이 지워지고, 실패하면 남습니다. 실행 진행·완료는 이 패널에 표시되지 않고 취소 기능도 없으니,
Current°열이 목표에 이르러 멈추는 것을 보고 판단하세요. 명령이 수락된 뒤에는 다른 조작이 막히지 않으므로, 멈춘 것을 확인하기 전에는 Teaching Pendant 실행·조그·캘리브레이션 같은 다른 동작을 시작하지 마세요.
숫자가 아니면 칸이 빨간 글자로 바뀌고 아래 줄에 not a number 가, 관절 한계 밖이면 허용 범위가 나옵니다. 이동은 한 번에 목표까지 갑니다 — 큰 각도 차이면 큰 동작이 되니 반경을 먼저 비우세요. Teaching Pendant 의 워크스페이스 박스는 이 이동에는 적용되지 않습니다.
목표 입력란에 커서가 있어도 r · f · q · a · d 는 글자로 들어가지 않고 바로 브레이크 · 프리드라이브 · 종료 · 포즈 추가 · 포즈 삭제 를 실행합니다. 숫자와 부호·소수점만 입력하세요.
그 밖의 키 — s(정지)와 R(복구)을 포함해 i·l·v·p·b·, — 는 입력란 안에서는 동작하지 않습니다. 입력란 밖(로봇 목록이나 로그)을 클릭해 커서를 옮긴 뒤 누르세요. 급하면 화면 키가 아니라 물리 비상정지입니다.
포즈
| 조작 | 동작 |
|---|---|
목록에서 ↑ ↓ | 그 포즈의 값을 목표 칸에 미리 채웁니다. 직접 입력한 값이 있으면 덮지 않고 edits kept — enter loads '…' 로 안내합니다 |
목록에서 Enter 또는 클릭 | 목표 칸을 그 포즈로 채웁니다. 직접 입력한 값이 있을 때만 덮어쓸지 확인합니다. 이동은 Execute 를 눌러야 시작됩니다 |
a | 목표 칸에 입력한 값을 새 포즈로 저장합니다. 모든 관절이 채워져 있어야 합니다 |
d | 하이라이트한 포즈를 삭제합니다 (확인을 거칩니다) |
관절 이름이 joint0–joint5 인 6축 로봇(지원 모델 전부)에는 포즈 넷이 내장돼 있습니다. 한 번이라도 추가·삭제하면 그 목록이 그대로 보존됩니다.
| 포즈 | joint0 | joint1 | joint2 | joint3 | joint4 | joint5 |
|---|---|---|---|---|---|---|
| zero pos | 0 | 0 | 0 | 0 | 0 | 0 |
| packaging pos | 0 | 0 | 158 | 0 | −158 | 0 |
| jog left pos | −20 | −40 | −110 | −20 | 40 | 0 |
| jog right pos | 20 | 40 | 110 | 20 | −40 | 0 |
패널이 비활성일 때는 이유가 표시됩니다 — robot not launched — press [s] · waiting for ROS2 connection · MoveIt disabled for this launch · waiting for joints / URDF · URDF arm chain unresolved — Joint Move disabled (see log).
로그
오른쪽 패널에는 두 종류가 섞여 흐릅니다. 기동한 스택의 출력은 항상 보이고, 로봇 이벤트(연결·모드·안전·한계)는 목록에서 고른 로봇 것만 보입니다. 최근 1000줄을 유지합니다.
| 접두 | 뜻 |
|---|---|
[RT] | 실시간 제어 루프 이벤트 — PROTECTIVE_STOP · BRAKE_ENGAGE · WORKSPACE_LIMIT_EE 등. 같은 이벤트는 5초 동안 반복 출력을 억제하고, 그 뒤 같은 이벤트가 다시 오면 억제된 횟수를 (xN more in 5s) 로 붙입니다 |
[LIMIT] | 관절이 설계 범위를 벗어나거나 되돌아옴 |
[RECOVER] | R 복구 시퀀스의 진행 |
[CRASH] | 스택 프로세스가 예기치 않게 종료됨 |
[ERROR] | 스택 관리 오류 — 기동 전 검사 실패(예: EtherCAT 슬레이브 미검출), 프로세스 시작 실패, 비정상 종료 등 |
- 마우스로 드래그해 놓으면 선택한 줄이 클립보드로 복사됩니다.
- 위로 스크롤한 동안에는 새 줄이 와도 따라 내려가지 않습니다.
Enter를 누르면 최신 줄로 돌아갑니다. l은 로그 상세 정도를info → debug → warn → err순으로 바꿉니다. 저장되며 다음 기동부터 적용됩니다.
그리퍼를 설정한 로봇이면 로그 위에 GRIP rg6 ○ idle pos=… eff=… 칩이 나옵니다. ● grip 은 물체를 잡고 있음, ⋯ busy 는 동작 중, ✗ ERROR 는 그리퍼 오류, · waiting for /gripper_status 는 아직 상태를 받지 못함입니다.
정보 (i)
i 를 누르면 오른쪽에 정보 패널이 열립니다. 고른 로봇의 관절 각도와, 웹 화면 주소가 나옵니다. Robot Control Setup 에서 끈 구성 요소의 주소는 표시되지 않습니다.
RViz · PlotJuggler
| 키 | 동작 |
|---|---|
v | MoveIt RViz 를 띄우거나 닫습니다. MoveIt 을 켜고 기동했을 때만 키 안내에 나옵니다 |
p | PlotJuggler 를 띄우거나 닫습니다 (키 안내에는 나오지 않습니다) |
기기에 모니터가 없으면 창이 뜨지 않습니다. 둘 다 스택을 정지하면 함께 닫힙니다.
키 전체
키 안내 줄에는 지금 상황에 맞는 키만 나옵니다. 한글 입력 상태에서도 같은 자리의 자음·모음으로 동작합니다.
| 키 | 한글 | 동작 | 안내 줄 |
|---|---|---|---|
s | ㄴ | 스택 기동 · 정지 | 항상 (Start / Stop) — 입력란 밖에서만 |
r | ㄱ | 브레이크 ↔ 궤적 추종 | 기동 후 |
f | ㄹ | 브레이크 ↔ 프리드라이브 | 기동 후 |
R | ㄲ | 복구 | 복구가 필요할 때만 (빨강) — 입력란 밖에서만 |
a · d | ㅁ · ㅇ | 포즈 추가 · 삭제 | 관절 이동 패널 안 |
i | ㅑ | 정보 패널 | 기동 후 |
l | ㅣ | 로그 상세 정도 | 기동 후 |
v | ㅍ | RViz | MoveIt 켠 기동 |
p | ㅔ | PlotJuggler | 표시 안 됨 |
b | ㅠ | 왼쪽 패널 숨김 · 표시 | 표시 안 됨 |
← · → | — | 로봇 목록 · 로그로 포커스 | 표시 안 됨 |
, | — | 설정 | 기동 전 |
q | ㅂ | 종료 — 두 번 누르면 강제 종료 | 항상 |