robots

Custom Robot

ROS 2 토픽 / 서비스 / 액션으로 통신하는 임의의 로봇을 단일 팔·양팔·휴머노이드·도구·이동 베이스 역할로 등록.

최근 확인 버전: v6.0.23

자체 개발한 로봇이거나 vendor가 ROS 2 인터페이스만 제공하는 경우, 별도 모듈 없이 Custom Robot 타입으로 등록할 수 있습니다.

사전 조건

  • 외부 드라이버가 sensor_msgs/JointState 토픽으로 현재 관절 상태를 발행 중
  • 액추에이터를 받기 위한 토픽 / 서비스 / 액션 인터페이스 준비

이동 베이스는 조건이 다릅니다 — 아래 이동 베이스 등록을 참고하세요.

등록 절차

    1. Robots → Management → Add Robot. 로봇 종류에서 custom을 선택합니다.

    2. 역할을 선택합니다.

      • 단일 팔 — 일반 로봇 팔
      • 양팔 (바이매뉴얼) — 두 팔이 한 로봇(관절 목록 하나)으로 묶인 양팔 로봇. 관절 목록의 앞 절반이 왼팔, 뒤 절반이 오른팔이어야 합니다.
      • 휴머노이드 — 머리·몸통·팔·손·다리 관절을 가진 로봇. 관절마다 부위를 지정하고(아래 4단계), 걸을 수 있으면 이동 토픽도 입력합니다(아래 6단계).
      • 도구 — 그리퍼, 진공흡착 등 엔드이펙터
      • 이동 베이스 — 관절 대신 속도로 주행하는 베이스. 입력 칸이 달라지므로 이동 베이스 등록을 따릅니다.

      역할에 따라 로봇 관리 탭에서 열리는 펜던트가 달라집니다(역할별 펜던트).

      스크린샷 누락/docs/robots/custom-03-role.png

      로봇 추가 폼 — 역할 선택 목록: 단일 팔 / 양팔 (바이매뉴얼) / 휴머노이드 / 도구 / 이동 베이스

    3. 관절 이름을 입력합니다.

      /joint_states 토픽에 나오는 이름과 정확히 일치해야 합니다. 도구 관절 체크박스로 그리퍼 조인트를 따로 표시합니다. 휴머노이드는 체크박스 대신 다음 단계의 부위로 그리퍼를 정합니다.

    4. (휴머노이드) 관절마다 부위를 확인합니다.

      역할이 휴머노이드면 각 관절 칸 아래에 사람 모양 아이콘과 함께 부위 선택이 붙습니다. 부위는 머리 / 몸통 / 왼팔 / 왼손 / 오른팔 / 오른손 / 왼다리 / 오른다리 / 기타 중 하나입니다.

      부위는 관절 이름에서 자동으로 채워집니다(예: left_knee_joint → 왼다리, right_gripper → 오른손, neck_pitch → 머리). 잘못 들어간 관절은 직접 바꿉니다. 왼손·오른손 관절은 그리퍼(도구 관절)로 취급됩니다.

      휴머노이드 펜던트는 이 부위대로 관절을 묶어 보여줍니다. 손 관절이 1~2개(그리퍼)면 그 팔의 관절 목록 끝에 붙고, 그보다 많은 여러 손가락 손은 손 칸이 따로 생겨 손 전체 (쥐기·펴기) 줄로 한꺼번에 쥐고 펼 수 있습니다(휴머노이드 펜던트).

      스크린샷 누락/docs/robots/custom-04-humanoid-parts.png

      로봇 추가 폼(휴머노이드) — 관절 이름 칸마다 붙은 부위 선택(머리/몸통/왼팔/왼손/…)

    5. 각 조인트의 관절 최소 한계 / 관절 최대 한계를 입력합니다.

      IK가 발산하지 않도록 안전한 범위를 입력합니다. 단위는 라디안.

    6. (휴머노이드, 선택) 이동 토픽과 이동 속도를 입력합니다.

      걷는 휴머노이드(또는 바퀴 달린 휴머노이드)는 보행 컨트롤러가 받는 속도 명령 토픽과 위치 토픽을 입력하면 휴머노이드 펜던트에 이동 칸이 생깁니다. 두 토픽을 모두 채워야 이동 칸이 나타납니다.

      • 이동 속도 명령 토픽 (선택) — 보행 컨트롤러(또는 바퀴 베이스)가 받는 속도 명령 토픽(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), 옆으로도 움직임 체크박스

    7. 읽기 토픽 / 쓰기 타입 / 쓰기 토픽을 설정합니다.

      • 읽기 토픽 — 관절 상태를 발행 중인 토픽을 목록에서 고르거나 직접 입력합니다. 예: /my_robot/joint_states
      • 쓰기 타입 — Topic, Service, Action 중 선택
      • 쓰기 토픽 — 컨트롤러가 구독 중인 명령 토픽을 목록에서 고르거나 직접 입력합니다.
      • 쓰기 토픽 메시지 타입 — 보통 토픽에서 자동으로 정해집니다. 아직 떠 있지 않은 토픽을 입력했거나 쓰기 타입이 Service / Action이면 sensor_msgs/JointState, std_msgs/Float64MultiArray, trajectory_msgs/JointTrajectory, control_msgs/action/GripperCommand 중에서 직접 고릅니다.
    8. (선택) IK 설정 (JSON)을 입력합니다.

      placeholder의 예시 JSON을 참고해 URDF 경로, base/end-effector link, IK solver 옵션 등을 채웁니다. 비워두면 IK가 비활성화됩니다.

      역할이 휴머노이드면 이 칸이 나타나지 않습니다. 휴머노이드는 첫 버전에서 관절 조작만 지원합니다.

    9. 저장 후 상태를 확인합니다.

      custom 로봇은 ON/OFF 토글 대신 토픽 켜짐 / 토픽 꺼짐으로 표시됩니다. 외부 드라이버가 토픽을 발행 중이면 자동으로 토픽 켜짐이 됩니다.

      스크린샷 누락/docs/robots/custom-02-online.png

      Custom 로봇 카드 — 토픽 켜짐 상태

