Sport Client — C++ 예제
소스: rbq_sdk/cpp/example/src/rbq_sport_client.cpp
SportClient 명령을 하나씩 로봇에 전송하는 터미널 기반 대화형 애플리케이션입니다.
명령 이름(또는 숫자 ID)을 입력하면 해당 명령이 50 Hz 루프에서 계속 실행됩니다.
동작 방식
프로그램은 단일 루프로 동작합니다:
stdin에서 한 줄 입력 받기 (list, 명령 이름, 또는 명령 ID).- 현재
test_option업데이트. - 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 메서드 |
|---|---|---|
| 0 | damp | Damp() — 고댐핑 비상 정지 |
| 1 | balance_stand | BalanceStand() — 균형 서기 |
| 2 | stop_move | StopMove() — 제자리 정지 |
| 3 | stand_down | StandDown() — 엎드리기 |
| 4 | recovery_stand | RecoveryStand() — 넘어짐 후 일어서기 |
| 5 | move | Move(0.0, 0.0, 0.5) — 제자리 회전 |
| 6 | switch_gait | SwitchGait(0) — 기본 보행으로 전환 |
| 7 | speed_level | SpeedLevel(1) — 속도 레벨 설정 |
| 8 | get_state | GetState() — FSM / 속도 / 프로세스 상태 출력 |
| 9 | recovery_switch | SetAutoRecovery(0) — 자동 복구 비활성화 |
| 10 | body_height | BodyHeight(0.3f) — 몸체 높이 +0.3 m 설정 |
| 11 | stand_up | StandUp() — 서기 자세로 관절 고정 |
| 12 | enter_leftside_gait | LeftSideGait(1) |
| 13 | exit_leftside_gait | LeftSideGait(0) |
| 14 | enter_handstand | HandStand(1) |
| 15 | exit_handstand | HandStand(0) |
| 16 | front_flip | 이 로봇에서는 지원하지 않음 |
| 17 | back_flip | 이 로봇에서는 지원하지 않음 |
| 18 | pose | 이 로봇에서는 지원하지 않음 |
| 19 | euler | 이 로봇에서는 지원하지 않음 |
주요 구현 사항
- SetNoReply(true):
SportClient는SetNoReply(true)로 초기화됩니다. 각 요청을 RPC 응답 대기 없이 DDS 발행 방식으로 전송합니다 — WiFi 환경에서의 고주파 제어에 적합합니다. - 50 Hz 틱:
std::this_thread::sleep_until로 20 ms 루프 주기를 유지합니다. - 에러 카운팅:
res_count변수가 연속 실패를 누적하여 에러 코드와 함께 출력합니다.
