공유메모리
공유메모리 매니저
Indy Shared Memory는 Shared Memory Manager로부터 생성되었습니다.
-
Namespace : NRMKFramework
-
Header : NRMKFramework/shmem/ShmemManager.hpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
NRMKFramework 2.0에서는 Indy Shared Memory를 통해 로봇 제어나 데이터 읽기, 통신, 직접변수 등 뉴로메카 로봇과 관련된 다양한 API를 제공합니다. Indy Shared Memory에 대한 정보는 아래 표와 같으며, 이 값들로 Shared Memory Manager를 통해서 Indy Shared Memory에 접근 할 수 있습니다.
Shared Memory Name | Shared Memory Size | IndySHM | 16777216 (0x1000000; 16MB) |
---|
공유 데이터 구조체
이 구조체들은 로봇의 실시간 데이터, 제어 데이터, 상태 데이터 등과 같은 정보를 포함하고 있습니다.
-
Namespace : NRMKIndy::SharedData
-
Header : NRMKFramework/Indy/SharedMemory/SharedData.h
RobotRTSharedData
RobotRTSharedData는 로봇의 실시간 데이터와 EtherCAT 정보를 포함합니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
-
double time : 로봇이 실행된 시간
-
uint64_t taskTime : 로봇을 제어할 때, 한 틱당 걸린 시간
-
uint64_t taskTimeMax : 로봇 실행 중에 가장 높은 taskTime
-
uint64_t computeTime : 한 틱당 로봇 경로 계산, 충돌 감지, Emergency 검출 등 알고리즘과 관련된 총 계산 시간
-
uint64_t computeTimeMax : 로봇 실행 중 가장 높은 computeTime
-
uint64_t ecatTime : 한 틱당 로봇 제어를 위한 EtherCAT 통신 시간
-
uint64_t ecatTimeMax : 로봇 실행 중 가장 높은 ecatTime
-
uint32_t ecatMasterState : EtherCAT Master 상태
-
uint32_t ecatSlaveNum : 연결된 EtherCAT Slave 의 갯수
-
uint16_t coeStatus : 각 Joint의 모터에 대한 coeStatus
Note
Indy7 로봇의 경우, MAX_JOINT_DOF 값은 6이며 배열의 Index는 Joint 번호와 일치합니다 (0에서 5까지 사용).
RobotControlSharedData
RobotControlSharedData는 Joint 각도, Joint 속도, 토크, Task 포지션 등을 포함합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
- double time : 로봇이 실행된 시간
- int32_t cmode : 로봇의 제어 모드
CMode | Description | 0 | 현재 위치 고수 | 1 | Joint 제어 (속도 기반) | 2 | Task 제어 (속도 기반) | 3 | 직접교시 모드 | 4 | 임피던스 제어 | 5 | 정지 | 6 | 안전정지 | 7 | Joint 조깅 | 8 | Task 조깅 | 9 | Joint 제어 (시간 기반) | 10 | Task 제어 (시간 기반) | 11 | Joint 복구 |
---|
- int32_t tCmode : 로봇의 Task 제어 기준좌표계
Value | Description |
---|---|
0 | Reference Frame (Global) Base |
1 | TCP (Tool) Base |
-
double q[MAX_JOINT_DOF] : 로봇의 Joint 각도
-
double qdot[MAX_JOINT_DOF] : 로봇의 Joint 속도
-
double qd[MAX_JOINT_DOF] : 로봇의 목표 Joint 각도
-
double qdotd[MAX_JOINT_DOF] : 로봇의 목표 Joint 속도
-
double qdotref[MAX_JOINT_DOF] : 로봇의 Reference Joint 속도 (제어 계산 중간값, 디버깅용 값으로 볼 수 있음)
-
double qddot[MAX_JOINT_DOF] : 로봇의 Joint 가속도
-
double qddotd[MAX_JOINT_DOF] : 로봇의 목표 Joint 가속도
-
double qddotref[MAX_JOINT_DOF] : 로봇의 Reference Joint 가속도
-
double p[6] : 로봇의 Task 좌표 (Reference Frame 기준)
- Task 값의 순서 : UVWXYZ
-
double pd[6] : 로봇의 Task 목표 위치 좌표
-
double pdot[6] : 로봇의 Task 속도
-
double pdotd[6] : 로봇의 목표 Task 속도
-
double pdotref[6]: 로봇의 Reference Task 속도
-
double pddot[6] : 로봇의 Task 가속도
-
double pddotd[6] : 로봇의 목표 Task 가속도
-
double pddotref[6] : 로봇의 Reference Task 가속도
-
double tau[JOINT_DOF] : 로봇의 모터에 입력되는 관절 토크 (아래 tauext, taugrav, tauidyn, tauref 4개 값의 합산)
-
double tauext[JOINT_DOF] : 로봇의 모터에 인가되는 외부 토크의 추정값
-
double taugrav[JOINT_DOF] : 로봇이 현재 자세를 유지하기 위해서 필요한 중력 토크
-
double tauidyn[JOINT_DOF] : 로봇이 목표 지점으로 이동하기 위하여 필요한 토크
-
double tauref[JOINT_DOF] : 로봇의 모델에 정의되지 않은 요소의 영향을 제거하기 위해 필요한 토크
-
double Fext[6] : 임피던스 제어에 사용되는 F/T 센서로부터 읽어들인 값
- 단위 : N (X, Y, Z), Nm (U, V, W)
- 순서 : XYZUVW
-
int qState[JOINT_DOF] : 로봇의 Joint 모터 상태
Value | Description |
---|---|
0 | Motor Off |
1 | Motor On |
2 | Motor Ready On (On 이 되기위한 대기상태) |
- int qBrake[JOINT_DOF] : 로봇의 Joint 모터의 브레이크 상태
Value | Description |
---|---|
0 | Brake Off (Release, Open) |
1 | Brake On (Hold, Close) |
Note
-
SharedData 구조체에서 Task Position, Task Velcoity 등 Task와 관련된 데이터의 배열 순서는 UVWXYZ
-
SharedData 구조체에서 단위
Description Unit Distance [m] Angular [rad] Time [s] Force [N] Torque [Nm] Velocity [m/s], [rad/s] Acceleration [m/s^2], [rad/s^2]
RobotStateSharedData
RobotStateSharedData는 로봇 소프트웨어 프로그램의 상태를 나타냅니다.
1 2 3 4 5 6 7 8 9 10 |
|
-
bool isTaskRunning : Robot의 제어 SW 프로그램 실행 상태
-
bool isCadkitConnected : CadkitViewer 연결 상태
-
bool isContyConnected : Conty 연결 상태
-
bool isSCMConnected : SCM 연결 상태
-
bool isToolConnected : Tool 연결 상태
-
bool isDebugMode : 디버그 모드
-
char programMode : 프로그램 모드
Value | Description |
---|---|
0 | 로드 된 프로그램 없음 |
1 | Command 프로그램 (Cadkit 등) |
2 | Conty에서 작성된 프로그램 |
3 | Script로 작성된 프로그램 |
- char programState : 프로그램 상태
Value | Description |
---|---|
0 | 정지 |
1 | 실행 중 |
2 | 일시정지 |
RobotControlStatusSharedData
RobotControlStatusSharedData는 로봇의 제어 상태를 포함합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
-
bool isReady : 로봇 동작 가능 (모든 Servo On)
-
bool isEmergencyState : 비상 상태 (비상정지, 충돌 및 에러 상항 모두 포함)
-
bool isCollided : 충돌 상태
-
bool isErrorState : 로봇 에러 상태
-
bool isBusy : 로봇이 움직이고 있는 상태
-
bool isMoveFinished : 로봇 Move 명령이 정상적으로 완료된 상태
-
bool isHome : 로봇이 home 포지션에 있는 상태
-
bool isZero : 로봇이 zero 포지션에 있는 상태
-
bool isInResetting : 로봇이 리셋 중인 상태
-
bool isInTeaching : 로봇 교시중인 상태 (직접교시, Jogging, eModi 등)
-
bool isDirectTeaching : 로봇이 직접교시 모드인 상태
RobotConfigSharedData
RobotConfigSharedData는 로봇의 설정값을 나타냅니다. 멤버변수를 통해 현재 로봇의 정보와 설정 상태를 알 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
-
char name[256] : 로봇 이름 (모델명)
-
char buildVersion[128] : 로봇 빌드 버전
-
char buildDate[128] : 로봇 빌드 날짜
-
char robotId[256] : 로봇 고유 시스템 ID
-
char stepId[128] : STEP 제어기 시스템 ID
-
int numBodies : 로봇의 Body 개수
-
int numJoints : 로봇의 Joint 개수
-
int jointDof : 로봇의 자유도 (일반적으로 Joint 개수와 같음)
-
double wTime : 시간기반 JointMove에서 웨이포인트 사이의 시간 간격 (최소값 0.5)
-
double wTimeTask : 시간기반 TaskMove에서 웨이포인트 사이의 시간 간격 (최소값 0.5)
-
int jointVelBoundaryLevel : 속도기반 JointMove에서 속도 레벨 (1~9)
-
int jointAccBoundaryLevel : 속도기반 JointMove에서 가속도 레벨(1~9)
-
int taskVelBoundaryLevel : 속도기반 TaskMove에서 속도 레벨(1~9)
-
int taskAccBoundaryLevel : 속도기반 TaskMove에서 가속도 레벨(1~9)
-
int collisionLevel : 충돌 감도 레벨 (1~5)
-
int refFrameType : Referece Frmae 설정 타입
Value | Description |
---|---|
0 | 기본값 (0번 Body; Base) |
1 | Direct (XYZUVW 값) |
2 | Planar (3점 평면) |
3 | Circular (3점 원) |
-
double toolProperties[4] : Tool Property 값 (Mass, X, Y, Z)
-
double defaultTcp[6] : 기본 TCP 설정값
-
double compTcp[6] : TCP 보정값
-
double refFrameTRef[6] : 설정된 Reference Frame값 (Base 기준 XYZUVW좌표로 표현)
-
double refFramePoints[3][3] : 3점을 이용해 ReferenceFrame 을 설정했을 시 3점의 XYZ 좌표
-
double jointHome[JOINT_DOF] : Joint Home 포지션
-
double taskHome[6] : Task Home 포지션 (임피던스 제어 기준점)
-
double defaultJointBlendRadius : JointMove에서 블렌딩 적용 시 기본 반경 거리 [m]
-
double defaultTaskBlendRadius : TaskMove에서 블렌딩 적용 시 기본 반경 각도 [rad]
RobotEmergencySharedData
RobotEmergencySharedData는 로봇의 최근 에러 데이터를 포함합니다. 여기서 확인할 수 있는 에러 데이터는 RobotControlStatusSharedData 구조체의 isEmergencyState가 true 일 때 의미가 있습니다.
1 2 3 4 5 6 |
|
* int errorCode : Emergency Event 코드
Value | Description |
---|---|
0 | 비상정지 버튼, 비상정지 신호 등으로 인한 로봇의 비상정지 |
1 | 충돌 감지 |
2 | Joint 포지션 제한 초과 |
3 | 속도/가속도 제한 초과 |
4 | 모터 상태 에러 |
5 | 토크 제한 초과 |
6 | EtherCAT연결 끊김 |
7 | 경로 위치 계산 에러 |
8 | EndTool로부터 비상정지 신호 수신으로 인한 로봇의 비상정지 |
9 | 특이점 도달 |
10 | 과전류 |
12 | Joint 포지션 제한 근처 |
13 | 속도 제한 근처 |
14 | 특이점 근처 |
-
int argsInt[3] : 각 에러 상황에 대한 추가 정보
-
double argsDouble[3] : 각 에러 상황에 대한 추가 정보
UserConfigSharedData
UserConfigSharedData는 로봇에 대해 사용자 정의 설정에 대한 정보를 포함합니다.
1 2 3 |
|
- int registeredDefaultProgramIdx : 현재 등록된 기본 프로그램의 목록 (0~9)
SmartDIOSharedData
SmartDIOSharedData는 STEP의 GPIO나 CB의 Digital I/O포트를 매핑한 SmartDIO를 포함하여, SharedMemory를 통해 사용할 수 있게 합니다.
Note
SmartDIO의 매핑 정보나 자세한 사항은 CB 문서를 참조
1 2 3 4 |
|
-
bool smartDO[32] : 각 Index에 대한 SmartDO 출력 값
-
bool smartDI[32] : 각 Index에 대한 SmartDI 입력 값
SmartAIOSharedData
SmartAIOSharedData는 CB의 Analog I/O포트를 매핑한 SmartAIO를 표현하여, SharedMemory를 통해 사용할 수 있게 합니다.
1 2 3 4 |
|
-
uint16_t smartAO[32] : 각 Index에 대한 SmartAO 출력 값
-
uint16_t smartAI[32] : 각 Index에 대한 SmartAI 입력 값
ExtraIOData
ExtraIOData는 SmartIO를 활용할 수 있는 DIO, AIO를 제외한, Indy Control Box (CB)에서 지원하는 IO데이터를 표현하기 위한 구조체입니다. 현재로서는 로봇이나 CB의 CAN 포트를 이용한 FTSensor 데이터만 지원합니다.
1 2 3 4 5 6 |
|
-
int16_t ftRobotCanRaw[6]: 로봇 CAN 포트의 FTSensor Raw 데이터
-
double ftRobotCanTr[6] : 로봇 CAN 포트의 FTSensor 처리값
-
int16_t ftCBCanRaw[6]: Control Box CAN 포트의 FTSensor Raw 데이터
-
double ftCBCanTr[6] : Control Box CAN 포트의 FTSensor 처리값
공유 데이터 함수
이 함수들은 Wrapping 함수로써, Shared Memory Manager를 이용하여 Shared Memory로부터 원하는 데이터를 얻을 수 있습니다.
- Namespace : NRMKIndy::SharedData
- Header : NRMKFramework/Indy/SharedMemory/SharedData.h
RobotRTSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
- NRMKFramework::ShmemManager & indyShm : Indy Shared Memory와 연결된 Shared Memory Manager
Note
이처럼 SharedData 구조체를 받아오는 함수들은 모두 NRMKFramework::ShmemManager & indyShm
파라미터를 가지고 있습니다.
이 indyShm파라미터는 반드시 Indy Shared Memory와 연결된 Shared Memory Manager여야만 합니다.
RobotControlSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
RobotStateSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
RobotControlStatusSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
RobotConfigSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
RobotEmergencySharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
- Reset the Data
1 2 3 4 |
|
UserConfigSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
SmartDIOSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
- Getting as Pointer
1 2 3 4 |
|
- Getting one by one through index
1 2 3 4 |
|
- Getting as array
1 2 3 4 |
|
- Getting one by one through index
1 2 3 4 |
|
- Setting one by one through index
1 2 3 4 5 |
|
- Setting with array
1 2 3 4 |
|
SmartAIOSharedData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
- Getting as Pointer
1 2 3 4 |
|
- Getting one by one through index
1 2 3 4 |
|
- Getting one by one through index
1 2 3 4 |
|
- Setting one by one through index
1 2 3 4 5 |
|
ExtraIOData
- Getting as Reference
1 2 3 4 |
|
- Getting as Copy
1 2 3 |
|
- Getting as Pointer
1 2 3 4 |
|
공유 명령
공유 명령은 SharedMemory를 이용하여 로봇에게 명령을 내리거나 설정을 변경 할 수 있는 기능을 지원합니다.
- Namespace : NRMKIndy::SharedData
- Header : NRMKFramework/Indy/SharedMemory/SharedCommand.h
- Commander
1 2 3 4 |
|
-
NRMKFramework::ShmemManager & indyShm : Indy Shared Memory와 연결된 Shared Memory Manager
-
int jointDof : Commander로 제어할 로봇의 JOINT_DOF 값 (반드시 현재 실행중인 로봇과 일치해야함)
동작
- stopMove
로봇의 현재 모션을 중지합니다.
1 |
|
- jointMoveHome
Joint 제어를 통해 로봇을 Home 포지션으로 이동합니다.
비동기 모드일 경우, 로봇에게 명령을 내리고 즉시 true를 반환합니다. 만약 로봇이 명령을 실행할 수 없는 상태라면 즉시 false를 반환합니다. 동기 모드에서는 로봇이 이동이 끝날 때 까지 대기 후 true가 반환되며, 이동을 할 수 없는 상태거나 명령 실행 중에 이동에 이상이 생겼을 경우 false가 반환됩니다. (이하 모든 Move 함수 동일)
1 |
|
- Return Value : bool : 로봇의 명령 성공 수행 여부
- jointMoveZero
Joint 제어를 통해 로봇을 Zero 포지션으로 이동합니다.
1 |
|
- jointMoveTo
Joint 제어를 통해 로봇을 목표 Joint 포지션으로 이동합니다.
1 |
|
- const double * q : 각 Joint의 포지션를 나타내는 JOINT_DOF 길이의 double 배열
Note
Commander 클래스에서 파라미터의 각도 단위는 Randian입니다.
- jointMoveBy
Joint 제어를 통해 로봇을 현재 Joint 포지션으로부터 상대좌표값만큼 이동합니다.
1 |
|
- const double * q : 현재 Joint 포지션으로부터 목표 Joint 포지션의 상대좌표를 나타내는 JOINT_DOF 길이의 double 배열
- taskMoveTo
Task Space 제어를 통해 로봇을 목표 Task 포지션로 이동시킵니다. (Reference Frame 기준 Task좌표값)
Caution
로봇의 Task Space제어나 Task 위치에 대하여 잘 인지하고 있을 때만 이 함수를 사용합니다. Task Space 제어에 대하여 잘 이해하지 못한 상태에서 사용하면 로봇을 잘못된 위치로 이동하여 위험할 수 있습니다.
1 |
|
- const double * p : Referece Frame기준의 Task 포지션, XYZUVW 순서.
- taskMoveBy
Task Space제어를 통해 현재 Task 포지션로부터 로봇을 상대좌표값만큼 이동시킵니다.
1 |
|
- const double * p : Referece Frame기준의 Task 포지션, XYZUVW 순서. XYZ 좌표 이동은 Task Control Base 에 따라서 Reference 기준 XYZ좌표계인지, TCP 기준 XYZ좌표계인지 결정. UVW는 항상 TCP 기준 좌표
참고
-
Task Position의 XYZ 등 Move나 Configration 함수에서 거리의 단위는 [m]
-
Task Position, Task Velcoity 등 Task와 관련된 함수의 파라미터 값 데이터의 배열 순서는 XYZUVW
- jointMoveWaypoint
Joint 제어를 통해 로봇을 목표 waypoint의 Joint 포지션로 이동시킵니다. Conty를 통해 티칭한 후 설정된 프로그램에 해당 waypoint 이름이 등록되어 있어야 합니다.
1 |
|
- const char * waypointName : 목표 waypoint 이름
- taskMoveWaypoint
Task Space 제어를 통해 로봇을 목표 waypoint의 Task 포지션으로 이동시킵니다.
1 |
|
- const char * waypointName : 목표 waypoint 이름
- executeMoveCmd
Move Command 를 실행합니다. Move Command는 한 개 이상의 waypoint를 포함하며, Conty를 통해 설정한 기본 프로그램에 해당 Move Command가 등록되어 있어야합니다.
1 |
|
- const char * cmdMoveName : 실행할 Move Command의 이름
설정
본 절에서는 Robot의 Configuration 함수들을 소개합니다. 모든 함수들의 반환값은 bool 타입이며, Configuration 이 완료 된 경우 true를 반환합니다.
비동기 모드의 경우 최종적으로 configuration이 제대로 반영되었는지는 알 수 없으며, 동기모드일 경우 configuration 완료 후 성공/실패 여부를 반환합니다.
- setCollisionSensitivityLevel
충돌 감도 변경
1 |
|
- int level : 충돌 감도 레벨 (1~5, 5가 가장 둔감, Conty와 동일).
- setTaskControlBaseMode
Task Space 제어에서, Task Control Base 변경
1 |
|
- int taskCtrlMode : Task Control Base 기준좌표계 (0: Reference Frame, 1: TCP), UVW는 항상 TCP 기준
- setJointHome
Joint Home 포지션을 설정
1 |
|
- const double * q : Home 포지션의 joint 각도, JOINT_DOF 길이의 doube 배열
- setJointHomeCurrPos
현재 로봇 위치로 Joint Home 포지션을 설정
1 |
|
- setDefaultTcp
기본 TCP 좌표를 설정, 기본 TCP 좌표 변경시 TCP 보정값은 리셋
1 |
|
- const double * defaultTcp : 기본 Tcp 좌표 설정 (XYZUVW 순서)
- applyTcpCompensation
TCP 보정값 적용. 최종 TCP값은 기본TCP좌표 + TCP 보정값
1 |
|
- const double * compTcp : TCP 보정값
- revokeTcpCompensation
TCP 보정값 적용 해제 (기본 TCP값으로 돌아감)
1 |
|
- setRefFrameDirect
XYZUVW 좌표값을 통한 Reference Frame 설정. 0번 Body base를 기준으로 XYZ 좌표값만큼, UVW 회전각만큼 축을 이동하여 Reference Frame을 설정
1 |
|
- const double * tref : Refence Frame 설정 값 (XYZUVW 순서)
- setJointMoveWaypointTime
시간기반 JointMove의 기본 Waypoint 사이 시간 간격 변경
1 |
|
- double wTime : Waypoint 시간 (단위: 초)
- setJointMoveVelocityLevel
속도기반 JointMove의 속도 레벨 설정
1 |
|
- int level : 속도 Level (1~9, 9가 가장 빠름)
- setJointMoveBlendingRadiusLevel
JointMove에 블렌딩 적용 시 블렌딩의 반경 레벨 설정
1 |
|
- int level : 블렌딩 반경 레벨 설정 (1~9, 9가 가장 반경이 커 매끄러움)
- setTaskMoveWaypointTime
시간기반 TaskMove의 기본 Waypoint 사이 시간 간격 변경
1 |
|
- double wTimeTask : Waypoint 시간 (단위: 초)
- setTaskMoveVelocityLevel
속도기반 TaskMove의 속도 레벨 설정
1 |
|
- int level : 속도 Level (1~9)
- setTaskMoveBlendingRadiusLevel
TaskMove에 블렌딩 적용 시 블렌딩의 반경 설정
1 |
|
- int level : 블렌딩 반경 레벨 (1~9)
직접교시 모드
- switchDirectTeachingMode
로봇을 직접교시 모드로 설정 (로봇이 정지상태여야 가능)
1 |
|
- finishDirectTeachingMode
로봇을 직접교시 모드에서 기본 모드(자세유지)로 설정 (로봇이 직접교시모드일때만 가능)
1 |
|
로봇 프로그램 제어
본 함수들은 Conty에서 로드한 프로그램이나 기본 프로그램으로 설정한 프로그램을 실행/일시정지/정지시킬 때 사용합니다.
- startCurrProgram
현재 로드되어있는 프로그램 실행 (Conty를 통해 로딩 가능)
1 |
|
- stopCurrProgram
현재 실행중인 프로그램 중지
1 |
|
- pauseCurrProgram
현재 실행중인 프로그램 일시중지
1 |
|
- resumeCurrProgram
현재 일시중지중인 프로그램 재개
1 |
|
- startRegisteredDefaultProgram
현재 등록된 기본 프로그램 실행 (Conty를 통해 등록 또는 아래 함수 이용)
1 |
|
- registerDefaultProgramIdx
Conty에서 저장한 기본 프로그램 #1~10을 기본 프로그램으로 등록. 등록 후 startRegisteredDefaultProgram으로 해당 프로그램 로딩 및 실행 가능.
1 |
|
- int idx : Conty에서 저장한 기본 프로그램 (Conty Index: 1~10 / 파라미터 Index: 0~9)
기타
- setSyncMode
현재 Commander 객체의 동작 모드를 동기 또는 비동기로 설정하는 함수입니다. 객체가 생성될 때 기본값은 비동기 모드입니다.
비동기 모드로 로봇 제어 명령을 할 경우, 명령을 보내고 즉시 반환되며, 명령이 실행되었는지 등은 파악할 수 없고, SharedData의 로봇의 상태를 통해 일부 정보만 파악 할 수 있습니다.
동기 모드일 경우엔, 제어 명령이 끝나야 반환이 되며 반환값을 통해 성공여부를 알 수 있습니다.
1 2 3 |
|
- bool bSyncMode : 동기 모드 또는 비동기 모드
- reset
로봇의 상태를 리셋 (로봇의 비상정지, 에러, 충돌 등의 리셋)하는 함수입니다. 기본적으로 일반적인 리셋 (Soft reset)을 수행하며, 재부팅 리셋 (Hard reset)은 필요시 자동으로 수행됩니다. 사용자가 Hard reset을 원할 경우 파라미터를 통해 실행 가능합니다.
1 2 3 |
|
- bool isHardReset : 로봇 Hard Reset
- stopEmergency
로봇의 현재 모션을 즉시 중지합니다. 로봇의 모든 모터는 꺼지며, 브레이크가 작동합니다. 이 함수가 호출 된 후에는 로봇이 비상정지 에러 상태가 되며, reset 함수를 호출해주어야 정상 상태로 돌아옵니다.
1 |
|