이동 베이스 등록

이동 베이스는 관절 위치가 아니라 속도 명령으로 움직이고, 위치는 **odometry(odom)**로 읽습니다. 다음이 준비되어 있어야 합니다.

  • 베이스 드라이버가 위치를 odom 토픽(nav_msgs/Odometry)으로 발행 중
  • 베이스 드라이버가 속도 명령 토픽(geometry_msgs/Twist, 보통 cmd_vel)을 구독 중
    1. 역할에서 이동 베이스를 고르고 전용 칸을 채웁니다.

      이동 베이스를 고르면 관절 이름·관절 한계·쓰기 타입·보간·IK 설정 칸이 사라지고 다음 칸이 남습니다.

      • 읽기 토픽 — 베이스 위치를 발행하는 odom 토픽
      • 쓰기 토픽 — 속도 명령을 받는 토픽
      • 최대 직진 속도 (m/s) — 기본 0.5. 주행 명령을 이 값으로 자릅니다.
      • 최대 회전 속도 (rad/s) — 기본 1.0 (1 rad/s ≈ 57°/s)
      • 옆으로도 움직임 (메카넘·옴니휠) — 옆으로 이동할 수 있는 베이스면 켭니다. 끄면 차동구동으로 보고 옆 방향 명령은 버립니다.

      베이스 드라이버를 먼저 켜 두면 두 토픽을 목록에서 고를 수 있고, 메시지 타입도 토픽에서 자동으로 정해집니다.

      스크린샷 누락/docs/robots/custom-05-base-form.png

      로봇 추가 폼(이동 베이스) — 읽기/쓰기 토픽, 최대 직진 속도, 최대 회전 속도, 옆으로도 움직임 체크박스

    2. 저장 후 카드 이미지를 눌러 이동 베이스 펜던트로 확인합니다.

      카드가 토픽 켜짐이 되면 이미지를 눌러 하단의 이동 베이스 펜던트를 엽니다. 주행 칸의 앞·뒤 (m/s) 줄에서 + 를 잠깐 누르고 있다가 떼어 위치 (odom) 값이 바뀌는지 확인하세요. 사용법은 이동 베이스 펜던트를 참고하세요.

      스크린샷 누락/docs/robots/pendant-11-base-drive.png

      이동 베이스 펜던트 — 주행 칸: 앞·뒤 (m/s)·회전 (rad/s) 줄(양옆 s/w, d/a 키 표시)과 빨간 정지 버튼

관련 문서