개발자 센터
개발자 센터
SDK Overview
1. Middleware
Igris-C는 DDS를 메시지 미들웨어로 사용하며, 주요 데이터 통신 방식으로 Publish/Subscribe 모드와 Request/Response 모드 두 가지 방법을 사용합니다.
Publish /Subscription
수신자는 메시지를 구독하고, 송신자는 구독 목록에 따라 수신자에게 메시지를 전송합니다. 이 방식은 중·고주파수 또는 지속적인 데이터 교환에 주로 사용됩니다.
Request/Response
요청(Request)을 통해 데이터 조회나 동작 수행이 이루어집니다. 이 방식은 저주파수 데이터 교환이나 기능 전환(Function Switching) 시 사용됩니다.
2. Architecture Description
DDS Middleware
IGRIS-C 및 관련 SDK에서는 이 DDS 미들웨어 위에서 커맨드와 상태 정보를 교환함으로써, 내부 모듈과 외부 개발 PC 간에 확장 가능하고 일관된 통신 구조를 제공합니다.
Motion Control (로봇의 움직임을 직접 만들고 유지하는 로우레벨 제어 엔진)
Motion Control 모듈은 IGRIS-C의 로우레벨 운동 제어 핵심 엔진으로, 매우 빠른 내부 제어 루프를 기반으로 동작합니다.
주요 기능
고주기 로우레벨 제어 루프
내부 컨트롤 코드에서 μs~ms 단위로 제어 루프 실행
각 관절/모터에 대한 토크·속도·위치 명령을 고속으로 업데이트
CAN 통신 기반 모터 제어
수신한 제어 명령을 CAN 메시지로 인코딩하여 각 모터로 전달
모터 상태(전류, 속도, 온도, 각도 등)를 실시간으로 수집하여 DDS로 전송
상태 정보 → DDS 미들웨어로 전달
IMU, 관절각, 동적 상태 등 다양한 센서 값은 DDS 토픽으로 퍼블리시되어 개발 PC에서 구독 가능
DDS에서 들어오는 커맨드 처리
PC2 또는 외부 개발 PC에서 발행한 DDS 모션 커맨드를 수신
제어 루프 안에서 즉시 적용하여 모터에 반영
Image Services
Image Services 모듈은 IGRIS-C의 이미지 스트림 처리 및 외부 통신을 담당합니다.
주요 기능
카메라 영상 처리 및 스트리밍
IGRIS-C에 연결된 카메라로부터 영상 프레임 수집
DDS 기반으로 직접 전송
지원 인터페이스: SDK는 DDS(Cyclone DDS), ROS2, Python 세 가지 클라이언트
인터페이스를 제공합니다. 예제는 각각examples/cyclonedds/,examples/ros2/,examples/python/
폴더에 있습니다. (이전 문서의 "ROS2 추후 예정" 안내는 더 이상 유효하지 않습니다 — ROS2 정식 지원.)
3. Robot Namespace (토픽 prefix)
모든 DDS 토픽은 로봇 호기(unit)별 namespace 아래로 해석됩니다. 호기마다 namespace가 다르며,
igris_c_접두사에 로봇별 suffix(호기마다 다름)가 붙는 형태입니다. 예: igris_c_IG01.
SDK에서는
ChannelFactory::Init(domain_id, namespace)로 namespace를 지정합니다.코드에서는 토픽을
rt/...로 작성하고, 실제로는<namespace>/rt/...로 해석됩니다.예: namespace
igris_c_IG01→rt/lowstate는igris_c_IG01/rt/lowstate
// C++
ChannelFactory::Instance()->Init(0, "igris_c_IG01"); // domain 0, 호기 IG01
Subscriber<LowState> sub("rt/lowstate", QosProfile::SensorData()); // → igris_c_IG01/rt/lowstate# Python
channel = igc_sdk.ChannelFactory.Instance()
channel.Init(0, "igris_c_IG01")⚠️ 개발 PC(SDK 클라이언트)와 로봇이 동일한 namespace + domain_id 를 사용해야 통신됩니다. 연결할 호기의 namespace를 확인해 지정하세요.
예제 실행 전 — CYCLONEDDS_URI 환경 변수
DDS 통신은 네트워크 인터페이스 설정이 담긴 CycloneDDS XML 을 사용합니다. 외부 개발 PC에서
SDK 예제를 실행할 때는 이 XML을 CYCLONEDDS_URI 로 지정해야 로봇의 DDS 네트워크에 연결됩니다.
SDK 배포본 루트에 예제용 cyclonedds.xml 이 동봉되어 있습니다.
cyclonedds.xml의<NetworkInterface name="...">를 이 PC에서 로봇과 통신하는 네트워크
인터페이스 이름으로 수정합니다. (인터페이스 목록 확인:ip link/ 또는autodetermine="true"로 자동 선택)예제 실행 전
CYCLONEDDS_URI를 이 파일로 export 합니다.
# SDK 배포본 루트에서 (동봉된 cyclonedds.xml 사용)
export CYCLONEDDS_URI=file://$(pwd)/cyclonedds.xml
export ROS_DOMAIN_ID=0 # ROS2 예제 사용 시 (도메인 일치)
# 이후 예제 실행
./cyclonedds_hand_example 0 igris_c_IG01설정하지 않거나 인터페이스가 맞지 않으면 participant 디스커버리가 실패해 토픽이 보이지 않습니다.
namespace · domain_id는 XML이 아니라 예제 인자(또는ChannelFactory::Init)로 지정합니다.
4. Get SDK
SDK 소개
igris_c_sdk 는 ROBROS에서 개발한 차세대 로봇용 SDK입니다. 이 SDK는 기본 모터 제어 및 고급 동작 제어와 같은 인터페이스를 캡슐화하고, 관련 기능 인터페이스를 제공합니다.
제공되는 SDK와 예제를 참고하시면 로봇 제어를 학습하고 IGRIS-C의 2차 개발(Secondary Development)을 완성할 수 있습니다.
SDK download
URDF
IGRIS-C의 모든 버전용 URDF는 위 Description 저장소에서 다운로드할 수 있습니다.
SDK Overview
1. Middleware
Igris-C는 DDS를 메시지 미들웨어로 사용하며, 주요 데이터 통신 방식으로 Publish/Subscribe 모드와 Request/Response 모드 두 가지 방법을 사용합니다.
Publish /Subscription
수신자는 메시지를 구독하고, 송신자는 구독 목록에 따라 수신자에게 메시지를 전송합니다. 이 방식은 중·고주파수 또는 지속적인 데이터 교환에 주로 사용됩니다.
Request/Response
요청(Request)을 통해 데이터 조회나 동작 수행이 이루어집니다. 이 방식은 저주파수 데이터 교환이나 기능 전환(Function Switching) 시 사용됩니다.
2. Architecture Description
DDS Middleware
IGRIS-C 및 관련 SDK에서는 이 DDS 미들웨어 위에서 커맨드와 상태 정보를 교환함으로써, 내부 모듈과 외부 개발 PC 간에 확장 가능하고 일관된 통신 구조를 제공합니다.
Motion Control (로봇의 움직임을 직접 만들고 유지하는 로우레벨 제어 엔진)
Motion Control 모듈은 IGRIS-C의 로우레벨 운동 제어 핵심 엔진으로, 매우 빠른 내부 제어 루프를 기반으로 동작합니다.
주요 기능
고주기 로우레벨 제어 루프
내부 컨트롤 코드에서 μs~ms 단위로 제어 루프 실행
각 관절/모터에 대한 토크·속도·위치 명령을 고속으로 업데이트
CAN 통신 기반 모터 제어
수신한 제어 명령을 CAN 메시지로 인코딩하여 각 모터로 전달
모터 상태(전류, 속도, 온도, 각도 등)를 실시간으로 수집하여 DDS로 전송
상태 정보 → DDS 미들웨어로 전달
IMU, 관절각, 동적 상태 등 다양한 센서 값은 DDS 토픽으로 퍼블리시되어 개발 PC에서 구독 가능
DDS에서 들어오는 커맨드 처리
PC2 또는 외부 개발 PC에서 발행한 DDS 모션 커맨드를 수신
제어 루프 안에서 즉시 적용하여 모터에 반영
Image Services
Image Services 모듈은 IGRIS-C의 이미지 스트림 처리 및 외부 통신을 담당합니다.
주요 기능
카메라 영상 처리 및 스트리밍
IGRIS-C에 연결된 카메라로부터 영상 프레임 수집
DDS 기반으로 직접 전송
지원 인터페이스: SDK는 DDS(Cyclone DDS), ROS2, Python 세 가지 클라이언트
인터페이스를 제공합니다. 예제는 각각examples/cyclonedds/,examples/ros2/,examples/python/
폴더에 있습니다. (이전 문서의 "ROS2 추후 예정" 안내는 더 이상 유효하지 않습니다 — ROS2 정식 지원.)
3. Robot Namespace (토픽 prefix)
모든 DDS 토픽은 로봇 호기(unit)별 namespace 아래로 해석됩니다. 호기마다 namespace가 다르며,
igris_c_접두사에 로봇별 suffix(호기마다 다름)가 붙는 형태입니다. 예: igris_c_IG01.
SDK에서는
ChannelFactory::Init(domain_id, namespace)로 namespace를 지정합니다.코드에서는 토픽을
rt/...로 작성하고, 실제로는<namespace>/rt/...로 해석됩니다.예: namespace
igris_c_IG01→rt/lowstate는igris_c_IG01/rt/lowstate
// C++
ChannelFactory::Instance()->Init(0, "igris_c_IG01"); // domain 0, 호기 IG01
Subscriber<LowState> sub("rt/lowstate", QosProfile::SensorData()); // → igris_c_IG01/rt/lowstate# Python
channel = igc_sdk.ChannelFactory.Instance()
channel.Init(0, "igris_c_IG01")⚠️ 개발 PC(SDK 클라이언트)와 로봇이 동일한 namespace + domain_id 를 사용해야 통신됩니다. 연결할 호기의 namespace를 확인해 지정하세요.
예제 실행 전 — CYCLONEDDS_URI 환경 변수
DDS 통신은 네트워크 인터페이스 설정이 담긴 CycloneDDS XML 을 사용합니다. 외부 개발 PC에서
SDK 예제를 실행할 때는 이 XML을 CYCLONEDDS_URI 로 지정해야 로봇의 DDS 네트워크에 연결됩니다.
SDK 배포본 루트에 예제용 cyclonedds.xml 이 동봉되어 있습니다.
cyclonedds.xml의<NetworkInterface name="...">를 이 PC에서 로봇과 통신하는 네트워크
인터페이스 이름으로 수정합니다. (인터페이스 목록 확인:ip link/ 또는autodetermine="true"로 자동 선택)예제 실행 전
CYCLONEDDS_URI를 이 파일로 export 합니다.
# SDK 배포본 루트에서 (동봉된 cyclonedds.xml 사용)
export CYCLONEDDS_URI=file://$(pwd)/cyclonedds.xml
export ROS_DOMAIN_ID=0 # ROS2 예제 사용 시 (도메인 일치)
# 이후 예제 실행
./cyclonedds_hand_example 0 igris_c_IG01설정하지 않거나 인터페이스가 맞지 않으면 participant 디스커버리가 실패해 토픽이 보이지 않습니다.
namespace · domain_id는 XML이 아니라 예제 인자(또는ChannelFactory::Init)로 지정합니다.
4. Get SDK
SDK 소개
igris_c_sdk 는 ROBROS에서 개발한 차세대 로봇용 SDK입니다. 이 SDK는 기본 모터 제어 및 고급 동작 제어와 같은 인터페이스를 캡슐화하고, 관련 기능 인터페이스를 제공합니다.
제공되는 SDK와 예제를 참고하시면 로봇 제어를 학습하고 IGRIS-C의 2차 개발(Secondary Development)을 완성할 수 있습니다.
SDK download
URDF
IGRIS-C의 모든 버전용 URDF는 위 Description 저장소에서 다운로드할 수 있습니다.

