robots
Custom Robot
ROS 2 토픽 / 서비스 / 액션으로 통신하는 임의의 로봇을 단일 팔·양팔·휴머노이드·도구·이동 베이스 역할로 등록.
최근 확인 버전: v6.0.23
자체 개발한 로봇이거나 vendor가 ROS 2 인터페이스만 제공하는 경우, 별도 모듈 없이 Custom Robot 타입으로 등록할 수 있습니다.
사전 조건
- 외부 드라이버가
sensor_msgs/JointState토픽으로 현재 관절 상태를 발행 중 - 액추에이터를 받기 위한 토픽 / 서비스 / 액션 인터페이스 준비
이동 베이스는 조건이 다릅니다 — 아래 이동 베이스 등록을 참고하세요.
등록 절차
-
Robots → Management → Add Robot. 로봇 종류에서 custom을 선택합니다.
-
역할을 선택합니다.
- 단일 팔 — 일반 로봇 팔
- 양팔 (바이매뉴얼) — 두 팔이 한 로봇(관절 목록 하나)으로 묶인 양팔 로봇. 관절 목록의 앞 절반이 왼팔, 뒤 절반이 오른팔이어야 합니다.
- 휴머노이드 — 머리·몸통·팔·손·다리 관절을 가진 로봇. 관절마다 부위를 지정하고(아래 4단계), 걸을 수 있으면 이동 토픽도 입력합니다(아래 6단계).
- 도구 — 그리퍼, 진공흡착 등 엔드이펙터
- 이동 베이스 — 관절 대신 속도로 주행하는 베이스. 입력 칸이 달라지므로 이동 베이스 등록을 따릅니다.
역할에 따라 로봇 관리 탭에서 열리는 펜던트가 달라집니다(역할별 펜던트).
스크린샷 누락/docs/robots/custom-03-role.png로봇 추가 폼 — 역할 선택 목록: 단일 팔 / 양팔 (바이매뉴얼) / 휴머노이드 / 도구 / 이동 베이스
-
관절 이름을 입력합니다.
/joint_states토픽에 나오는 이름과 정확히 일치해야 합니다. 도구 관절 체크박스로 그리퍼 조인트를 따로 표시합니다. 휴머노이드는 체크박스 대신 다음 단계의 부위로 그리퍼를 정합니다. -
(휴머노이드) 관절마다 부위를 확인합니다.
역할이 휴머노이드면 각 관절 칸 아래에 사람 모양 아이콘과 함께 부위 선택이 붙습니다. 부위는 머리 / 몸통 / 왼팔 / 왼손 / 오른팔 / 오른손 / 왼다리 / 오른다리 / 기타 중 하나입니다.
부위는 관절 이름에서 자동으로 채워집니다(예:
left_knee_joint→ 왼다리,right_gripper→ 오른손,neck_pitch→ 머리). 잘못 들어간 관절은 직접 바꿉니다. 왼손·오른손 관절은 그리퍼(도구 관절)로 취급됩니다.휴머노이드 펜던트는 이 부위대로 관절을 묶어 보여줍니다. 손 관절이 1~2개(그리퍼)면 그 팔의 관절 목록 끝에 붙고, 그보다 많은 여러 손가락 손은 손 칸이 따로 생겨 손 전체 (쥐기·펴기) 줄로 한꺼번에 쥐고 펼 수 있습니다(휴머노이드 펜던트).
스크린샷 누락/docs/robots/custom-04-humanoid-parts.png로봇 추가 폼(휴머노이드) — 관절 이름 칸마다 붙은 부위 선택(머리/몸통/왼팔/왼손/…)
-
각 조인트의 관절 최소 한계 / 관절 최대 한계를 입력합니다.
IK가 발산하지 않도록 안전한 범위를 입력합니다. 단위는 라디안.
-
(휴머노이드, 선택) 이동 토픽과 이동 속도를 입력합니다.
걷는 휴머노이드(또는 바퀴 달린 휴머노이드)는 보행 컨트롤러가 받는 속도 명령 토픽과 위치 토픽을 입력하면 휴머노이드 펜던트에 이동 칸이 생깁니다. 두 토픽을 모두 채워야 이동 칸이 나타납니다.
- 이동 속도 명령 토픽 (선택) — 보행 컨트롤러(또는 바퀴 베이스)가 받는 속도 명령 토픽(
geometry_msgs/Twist, 보통cmd_vel) - 이동 위치 토픽 (선택) — 로봇 위치를 내는 토픽(
nav_msgs/Odometry, 보통odom) - 최대 직진 속도 (m/s) / 최대 회전 속도 (rad/s) / 옆으로도 움직임 (메카넘·옴니휠) — 이동 베이스 등록과 같은 칸입니다. 이동 칸의 주행 속도를 최대 속도로 자르고, 옆으로도 움직임을 켜면 이동 칸에 옆 (m/s) 줄과 Q/E 키가 생깁니다.
보행 컨트롤러를 먼저 켜 두면 두 토픽을 목록에서 고를 수 있습니다. 사용법은 휴머노이드 펜던트의 이동 칸을 참고하세요.
스크린샷 누락/docs/robots/custom-06-humanoid-walk.png로봇 추가 폼(휴머노이드) — 이동 속도 명령 토픽 (선택), 이동 위치 토픽 (선택), 최대 직진 속도 (m/s), 최대 회전 속도 (rad/s), 옆으로도 움직임 체크박스
- 이동 속도 명령 토픽 (선택) — 보행 컨트롤러(또는 바퀴 베이스)가 받는 속도 명령 토픽(
-
읽기 토픽 / 쓰기 타입 / 쓰기 토픽을 설정합니다.
- 읽기 토픽 — 관절 상태를 발행 중인 토픽을 목록에서 고르거나 직접 입력합니다. 예:
/my_robot/joint_states - 쓰기 타입 — Topic, Service, Action 중 선택
- 쓰기 토픽 — 컨트롤러가 구독 중인 명령 토픽을 목록에서 고르거나 직접 입력합니다.
- 쓰기 토픽 메시지 타입 — 보통 토픽에서 자동으로 정해집니다. 아직 떠 있지 않은 토픽을 입력했거나 쓰기 타입이 Service / Action이면
sensor_msgs/JointState,std_msgs/Float64MultiArray,trajectory_msgs/JointTrajectory,control_msgs/action/GripperCommand중에서 직접 고릅니다.
- 읽기 토픽 — 관절 상태를 발행 중인 토픽을 목록에서 고르거나 직접 입력합니다. 예:
-
(선택) IK 설정 (JSON)을 입력합니다.
placeholder의 예시 JSON을 참고해 URDF 경로, base/end-effector link, IK solver 옵션 등을 채웁니다. 비워두면 IK가 비활성화됩니다.
역할이 휴머노이드면 이 칸이 나타나지 않습니다. 휴머노이드는 첫 버전에서 관절 조작만 지원합니다.
-
저장 후 상태를 확인합니다.
custom 로봇은 ON/OFF 토글 대신 토픽 켜짐 / 토픽 꺼짐으로 표시됩니다. 외부 드라이버가 토픽을 발행 중이면 자동으로 토픽 켜짐이 됩니다.
스크린샷 누락/docs/robots/custom-02-online.pngCustom 로봇 카드 — 토픽 켜짐 상태
이동 베이스 등록
이동 베이스는 관절 위치가 아니라 속도 명령으로 움직이고, 위치는 **odometry(odom)**로 읽습니다. 다음이 준비되어 있어야 합니다.
- 베이스 드라이버가 위치를 odom 토픽(
nav_msgs/Odometry)으로 발행 중 - 베이스 드라이버가 속도 명령 토픽(
geometry_msgs/Twist, 보통cmd_vel)을 구독 중
-
역할에서 이동 베이스를 고르고 전용 칸을 채웁니다.
이동 베이스를 고르면 관절 이름·관절 한계·쓰기 타입·보간·IK 설정 칸이 사라지고 다음 칸이 남습니다.
- 읽기 토픽 — 베이스 위치를 발행하는 odom 토픽
- 쓰기 토픽 — 속도 명령을 받는 토픽
- 최대 직진 속도 (m/s) — 기본 0.5. 주행 명령을 이 값으로 자릅니다.
- 최대 회전 속도 (rad/s) — 기본 1.0 (1 rad/s ≈ 57°/s)
- 옆으로도 움직임 (메카넘·옴니휠) — 옆으로 이동할 수 있는 베이스면 켭니다. 끄면 차동구동으로 보고 옆 방향 명령은 버립니다.
베이스 드라이버를 먼저 켜 두면 두 토픽을 목록에서 고를 수 있고, 메시지 타입도 토픽에서 자동으로 정해집니다.
스크린샷 누락/docs/robots/custom-05-base-form.png로봇 추가 폼(이동 베이스) — 읽기/쓰기 토픽, 최대 직진 속도, 최대 회전 속도, 옆으로도 움직임 체크박스
-
저장 후 카드 이미지를 눌러 이동 베이스 펜던트로 확인합니다.
카드가 토픽 켜짐이 되면 이미지를 눌러 하단의 이동 베이스 펜던트를 엽니다. 주행 칸의 앞·뒤 (m/s) 줄에서 + 를 잠깐 누르고 있다가 떼어 위치 (odom) 값이 바뀌는지 확인하세요. 사용법은 이동 베이스 펜던트를 참고하세요.
스크린샷 누락/docs/robots/pendant-11-base-drive.png이동 베이스 펜던트 — 주행 칸: 앞·뒤 (m/s)·회전 (rad/s) 줄(양옆 s/w, d/a 키 표시)과 빨간 정지 버튼