Skip to content

Sport Client — C++ 예제

소스: rbq_sdk/cpp/example/src/rbq_sport_client.cpp

SportClient 명령을 하나씩 로봇에 전송하는 터미널 기반 대화형 애플리케이션입니다.
명령 이름(또는 숫자 ID)을 입력하면 해당 명령이 50 Hz 루프에서 계속 실행됩니다.

동작 방식

프로그램은 단일 루프로 동작합니다:

  1. stdin에서 한 줄 입력 받기 (list, 명령 이름, 또는 명령 ID).
  2. 현재 test_option 업데이트.
  3. 20 ms 틱마다 해당 SportClient 메서드 호출.

별도의 제어 스레드 없이 터미널 읽기가 Enter 키 입력까지 블로킹되는 단순한 순차 테스트 방식입니다.

사전 요구사항

  • RBQ SDK 빌드 및 설치 완료 — C++ SDK 개요 참조.
  • 로봇 스택이 실행 중(시뮬레이션 또는 하드웨어)이며 동일 네트워크에서 접근 가능해야 합니다.

빌드

rbq_sdk/cpp/example/에서:

bash
bash scripts/setup.bash
bash scripts/build.bash

바이너리 위치: bin/rbq_sport_client

실행

bash
./bin/rbq_sport_client <networkInterface>
# 예:
./bin/rbq_sport_client eth0

사용 가능한 명령

프롬프트에서 list를 입력하면 전체 명령 목록이 출력됩니다.

ID이름호출되는 SportClient 메서드
0dampDamp() — 고댐핑 비상 정지
1balance_standBalanceStand() — 균형 서기
2stop_moveStopMove() — 제자리 정지
3stand_downStandDown() — 엎드리기
4recovery_standRecoveryStand() — 넘어짐 후 일어서기
5moveMove(0.0, 0.0, 0.5) — 제자리 회전
6switch_gaitSwitchGait(0) — 기본 보행으로 전환
7speed_levelSpeedLevel(1) — 속도 레벨 설정
8get_stateGetState() — FSM / 속도 / 프로세스 상태 출력
9recovery_switchSetAutoRecovery(0) — 자동 복구 비활성화
10body_heightBodyHeight(0.3f) — 몸체 높이 +0.3 m 설정
11stand_upStandUp() — 서기 자세로 관절 고정
12enter_leftside_gaitLeftSideGait(1)
13exit_leftside_gaitLeftSideGait(0)
14enter_handstandHandStand(1)
15exit_handstandHandStand(0)
16front_flip이 로봇에서는 지원하지 않음
17back_flip이 로봇에서는 지원하지 않음
18pose이 로봇에서는 지원하지 않음
19euler이 로봇에서는 지원하지 않음

주요 구현 사항

  • SetNoReply(true): SportClientSetNoReply(true)로 초기화됩니다. 각 요청을 RPC 응답 대기 없이 DDS 발행 방식으로 전송합니다 — WiFi 환경에서의 고주파 제어에 적합합니다.
  • 50 Hz 틱: std::this_thread::sleep_until로 20 ms 루프 주기를 유지합니다.
  • 에러 카운팅: res_count 변수가 연속 실패를 누적하여 에러 코드와 함께 출력합니다.

관련 문서

This user manual is intended for RBQ users.