개발자 센터
개발자 센터
릴리즈 노트
이 페이지는 IGRIS-C 소프트웨어 릴리즈마다 사용 방법에 영향을 주는 변경만 추려 정리합니다. 릴리즈마다 맨 위에 새 항목을 추가합니다. 상세 사양은 각 장(SDK Overview, ControlMode, Hand, Camera, Web Viewer)을 참고하십시오.
v2.1.1 (2026-10)
꼭 확인하세요 — 호환성
함께 쓰는 공개 저장소 버전: igris_c_sdk_public v2.1.1, igris_c_description_public v2.1.1, igris_c_masterarm_public v2.0.6.
2.1.0 SDK 클라이언트는 2.1.1 로봇과 통신할 수 없습니다. 토픽 이름·메시지 타입·서비스 이름이 모두 바뀌었고, 불일치 시 에러 없이 조용히 서로를 발견하지 못합니다(0 FPS, 서비스 타임아웃). SDK 배포본을 2.1.1로 교체하고 예제·사용자 코드를 다시 빌드하십시오.
모바일 컨트롤 앱은 v2.0.6을 사용하십시오. 2.1.1부터 IMU 롤·피치·요가 도(°)가 아니라 라디안 단위로 전달됩니다.
마스터암(텔레옵) 노드와 Fixer/Recorder도 2.1.1 대응 버전으로 업데이트해야 하며, 로봇의 전송 모드·토픽 레이아웃(아래)과 맞춰야 합니다. Recorder는
ros전송 모드에서는 사용할 수 없습니다.
통신 방식(전송 모드) 선택
로봇은 외부 통신 방식(전송 모드)을 하나만 제공합니다. 설정
igris_c.network.transport값 세 가지:cyclonedds_native(출하 기본) /cyclonedds_ros_compatible/ros. 2.1.0과 달리 DDS와 ROS 2를 동시에 제공하지 않습니다.토픽 이름에서
rt/가 빠졌습니다. 코드에서는lowstate처럼 접두어 없는 이름을 쓰고, 실제 토픽 이름은 전송 모드가 정합니다(native<ns>/lowstate, ros_compatiblert/<ns>/lowstate, ros/<ns>/lowstate).멀티캐스트가 막힌 망(Wi-Fi 로봇 + 유선 PC)용 설정 파일이 SDK에 포함되어 있습니다:
cyclonedds/cyclonedds_peers.xml,ros2/fastdds_peers.xml.
SDK 데이터 계약
토픽 레이아웃은 클라이언트에서
ChannelFactory::Init(domain, ns, config, TopicNaming)의 4번째 인자 또는 예제 플래그--dds-topic-naming native|ros_compatible로 로봇의 전송 모드에 맞춥니다.BMS → PDU 용어 변경:
InitBms→InitPdu,rt/service/bms_init→service/pdu_init,rt/bmsstate→pdustate,BmsState→PduState.battery는 전압이 아니라 잔량 %입니다.자체 타입 대신 표준 ROS 메시지를 씁니다:
std_msgs/Header(seq없음),sensor_msgs/Imu(rpy필드 삭제, orientation 쿼터니언에서 계산),geometry_msgs/TwistStamped(cmd_vel),sensor_msgs/Joy(조이스틱, 기존JoyState대체),sensor_msgs/Image·CompressedImage(카메라).enum이
uint8상수로 바뀌었습니다(PDU_INIT,TORQUE_ON,CONTROL_MODE_CMD_*,KINEMATIC_MODE_PJS). Python은igc_sdk.PDU_INIT처럼 모듈 상수를 쓰며, 메시지 클래스 이름에는LowCmd_()처럼_접미사가 붙습니다.핸드
HandCmd.motor_cmd/HandState.motor_state가 고정 12칸 배열입니다(push_back불가, 인덱스로 채움).HandState.imu_state는 삭제되었습니다.handstate는 핸드 노드가 아니라 bridge가lowstate와 비슷한 주기(약 300 Hz, 2.1.0은 10 Hz)로 발행합니다. 구독 버퍼·로깅 용량을 확인하십시오.응답 토픽(
service/<이름>/response)을 직접 구독할 때는 서비스별 타입(TorqueCmd_Response_등)을 써야 하며, 공용ServiceResponse_로 구독하면 아무것도 수신되지 않습니다.IgrisC_ClientAPI를 쓰면 신경 쓸 필요가 없습니다.MetaQuest 전용 메시지·예제는 삭제되었습니다.
제어 동작 변경
제어 모드
TORQUE_OFF_MODE의 이름이PASSIVE_MODE로 바뀌었습니다(앱·웹 표시는PASSIVE).DAMPING 모드 추가: 보행 모드에서 낙상이 감지되면 컨트롤러가 자동으로 모든 관절을 댐핑만 남기는 안전 정지 모드로 들어갑니다. 상태 표시는
STOP. 낙상 기준은 골반 기울기 0.8 rad(약 46°) 초과, 또는 0.4 rad(약 23°) 초과이면서 기울어지는 속도 1.57 rad/s 초과입니다. 호이스트에 매단 상태에서도 이 기준을 넘으면 전환되어 로봇이 늘어지며, 이는 정상 동작입니다. DAMPING에서 바로 보행 모드로 다시 들어가는 것은 막혀 있지 않으므로, 로봇을 안전한 자세로 둔 뒤 토크 OFF(PASSIVE) 또는JOINT_POSITION_HOLD→ HOME 프리셋을 거쳐 제어 모드에 다시 진입하십시오.외부 핸드 명령(
handcmd)은 LOW_LEVEL_MODE·LOW_LEVEL_WALK_MODE에서만 반영됩니다. HIGH_LEVEL 계열에서는 프리셋의 손 동작을 따르며, 그 밖의 모드와 마찬가지로handcmd는 무시됩니다.일시정지(Motion Stop) 중에도
JOINT_POSITION_HOLD명령이 허용되며, 토크 OFF에 따른 PASSIVE 전환과 낙상 감지에 따른 DAMPING 자동 전환도 막히지 않습니다. 일시정지 중 제어 상태는STOP으로 표시됩니다(PASSIVE에서는IDLE).Web Viewer Config에 있던 보행 속도 스케일 항목(
twist_teleop.scale)이 사라지고 보행 정책이 속도 한계를 정합니다. 같은 조이스틱 입력에 전진 속도가 커질 수 있으니(WALK: 반 스틱 ≈0.5 m/s) 처음에는 작은 입력으로 확인하십시오. WALK 진입 시 팔 느린 시작(슬로스타트)도 없어졌습니다. 보행 방향 보정 항목(twist_teleop.heading_bias)도 사용자 설정에서 사라졌으며 기존 값은 이전되지 않습니다.토크 ON을 이미 켜진 상태에서 다시 요청하면 성공으로 응답하고 아무 동작도 하지 않습니다. 2.1.0에서는 재요청 시 토크 ON 절차를 처음부터 다시 수행해 모든 모터의 토크가 잠시 풀렸다가(로봇이 순간적으로 늘어짐) 다시 걸렸습니다.
카메라
영상 토픽이 표준 타입으로 바뀌었습니다: 컬러·스테레오·손 카메라는
sensor/<name>/compressed(CompressedImage, JPEG), 깊이는sensor/d435_depth(Image, 16UC1), IR은sensor/d435_ir_left|right, D435i IMU는sensor/d435_imu(sensor_msgs/Imu).카메라 설정 변경용 DDS 서비스(
*_config_request)는 삭제되었습니다. 설정은 Web Viewer › Config › camera config(camera.yaml)에서 바꾸고 카메라 서비스를 재시작합니다.Jetson 중계(route) 구성이 사라지고 카메라는 항상 로봇 PC에서 직접 송출합니다. DDS 도메인 1은 더 이상 예약되지 않습니다.
기본값이 바뀌었습니다:
d435.initial_reset은 false(기동 5~8초 단축), 손 카메라 fps는 20입니다.
하드웨어 변형 지원
손목 v2 / 발목 v2 변형이 추가되었습니다. 로봇의 변형은 설정
description.common.wrist_version/ankle_version(Web Viewer › Config)으로 지정하며 실제 하드웨어와 반드시 일치해야 합니다. 두 키는 필수이며, 없으면 로봇 서비스가 기동하지 않습니다.손목 v2의 가동 범위가 다릅니다(기구 사양 기준 roll L −80/+40°, R −40/+80°, pitch ±25°). Specs (DoF) 페이지 참조. 발목 v2는 보강형 발로 가동 범위는 v1과 같습니다.
1-DoF 그리퍼의 URDF/시뮬레이션 모델이 실제 장치와 같도록 q=0=열림(OPEN) 기준으로 맞춰졌습니다. 그리퍼 명령(
handcmd) 값의 의미는 바뀌지 않았습니다.
문서
Web Viewer 매뉴얼이 개발자센터에 추가되었습니다. 웹 뷰어(
http://<로봇 IP>:18080) 자체는 2.1.0부터 제공되며, 2.1.1에서는 Config 탭에 camera config 편집이 추가되었습니다. 실시간 상태·3D 자세·관절/핸드/IMU 값, 데이터 녹화와 다운로드, 설정 편집, 서비스 재시작의 사용법을 Web Viewer 장에서 설명합니다.
그 밖의 변경
모터 오류 코드 값·의미, LED 인디케이터, 모터 ID 순서, 핸드 모터 ID/통신 속도, 앱 TCP 포트(9000), BLE/AP 연결 절차는 바뀌지 않았습니다.
릴리즈 노트
이 페이지는 IGRIS-C 소프트웨어 릴리즈마다 사용 방법에 영향을 주는 변경만 추려 정리합니다. 릴리즈마다 맨 위에 새 항목을 추가합니다. 상세 사양은 각 장(SDK Overview, ControlMode, Hand, Camera, Web Viewer)을 참고하십시오.
v2.1.1 (2026-10)
꼭 확인하세요 — 호환성
함께 쓰는 공개 저장소 버전: igris_c_sdk_public v2.1.1, igris_c_description_public v2.1.1, igris_c_masterarm_public v2.0.6.
2.1.0 SDK 클라이언트는 2.1.1 로봇과 통신할 수 없습니다. 토픽 이름·메시지 타입·서비스 이름이 모두 바뀌었고, 불일치 시 에러 없이 조용히 서로를 발견하지 못합니다(0 FPS, 서비스 타임아웃). SDK 배포본을 2.1.1로 교체하고 예제·사용자 코드를 다시 빌드하십시오.
모바일 컨트롤 앱은 v2.0.6을 사용하십시오. 2.1.1부터 IMU 롤·피치·요가 도(°)가 아니라 라디안 단위로 전달됩니다.
마스터암(텔레옵) 노드와 Fixer/Recorder도 2.1.1 대응 버전으로 업데이트해야 하며, 로봇의 전송 모드·토픽 레이아웃(아래)과 맞춰야 합니다. Recorder는
ros전송 모드에서는 사용할 수 없습니다.
통신 방식(전송 모드) 선택
로봇은 외부 통신 방식(전송 모드)을 하나만 제공합니다. 설정
igris_c.network.transport값 세 가지:cyclonedds_native(출하 기본) /cyclonedds_ros_compatible/ros. 2.1.0과 달리 DDS와 ROS 2를 동시에 제공하지 않습니다.토픽 이름에서
rt/가 빠졌습니다. 코드에서는lowstate처럼 접두어 없는 이름을 쓰고, 실제 토픽 이름은 전송 모드가 정합니다(native<ns>/lowstate, ros_compatiblert/<ns>/lowstate, ros/<ns>/lowstate).멀티캐스트가 막힌 망(Wi-Fi 로봇 + 유선 PC)용 설정 파일이 SDK에 포함되어 있습니다:
cyclonedds/cyclonedds_peers.xml,ros2/fastdds_peers.xml.
SDK 데이터 계약
토픽 레이아웃은 클라이언트에서
ChannelFactory::Init(domain, ns, config, TopicNaming)의 4번째 인자 또는 예제 플래그--dds-topic-naming native|ros_compatible로 로봇의 전송 모드에 맞춥니다.BMS → PDU 용어 변경:
InitBms→InitPdu,rt/service/bms_init→service/pdu_init,rt/bmsstate→pdustate,BmsState→PduState.battery는 전압이 아니라 잔량 %입니다.자체 타입 대신 표준 ROS 메시지를 씁니다:
std_msgs/Header(seq없음),sensor_msgs/Imu(rpy필드 삭제, orientation 쿼터니언에서 계산),geometry_msgs/TwistStamped(cmd_vel),sensor_msgs/Joy(조이스틱, 기존JoyState대체),sensor_msgs/Image·CompressedImage(카메라).enum이
uint8상수로 바뀌었습니다(PDU_INIT,TORQUE_ON,CONTROL_MODE_CMD_*,KINEMATIC_MODE_PJS). Python은igc_sdk.PDU_INIT처럼 모듈 상수를 쓰며, 메시지 클래스 이름에는LowCmd_()처럼_접미사가 붙습니다.핸드
HandCmd.motor_cmd/HandState.motor_state가 고정 12칸 배열입니다(push_back불가, 인덱스로 채움).HandState.imu_state는 삭제되었습니다.handstate는 핸드 노드가 아니라 bridge가lowstate와 비슷한 주기(약 300 Hz, 2.1.0은 10 Hz)로 발행합니다. 구독 버퍼·로깅 용량을 확인하십시오.응답 토픽(
service/<이름>/response)을 직접 구독할 때는 서비스별 타입(TorqueCmd_Response_등)을 써야 하며, 공용ServiceResponse_로 구독하면 아무것도 수신되지 않습니다.IgrisC_ClientAPI를 쓰면 신경 쓸 필요가 없습니다.MetaQuest 전용 메시지·예제는 삭제되었습니다.
제어 동작 변경
제어 모드
TORQUE_OFF_MODE의 이름이PASSIVE_MODE로 바뀌었습니다(앱·웹 표시는PASSIVE).DAMPING 모드 추가: 보행 모드에서 낙상이 감지되면 컨트롤러가 자동으로 모든 관절을 댐핑만 남기는 안전 정지 모드로 들어갑니다. 상태 표시는
STOP. 낙상 기준은 골반 기울기 0.8 rad(약 46°) 초과, 또는 0.4 rad(약 23°) 초과이면서 기울어지는 속도 1.57 rad/s 초과입니다. 호이스트에 매단 상태에서도 이 기준을 넘으면 전환되어 로봇이 늘어지며, 이는 정상 동작입니다. DAMPING에서 바로 보행 모드로 다시 들어가는 것은 막혀 있지 않으므로, 로봇을 안전한 자세로 둔 뒤 토크 OFF(PASSIVE) 또는JOINT_POSITION_HOLD→ HOME 프리셋을 거쳐 제어 모드에 다시 진입하십시오.외부 핸드 명령(
handcmd)은 LOW_LEVEL_MODE·LOW_LEVEL_WALK_MODE에서만 반영됩니다. HIGH_LEVEL 계열에서는 프리셋의 손 동작을 따르며, 그 밖의 모드와 마찬가지로handcmd는 무시됩니다.일시정지(Motion Stop) 중에도
JOINT_POSITION_HOLD명령이 허용되며, 토크 OFF에 따른 PASSIVE 전환과 낙상 감지에 따른 DAMPING 자동 전환도 막히지 않습니다. 일시정지 중 제어 상태는STOP으로 표시됩니다(PASSIVE에서는IDLE).Web Viewer Config에 있던 보행 속도 스케일 항목(
twist_teleop.scale)이 사라지고 보행 정책이 속도 한계를 정합니다. 같은 조이스틱 입력에 전진 속도가 커질 수 있으니(WALK: 반 스틱 ≈0.5 m/s) 처음에는 작은 입력으로 확인하십시오. WALK 진입 시 팔 느린 시작(슬로스타트)도 없어졌습니다. 보행 방향 보정 항목(twist_teleop.heading_bias)도 사용자 설정에서 사라졌으며 기존 값은 이전되지 않습니다.토크 ON을 이미 켜진 상태에서 다시 요청하면 성공으로 응답하고 아무 동작도 하지 않습니다. 2.1.0에서는 재요청 시 토크 ON 절차를 처음부터 다시 수행해 모든 모터의 토크가 잠시 풀렸다가(로봇이 순간적으로 늘어짐) 다시 걸렸습니다.
카메라
영상 토픽이 표준 타입으로 바뀌었습니다: 컬러·스테레오·손 카메라는
sensor/<name>/compressed(CompressedImage, JPEG), 깊이는sensor/d435_depth(Image, 16UC1), IR은sensor/d435_ir_left|right, D435i IMU는sensor/d435_imu(sensor_msgs/Imu).카메라 설정 변경용 DDS 서비스(
*_config_request)는 삭제되었습니다. 설정은 Web Viewer › Config › camera config(camera.yaml)에서 바꾸고 카메라 서비스를 재시작합니다.Jetson 중계(route) 구성이 사라지고 카메라는 항상 로봇 PC에서 직접 송출합니다. DDS 도메인 1은 더 이상 예약되지 않습니다.
기본값이 바뀌었습니다:
d435.initial_reset은 false(기동 5~8초 단축), 손 카메라 fps는 20입니다.
하드웨어 변형 지원
손목 v2 / 발목 v2 변형이 추가되었습니다. 로봇의 변형은 설정
description.common.wrist_version/ankle_version(Web Viewer › Config)으로 지정하며 실제 하드웨어와 반드시 일치해야 합니다. 두 키는 필수이며, 없으면 로봇 서비스가 기동하지 않습니다.손목 v2의 가동 범위가 다릅니다(기구 사양 기준 roll L −80/+40°, R −40/+80°, pitch ±25°). Specs (DoF) 페이지 참조. 발목 v2는 보강형 발로 가동 범위는 v1과 같습니다.
1-DoF 그리퍼의 URDF/시뮬레이션 모델이 실제 장치와 같도록 q=0=열림(OPEN) 기준으로 맞춰졌습니다. 그리퍼 명령(
handcmd) 값의 의미는 바뀌지 않았습니다.
문서
Web Viewer 매뉴얼이 개발자센터에 추가되었습니다. 웹 뷰어(
http://<로봇 IP>:18080) 자체는 2.1.0부터 제공되며, 2.1.1에서는 Config 탭에 camera config 편집이 추가되었습니다. 실시간 상태·3D 자세·관절/핸드/IMU 값, 데이터 녹화와 다운로드, 설정 편집, 서비스 재시작의 사용법을 Web Viewer 장에서 설명합니다.
그 밖의 변경
모터 오류 코드 값·의미, LED 인디케이터, 모터 ID 순서, 핸드 모터 ID/통신 속도, 앱 TCP 포트(9000), BLE/AP 연결 절차는 바뀌지 않았습니다.

