4.1 로봇의 기본 동작
개요
Arm 클래스는 연결 관리, 상태 쿼리 및 제어 명령 발송을 포함하여 Agilebot 로봇을 위한 대부분의 고주파수 인터페이스를 캡슐화합니다. 일반적인 작업 흐름:
Arm(controllerIP, teachPanelIP, localProxy)를 인스턴스화합니다.- 컨트롤러/teach 펜던트와의 통신을 설정하려면
ConnectSync()를 호출하세요. - 시나리오에 따른 통화 모션, 상태, I/O, 및 기타 인터페이스.
- 리소스를 해제하려면
DisconnectSync()를 호출하세요.
인스턴스화 후 클래스는 내부 설정을 자동으로 처리합니다.
- SDK 버전 확인
- 컨트롤러 유형 식별
- 자동 프록시 서비스 선택
- 로그에 기록되는 통신 경로
메모
- 로봇 소프트웨어 버전이 7.7.0 미만인 경우
localProxy=true를 유지하고 PC에서 로컬 통신 기능을 보장하십시오. - PC 모드의 산업용 로봇의 경우 연결 후 티치 펜던트 제어 권한을 획득하고 작동 후 해제되는지 확인하십시오.
클래스 생성자
| 메서드 이름 | Arm( string controllerIP , string teachPanelIP = null, bool localProxy = true ) |
|---|---|
| 설명 | 사용 가능한 모든 로봇 제어 인터페이스를 포함하는 Agilebot 로봇 클래스 생성자. 다른 기능을 사용하려면 먼저 로봇을 초기화하고 연결해야 합니다. |
| 요청 매개변수 | controllerIP : 문자열 로봇 컨트롤러 IP 주소 teachPanelIP : 문자열 옵션 티치 펜던트 IP; 생략하면 controllerIP 로 대체됩니다. localProxy : bool 로컬 컨트롤러 프록시 서비스를 사용할지 여부, 기본값은 true입니다. true인 경우 로컬에서 컨트롤러 프록시 서비스를 시작합니다. false인 경우 로봇 컨트롤러에 프록시 서비스가 이미 설치되어 있어야 합니다(로봇 소프트웨어 버전 7.7 이상이 필요함). |
| 반환 값 | StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.1.1 로봇에 연결하기
| 메서드 이름 | ConnectSync() |
|---|---|
| 설명 | Agilebot 로봇과 네트워크 연결을 설정합니다. 로봇 인스턴스를 초기화하려면 Arm 생성자를 먼저 호출해야 합니다. 이 메서드는 생성자에 지정된 프록시 모드를 기반으로 해당 프록시 서비스를 시작합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.1.2 로봇팔과의 연결 확인하기
| 메서드 이름 | IsConnected() |
|---|---|
| 설명 | 로봇과의 네트워크 연결이 유효한지 확인합니다. 연결이 유효하고 통신이 가능한 경우 true 를 반환합니다. 연결이 끊어지거나 설정되지 않은 경우 false 를 반환합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | bool: 연결 상태, true는 연결이 유효함을 나타내고, false는 연결이 유효하지 않거나 연결되지 않았음을 나타냅니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.1.3 로봇과의 연결 끊기
| 메서드 이름 | DisconnectSync() |
|---|---|
| 설명 | Disconnects from the Agilebot robot and releases related resources. After disconnection, ConnectSync() must be called again to communicate. |
| 요청 매개변수 | 없음 |
| 반환 값 | StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
public class Connect
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接到捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 检查连接状态
// [EN] Check the connection status
var state = controller.IsConnected();
Console.WriteLine("Connected: " + state);
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.4 현재 로봇 모델 가져오기
| 메서드 이름 | GetArmModelInfo() |
|---|---|
| 설명 | 현재 연결된 Agilebot 로봇의 모델 정보를 가져옵니다. 로봇 모델 문자열(예: "GBT-C5A")과 작업 실행 상태를 반환합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | string: 로봇 모델 문자열, 예: "GBT-C5A" StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
public class GetArmModelInfo
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接到捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 获取机器人型号信息
// [EN] Get the robot model information
(string info, code) = controller.GetArmModelInfo();
if (code != StatusCode.OK)
{
Console.WriteLine("Get Robot Model Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Model: " + info);
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.5 로봇의 작동 상태 가져오기
| 메서드 이름 | GetRobotState() |
|---|---|
| 설명 | Agilebot 로봇의 현재 작동 상태를 가져옵니다. 로봇 동작 상태 열거값과 동작 실행 상태를 반환한다. |
| 요청 매개변수 | 없음 |
| 반환 값 | RobotState: 로봇 동작 상태 열거형 값 StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
using Agilebot.IR.Types;
public class GetRobotState
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 获取机器人运行状态
// [EN] Get the robot running state
(RobotState state, code) = controller.GetRobotState();
if (code != StatusCode.OK)
{
Console.WriteLine("Get RobotState Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("RobotState: " + state);
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.6 현재 컨트롤러 작동 상태 가져오기
| 메서드 이름 | GetCtrlState() |
|---|---|
| 설명 | Agilebot 로봇 컨트롤러의 현재 작동 상태를 가져옵니다. 컨트롤러 작동 상태 열거 값과 작업 실행 상태를 반환합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | CtrlState: 컨트롤러 동작 상태 열거형 값 StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
using Agilebot.IR.Types;
public class GetCtrlState
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 获取控制器运行状态
// [EN] Get the controller running state
(CtrlState state, code) = controller.GetCtrlState();
if (code != StatusCode.OK)
{
Console.WriteLine("Get CtrlState Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("CtrlState: " + state);
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.7 현재 서보 상태 가져오기
| 메서드 이름 | GetServoState() |
|---|---|
| 설명 | Agilebot 로봇 서보 시스템의 현재 상태를 가져옵니다. 서보 시스템 상태 열거값과 작업 실행 상태를 반환합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | ServoState: 서보 시스템 상태 열거형 값 StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
using Agilebot.IR.Types;
public class GetServoState
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 获取伺服运行状态
// [EN] Get the servo operating state
(ServoState state, code) = controller.GetServoState();
if (code != StatusCode.OK)
{
Console.WriteLine("Get ServoState Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("ServoState: " + state);
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.8 로봇 컨트롤러 버전 얻기
| 메서드 이름 | GetVersion() |
|---|---|
| 설명 | Agilebot 로봇 컨트롤러의 소프트웨어 버전 정보를 가져옵니다. 컨트롤러 소프트웨어 버전 문자열과 작업 실행 상태를 반환합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | string: 컨트롤러 소프트웨어 버전 문자열 StatusCode: 기능 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
public class GetVersion
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 获取机器人控制器版本
// [EN] Get the robot controller version
string version;
(version, code) = controller.GetVersion();
if (code != StatusCode.OK)
{
Console.WriteLine("Get version Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Version: " + version);
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.9 로봇의 LED 표시등 설정
| 메서드 이름 | SwitchLedLight( bool mode ) |
|---|---|
| 설명 | Agilebot 로봇 LED 표시등의 on/off 상태를 제어합니다. true 는 표시등을 켜고, false 는 표시등을 끕니다. |
| 요청 매개변수 | mode : bool LED 표시 등 제어 모드, true는 켜짐을 나타내고 false는 꺼짐을 나타냅니다. |
| 반환 값 | StatusCode: 작업 실행 결과 |
| 호환성 | 협동 로봇만 지원하며 컨트롤러 버전 1.3.6 이상이 필요하며 산업용 로봇은 지원되지 않습니다. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.1.3+ 산업용(Bronze): 지원되지 않음 |
예제 코드
cs
using Agilebot.IR;
public class SwitchLedLight
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 关闭灯光
// [EN] Turn off the LED light
code = controller.SwitchLedLight(false);
if (code != StatusCode.OK)
{
Console.WriteLine("Switch Led Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Switch Led Light Off.");
}
Thread.Sleep(2000);
// [ZH] 打开灯光
// [EN] Turn on the LED light
code = controller.SwitchLedLight(true);
if (code != StatusCode.OK)
{
Console.WriteLine("Switch Led Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Switch Led Light On.");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Disconnect from the robot
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.10 로봇 서보 온
| 메서드 이름 | ServoOn() |
|---|---|
| 설명 | Agilebot 로봇의 서보 시스템을 시작하여 로봇을 제어 가능한 상태로 만듭니다. 서보 시작 후 로봇은 모션 명령을 받아들일 수 있습니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.1.11 로봇 서보 끄기
| 메서드 이름 | ServoOff() |
|---|---|
| 설명 | Agilebot 로봇의 서보 시스템을 꺼서 로봇을 안전 정지 상태로 만듭니다. 서보 종료 후 로봇은 움직일 수 없습니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
4.1.12 로봇 서보 재설정
| 메서드 이름 | ServoReset() |
|---|---|
| 설명 | Agilebot 로봇의 서보 시스템을 재설정하여 오류 상태를 지우고 재시작을 준비합니다. 이 메서드는 일반적으로 시스템을 복원하기 위해 서보 오류가 발생한 후에 호출됩니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | StatusCode: 함수 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
public class ServoOperation
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 机械臂伺服重置
// [EN] Reset the robot arm servo
code = controller.ServoReset();
if (code != StatusCode.OK)
{
Console.WriteLine("Servo Reset Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Servo Reset Success.");
}
Thread.Sleep(3000);
// [ZH] 机械臂伺服关闭
// [EN] Turn off the robot arm servo
code = controller.ServoOff();
if (code != StatusCode.OK)
{
Console.WriteLine("Servo Off Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Servo Off Success.");
}
Thread.Sleep(3000);
// [ZH] 机械臂伺服打开
// [EN] Turn on the robot arm servo
code = controller.ServoOn();
if (code != StatusCode.OK)
{
Console.WriteLine("Servo On Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Servo On Success.");
}
Thread.Sleep(3000);
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.1.13 비상 정지
| 메서드 이름 | Estop() |
|---|---|
| 설명 | Agilebot 로봇의 비상 정지를 실행하여 즉시 모든 동작을 멈추고 안전 상태로 진입합니다. 비상 정지 후 동작을 재개하려면 서보 시스템을 다시 시작해야 합니다. |
| 요청 매개변수 | 없음 |
| 반환 값 | StatusCode : 비상 정지 동작 실행 결과 |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
cs
using Agilebot.IR;
public class Estop
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接到捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
if (code != StatusCode.OK)
{
Console.WriteLine("Connect Robot Failed: " + code.GetDescription());
return code;
}
try
{
// [ZH] 触发机器人急停
// [EN] Trigger the robot emergency stop
code = controller.Estop();
if (code != StatusCode.OK)
{
Console.WriteLine("Emergency Stop Failed: " + code.GetDescription());
}
else
{
Console.WriteLine("Emergency Stop Success");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}