3.2 ControllerInfo 정보 클래스
개요
ControllerInfo 는 컨트롤러의 기본 상태 조회와 일부 기본 제어를 담당합니다. 버전, 컨트롤러 상태, 로봇 상태, 서보 상태, 소프트 모드, 사용자 조작 모드, 상위 PC keepalive 동작을 포함합니다.
사용 전제
ControllerInfo 의 모든 인터페이스는 먼저 Arm::Connect() 가 성공해야 사용할 수 있습니다. 인터페이스 모듈이 바인딩되지 않은 경우:
- 조회 인터페이스는 빈 문자열 또는
UNKNOWN을 반환하고 상태 코드는OTHER_ERR입니다. - 제어 인터페이스는 일반적으로
OTHER_ERR를 반환합니다. AcquireAccess()/ReleaseAccess()는 상태 코드가 없으며, 연결되지 않은 경우 바로 반환합니다.
3.2.1 조회 인터페이스
3.2.1.1 로봇 컨트롤러 버전 가져오기
cpp
GetControllerVersion() -> std::pair<std::string, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇 컨트롤러의 현재 버전을 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | std::string: 컨트롤러 버전 STATUS_CODE: 함수 실행 결과 |
| 비고 | Arm::Connect() 내부에서도 이 버전을 읽어 arm.version 에 채웁니다. |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.1.2 현재 컨트롤러 실행 상태 가져오기
cpp
GetCtrlStatus() -> std::pair<CtrlStatusEnum, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇 컨트롤러의 현재 실행 상태를 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | CtrlStatusEnum: 컨트롤러 실행 상태 STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.1.3 로봇 실행 상태 가져오기
cpp
GetRobotStatus() -> std::pair<RobotStatusEnum, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇의 실행 상태를 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | RobotStatusEnum: 로봇 실행 상태 STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.1.4 현재 서보 컨트롤러 상태 가져오기
cpp
GetServoStatus() -> std::pair<ServoStatusEnum, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇 서보 컨트롤러의 현재 상태를 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | ServoStatusEnum: 서보 컨트롤러 상태 STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.1.5 현재 로봇 모델 가져오기
cpp
GetArmModelInfo() -> std::pair<std::string, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | 현재 로봇 모델 정보를 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | std::string: "GBT-C5A" 같은 로봇 모델 STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.1.6 로봇의 현재 소프트 상태 가져오기
cpp
GetSoftMode() -> std::pair<SoftModeEnum, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇의 현재 소프트 상태(PC 모드에서 수동/자동 상태)를 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | SoftModeEnum: 소프트 상태 STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.1.7 로봇 조작 모드 가져오기
cpp
GetOpMode() -> std::pair<OpModeEnum, STATUS_CODE>| 항목 | 설명 |
|---|---|
| 설명 | 현재 로봇 조작 모드(로봇/가상 컨트롤러의 수동, 자동 등 조작 권한 상태)를 가져옵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | OpModeEnum: 조작 모드 STATUS_CODE: 함수 실행 결과 |
| 비고 | 컨트롤러가 유효한 모드를 반환하지 않으면 OpModeEnum::UNKNOWN 으로 fallback 됩니다. |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.2 제어 인터페이스
3.2.2.1 로봇 서보 전원 켜기
cpp
ServoOn() -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇의 서보 전원을 켭니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.2.2 로봇 서보 전원 끄기
cpp
ServoOff() -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇의 서보 전원을 끕니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.2.3 로봇 서보 재설정
cpp
ServoReset() -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇 서보를 재설정합니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.2.4 로봇의 현재 소프트 상태 설정
cpp
SetSoftMode(SoftModeEnum mode) -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | 로봇의 현재 소프트 상태(PC 모드에서 수동/자동 상태)를 설정합니다. |
| 요청 파라미터 | mode : SoftModeEnum 소프트 상태 값 |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.2.5 로봇 조작 모드 설정
cpp
SetOpMode(OpModeEnum mode) -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | 로봇 조작 모드를 설정합니다. 가상 로봇/시뮬레이션 컨트롤러만 지원합니다. |
| 요청 파라미터 | mode : OpModeEnum 대상 조작 모드( UNKNOWN 불가) |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 비고 | OpModeEnum::UNKNOWN 이 전달되면 인터페이스는 UNSUPPORTED_PARAMETER 를 반환합니다. |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): 시뮬레이션만 지원; 산업용(Bronze): 시뮬레이션만 지원 |
3.2.2.6 로봇 LED 표시등 설정
cpp
SwitchLedLight(bool mode) -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇의 LED 표시등 스위치를 제어합니다. |
| 요청 파라미터 | mode : bool 표시등 상태(true 켜기, false 끄기) |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.1.3+ 산업용(Bronze): 지원하지 않음 |
3.2.2.7 로봇 비상 정지
cpp
Estop() -> STATUS_CODE| 항목 | 설명 |
|---|---|
| 설명 | Agilebot 로봇을 비상 정지시킵니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | STATUS_CODE: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
3.2.3 제어 권한 인터페이스
3.2.3.1 상위 PC 조작 권한 획득
cpp
AcquireAccess()| 항목 | 설명 |
|---|---|
| 설명 | 상위 PC가 조작 권한을 획득하여 로봇을 PC 모드로 전환합니다. SDK 는 컨트롤러에 주기적으로 keepalive 를 전송합니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | 반환 없음 |
| 동작 | - 연결되지 않은 경우 바로 반환 - 중복 등록을 피하기 위해 매번 호출 전에 ReleaseAccess() 를 먼저 실행- SDK 는 Arm 전용 네트워크 스레드에 2000ms keepalive 타이머 작업을 등록 |
| 비고 | 산업용 로봇만 PC 모드를 유지하기 위해 이 인터페이스를 호출해야 합니다. 협동 로봇 및 P7A 는 사용할 필요가 없습니다. |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): 지원하지 않음 산업용(Bronze): v7.5.0.0+ |
3.2.3.2 상위 PC 조작 권한 반환
cpp
ReleaseAccess()| 항목 | 설명 |
|---|---|
| 설명 | 상위 PC가 조작 권한을 반환하여 로봇을 PC 모드에서 벗어나게 하고, AcquireAccess() 가 등록한 keepalive 타이머 작업을 중지합니다. |
| 요청 파라미터 | 파라미터 없음 |
| 반환값 | 반환 없음 |
| 동작 | - 현재 세션의 keepalive 타이머 작업 취소 - Arm::Disconnect() , ControllerInfo::Reset() , 소멸 절차에서도 이를 능동적으로 호출 |
| 비고 | 산업용 로봇만 이 인터페이스를 호출해야 합니다. |
| 호환 로봇 소프트웨어 버전 | 협동(Copper): 지원하지 않음 산업용(Bronze): v7.5.0.0+ |
일반 반환값 설명
| 시나리오 | 반환 |
|---|---|
| 연결되지 않은 상태에서 조회 인터페이스 호출 | OTHER_ERR , 동시에 데이터 값은 빈 문자열 또는 UNKNOWN 으로 fallback |
| 연결되지 않은 상태에서 제어 인터페이스 호출 | OTHER_ERR |
연결되지 않은 상태에서 AcquireAccess / ReleaseAccess 호출 | 바로 반환하며 추가 오류 코드는 없음 |
호출 권장 사항
- 연결 후 먼저
GetControllerVersion(),GetArmModelInfo()로 장치를 식별합니다. - 모드를 쓰기 전에 먼저 읽어 무작정 쓰는 것을 피합니다.
AcquireAccess()는 PUMA / 산업용 로봇의 PC 모드 keepalive 시나리오에서 자주 사용되며, 협동 로봇은 일반적으로 필요하지 않습니다.
최소 호출 예제
cpp
#include <iostream> // 조회 결과를 출력하기 위한 표준 출력 스트림 포함
#include "arm_api.h" // Arm 메인 진입점을 포함하며, 연결 후 arm.controllerInfo 로 정보 인터페이스에 접근
#include "status_code.h" // SDK 호출 결과를 확인하기 위한 STATUS_CODE 포함
int main() // 예제 프로그램 진입점
{ // 예제 main 함수 시작
Arm arm; // 로봇 세션 객체 생성
STATUS_CODE connectRet = arm.Connect("192.168.110.2", ""); // 컨트롤러에 연결, 티치 펜던트 주소를 비워 기본 규칙 사용
if (connectRet != STATUS_CODE::OK) { // 연결 실패 여부 확인
return 1; // 연결 실패 시 바로 종료
} // 연결 결과 판단 종료
auto [version, versionRet] = arm.controllerInfo.GetControllerVersion(); // 컨트롤러 버전 문자열 조회
auto [servoStatus, servoRet] = arm.controllerInfo.GetServoStatus(); // 현재 서보 상태 조회
auto [softMode, softModeRet] = arm.controllerInfo.GetSoftMode(); // 현재 소프트 모드 조회
auto [opMode, opModeRet] = arm.controllerInfo.GetOpMode(); // 현재 조작 모드 조회
if (versionRet != STATUS_CODE::OK || // 컨트롤러 버전 조회 실패 여부 확인
servoRet != STATUS_CODE::OK || // 서보 상태 조회 실패 여부 확인
softModeRet != STATUS_CODE::OK || // 소프트 모드 조회 실패 여부 확인
opModeRet != STATUS_CODE::OK) { // 조작 모드 조회 실패 여부 확인
return 1; // 조회 중 하나라도 실패하면 오류 코드 반환
} // 조회 결과 판단 종료
std::cout << "version=" << version << "\n"; // 컨트롤러 버전 출력
std::cout << "servo_status=" << static_cast<int>(servoStatus) << "\n"; // 서보 상태 enum 값 출력
std::cout << "soft_mode=" << static_cast<int>(softMode) << "\n"; // 소프트 모드 enum 값 출력
std::cout << "op_mode=" << static_cast<int>(opMode) << "\n"; // 조작 모드 enum 값 출력
arm.controllerInfo.AcquireAccess(); // 산업용 로봇 PC 모드 시나리오에서 조작 권한을 얻고 keepalive 시작
arm.controllerInfo.ReleaseAccess(); // 예제 종료 전에 조작 권한을 해제하고 keepalive 중지
return 0; // 예제 정상 종료
} // 예제 main 함수 종료시나리오 예제
아래 여러 코드 조각은 "읽기 전용 상태, 모드 설정, 동작 제어, PC 권한" 관점에서 이 페이지의 API 를 교차로 다룹니다. 코드 조각은 최소 호출 예제에서 이미 연결에 성공한 arm 객체를 이어받는다고 가정합니다. 로봇 상태를 변경하는 호출은 주석으로 유지했으며, 현장을 확인한 뒤 실행하십시오.
버전, 모델 및 상태 읽기
cpp
auto [version, versionRet] = arm.controllerInfo.GetControllerVersion(); // 컨트롤러 버전 읽기
auto [model, modelRet] = arm.controllerInfo.GetArmModelInfo(); // 로봇 모델 읽기
auto [ctrlStatus, ctrlRet] = arm.controllerInfo.GetCtrlStatus(); // 컨트롤러 실행 상태 읽기
auto [robotStatus, robotRet] = arm.controllerInfo.GetRobotStatus(); // 로봇 실행 상태 읽기
auto [servoStatus, servoRet] = arm.controllerInfo.GetServoStatus(); // 서보 상태 읽기
if (versionRet == STATUS_CODE::OK && modelRet == STATUS_CODE::OK && ctrlRet == STATUS_CODE::OK && robotRet == STATUS_CODE::OK && servoRet == STATUS_CODE::OK) { // 기본 상태 조회 성공 여부 확인
std::cout << "version=" << version << " model=" << model << "\n"; // 버전과 모델 출력
std::cout << "ctrl=" << static_cast<int>(ctrlStatus) << " robot=" << static_cast<int>(robotStatus) << " servo=" << static_cast<int>(servoStatus) << "\n"; // 세 가지 실행 상태 출력
} // 기본 상태 조회 판단 종료모드 읽기 및 설정
cpp
auto [softMode, softRet] = arm.controllerInfo.GetSoftMode(); // 현재 소프트 모드 읽기
auto [opMode, opRet] = arm.controllerInfo.GetOpMode(); // 현재 조작 모드 읽기
if (softRet == STATUS_CODE::OK && opRet == STATUS_CODE::OK) { // 모드 읽기 성공 여부 확인
std::cout << "soft=" << static_cast<int>(softMode) << " op=" << static_cast<int>(opMode) << "\n"; // 모드 상태 출력
} // 모드 읽기 판단 종료
// STATUS_CODE setSoftRet = arm.controllerInfo.SetSoftMode(softMode); // 소프트 모드 설정은 컨트롤러 모드를 변경하므로 확인 후 실행
// STATUS_CODE setOpRet = arm.controllerInfo.SetOpMode(opMode); // 조작 모드 설정은 컨트롤러 모드를 변경하므로 확인 후 실행서보, LED 및 비상 정지 동작
cpp
// STATUS_CODE servoOnRet = arm.controllerInfo.ServoOn(); // 서보 전원 켜기 요청은 로봇 상태를 변경하므로 안전 확인 후 실행
// STATUS_CODE servoOffRet = arm.controllerInfo.ServoOff(); // 서보 전원 끄기 요청은 로봇 상태를 변경하므로 현장 확인 후 실행
// STATUS_CODE resetRet = arm.controllerInfo.ServoReset(); // 서보 리셋 요청은 로봇 상태를 변경하므로 현장 확인 후 실행
// STATUS_CODE ledRet = arm.controllerInfo.SwitchLedLight(true); // LED 상태 전환은 컨트롤러 출력을 변경하므로 확인 후 실행
// STATUS_CODE estopRet = arm.controllerInfo.Estop(); // 비상 정지는 즉시 안전 상태를 변경하므로 명확히 필요한 경우에만 실행산업용 로봇 PC 권한
cpp
// arm.controllerInfo.AcquireAccess(); // 산업용 로봇 PC 모드에서 조작 권한을 획득하고 keepalive 시작
// arm.controllerInfo.ReleaseAccess(); // 산업용 로봇 PC 모드에서 조작 권한을 해제하고 keepalive 중지예제 코드
cpp
#include <iostream>
#include "arm_api.h"
#include "status_code.h"
#include "query_version_and_model/run.h"
/**
* 查询版本与型号门面。
* @return 0 表示成功,否则返回 1。
*/
int RunInfoGetControllerVersionQueryVersionAndModel(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_info_basic] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_info_basic] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 获取控制器版本和机械臂型号。
// [EN] Get the controller version and robot model.
std::pair<std::string, STATUS_CODE> versionPair = arm.controllerInfo.GetControllerVersion();
std::pair<std::string, STATUS_CODE> modelPair = arm.controllerInfo.GetArmModelInfo();
std::cout << "[cpp17_info_basic] GetControllerVersion 状态码 / GetControllerVersion status code: "
<< static_cast<int>(versionPair.second)
<< ", 版本 / Version: " << versionPair.first << "\n";
std::cout << "[cpp17_info_basic] GetArmModelInfo 状态码 / GetArmModelInfo status code: "
<< static_cast<int>(modelPair.second)
<< ", 型号 / Model: " << modelPair.first << "\n";
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_info_basic] 示例结束 / Example finished\n";
return 0;
}cpp
#include <iostream>
#include "arm_api.h"
#include "status_code.h"
#include "query_state_modes/run.h"
/**
* 查询状态与模式门面。
* @return 0 表示成功,否则返回 1。
*/
int RunInfoStateModesQueryStateModes(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_arm_state] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_arm_state] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 获取伺服状态、软模式和操作模式。
// [EN] Get the servo status, soft mode, and operation mode.
std::pair<ServoStatusEnum, STATUS_CODE> servoPair = arm.controllerInfo.GetServoStatus();
std::pair<SoftModeEnum, STATUS_CODE> softPair = arm.controllerInfo.GetSoftMode();
std::pair<OpModeEnum, STATUS_CODE> opPair = arm.controllerInfo.GetOpMode();
std::cout << "[cpp17_arm_state] GetServoStatus 状态码 / GetServoStatus status code: "
<< static_cast<int>(servoPair.second)
<< ", 伺服状态 / Servo status: " << static_cast<int>(servoPair.first) << "\n";
std::cout << "[cpp17_arm_state] GetSoftMode 状态码 / GetSoftMode status code: "
<< static_cast<int>(softPair.second)
<< ", 软模式 / Soft mode: " << static_cast<int>(softPair.first) << "\n";
std::cout << "[cpp17_arm_state] GetOpMode 状态码 / GetOpMode status code: "
<< static_cast<int>(opPair.second)
<< ", 操作模式 / Operation mode: " << static_cast<int>(opPair.first) << "\n";
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_arm_state] 示例结束 / Example finished\n";
return 0;
}cpp
#include <iostream>
#include "arm_api.h"
#include "status_code.h"
#include "write_back_modes/run.h"
/**
* 写回软模式与操作模式门面。
* @return 0 表示成功,否则返回 1。
*/
int RunInfoStateModesWriteBackModes(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_arm_state] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_arm_state] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 读取并写回软模式与操作模式。
// [EN] Read and write back the soft mode and operation mode.
std::pair<SoftModeEnum, STATUS_CODE> softPair = arm.controllerInfo.GetSoftMode();
std::pair<OpModeEnum, STATUS_CODE> opPair = arm.controllerInfo.GetOpMode();
STATUS_CODE setSoftRet = arm.controllerInfo.SetSoftMode(softPair.first);
STATUS_CODE setOpRet = arm.controllerInfo.SetOpMode(opPair.first);
std::cout << "[cpp17_arm_state] SetSoftMode 状态码 / SetSoftMode status code: "
<< static_cast<int>(setSoftRet) << "\n";
std::cout << "[cpp17_arm_state] SetOpMode 状态码 / SetOpMode status code: "
<< static_cast<int>(setOpRet) << "\n";
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_arm_state] 示例结束 / Example finished\n";
return 0;
}cpp
#include <iostream>
#include "arm_api.h"
#include "status_code.h"
#include "access_control/run.h"
/**
* 获取和归还控制权门面。
* @return 0 表示成功,否则返回 1。
*/
int RunInfoStateModesAccessControl(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_arm_state] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_arm_state] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 获取并归还 SDK 控制权。
// [EN] Acquire and release the SDK access token.
arm.controllerInfo.AcquireAccess();
std::cout << "[cpp17_arm_state] 已获取控制权 / SDK access acquired\n";
arm.controllerInfo.ReleaseAccess();
std::cout << "[cpp17_arm_state] 已归还控制权 / SDK access released\n";
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_arm_state] 示例结束 / Example finished\n";
return 0;
}cpp
#include <iostream>
#include "arm_api.h"
#include "status_code.h"
#include "action_apis/run.h"
/**
* 动作接口门面。
* @return 0 表示成功,否则返回 1。
*/
int RunInfoStateModesActionApis(void)
{
// [ZH] 连接机器人,请直接修改下面的魔鬼字符串。
// [EN] Connect to the robot and edit the hard-coded magic strings below directly.
Arm arm;
STATUS_CODE connectRet = arm.Connect("10.27.1.2", "10.27.1.102");
if (connectRet != STATUS_CODE::OK) {
std::cerr << "[cpp17_arm_state] 连接机器人失败 / Connect to the robot failed, 状态码 / Status code: "
<< static_cast<int>(connectRet) << "\n";
return 1;
}
std::cout << "[cpp17_arm_state] 机器人连接成功 / Robot connected successfully\n";
// [ZH] 顺序执行全部动作接口。
// [EN] Execute all action APIs in sequence.
STATUS_CODE servoOnRet = arm.controllerInfo.ServoOn();
STATUS_CODE servoOffRet = arm.controllerInfo.ServoOff();
STATUS_CODE ledRet = arm.controllerInfo.SwitchLedLight(true);
STATUS_CODE resetRet = arm.controllerInfo.ServoReset();
STATUS_CODE estopRet = arm.controllerInfo.Estop();
std::cout << "[cpp17_arm_state] ServoOn 状态码 / ServoOn status code: "
<< static_cast<int>(servoOnRet) << "\n";
std::cout << "[cpp17_arm_state] ServoOff 状态码 / ServoOff status code: "
<< static_cast<int>(servoOffRet) << "\n";
std::cout << "[cpp17_arm_state] SwitchLedLight 状态码 / SwitchLedLight status code: "
<< static_cast<int>(ledRet) << "\n";
std::cout << "[cpp17_arm_state] ServoReset 状态码 / ServoReset status code: "
<< static_cast<int>(resetRet) << "\n";
std::cout << "[cpp17_arm_state] Estop 状态码 / Estop status code: "
<< static_cast<int>(estopRet) << "\n";
// [ZH] 断开连接,结束示例。
// [EN] Disconnect and finish the example.
arm.Disconnect();
std::cout << "[cpp17_arm_state] 示例结束 / Example finished\n";
return 0;
}