RBQ API 개요
RBQ API는 개발자가 RBQ 사족보행 로봇을 제어하고 상호작용할 수 있는 포괄적인 C++ 인터페이스를 제공합니다. 멀티프로세스 환경에서 저수준 실시간 제어와 고수준 행동 명령을 모두 지원하도록 설계되었습니다.
C++ 문서
프로세스 ID (모션 소유권)
RBQ_API
인스턴스를 생성할 때 프로세스 ID를 제공해야 합니다:
cpp
RBQ_API api(20); // 사용자 애플리케이션용 프로세스 ID (20-39 범위)
이 ID는 모션 소유권 메커니즘을 사용하여 안전한 멀티프로세스 제어를 보장하며, 각 관절은 소유자 프로세스에 의해서만 제어될 수 있습니다.
⚠️ 관절 명령을 보내기 전에 항상 setMotionOwner()를 호출하세요.
API 구조 요약
카테고리 | 구성요소 | 설명 |
---|---|---|
제어 | Joint | 저수준 관절 제어: 위치, 토크, 게인 (Kp/Kd) |
startMoveJoint() / stopMoveJoint() | 관절별 조그 모션 시작/중지 | |
lockUnlockJoint() | 수동 조작을 위한 관절 잠금/해제 | |
센서 | IMU | 자세 (쿼터니언/RPY), 자이로, 가속도 접근 |
getBatteryVoltage() | 배터리 전압 읽기 (내부 전용) | |
게임패드 | Gamepad | Logitech F710 게임패드 입력 접근: 조그, 트리거, 버튼 |
고수준 모션 | motionStaticReady() / motionDynamicWalk() 등 | 미리 정의된 로봇 행동 |
관절 제어 API (RBQ_API::Joint
)
센서 값 읽기
함수 | 설명 |
---|---|
getPos() | 관절 위치 읽기 (rad) |
getVel() | 관절 속도 읽기 (rad/s) |
getTorque() | 관절 토크 읽기 (Nm) |
getGainKp() / getGainKd() | 현재 Kp/Kd 게인 읽기 |
명령 전송
함수 | 설명 |
---|---|
setMotionOwner() | 관절 제어권 획득 |
setPosRef() | 관절 위치 목표 설정 |
setTorqueRef() | 토크 목표 설정 (Nm) |
setGainKp() / setGainKd() | 양자화를 통한 제어 게인 설정 |
✅ 각 관절은 제어 명령을 받기 위해 소유자 프로세스가 있어야 합니다.
IMU 센서 API (RBQ_API::IMU
)
로봇의 자세와 운동 상태에 대한 접근을 제공합니다.
함수 | 출력 |
---|---|
getQuaternion() | Eigen 쿼터니언으로 자세 (w, x, y, z) |
getRPY() | 롤, 피치, 요 (ZYX 오일러 각도, 라디안) |
getGyro() | 각속도 (rad/s) (X, Y, Z) |
getAcc() | 선형 가속도 (m/s²) (X, Y, Z) |
게임패드 API (RBQ_API::Gamepad
)
원격 조작을 위한 Logitech F710 (X 모드) 지원.
타입 | 함수 | 설명 |
---|---|---|
조이스틱 | getLeftJogX/Y() , getRightJogX/Y() | 범위: [-1.0, 1.0] |
트리거 | getLeftTrigger() , getRightTrigger() | 범위: [0.0, 1.0] |
버튼 | getButtonState(Button::X) | 눌렸을 때 true 반환 |
내장 모션 프로그램
미리 정의된 로봇 행동을 쉽게 트리거할 수 있습니다:
함수 | 설명 |
---|---|
motionStaticReady() | 준비 자세로 이동 |
motionStaticGround() | 바닥에 눕는 자세 |
motionDynamicWalk() | 동적 보행 시작 |
motionDynamicRun() | 동적 달리기 시작 |
motionDynamicAim() | 조작/비전을 위한 조준 자세 |
motionDynamicStairs() | 계단 오르기 모션 |
motionDynamicHealthCheck() | 진단 모션 |