부록
TCP/IP 통신
통신 규칙
웹 UI에서 설정이 완료되면, TCP/IP 통신을 통해 감지를 요청하고 결과를 받아볼 수 있습니다.
IndyEye는 TCP/IP 통신을 위해 json string 형식을 이용합니다. 명령어 체계는 아래와 같습니다.
키 |
값 |
설명 |
'command' |
0 |
딥러닝 알고리즘 실행 |
|
1 |
자세 보정과 후처리 실행 |
|
2 |
감지 알고리즘 리셋 |
|
3 |
감지 가능한 물체의 이름 목록 요청 |
'class_tar' |
int |
감지할 물체 종류의 번호. 모두 감지를 위해서는 0 입력 |
'pose_cmd' |
float x 6 array |
현재 로봇의 작업 공간 위치. (IndyEye가 'no robot' 모드인 경우에 한해 입력) |
명령에 대한 IndyEye의 응답 체계는 아래와 같습니다.
키 |
값 |
설명 |
'STATE' |
int |
오류 상태. 0 는 감지 성공을 의미. |
'class_detect' |
int |
감지된 물체의 종류 번호. 1부터 시작. |
'tool_idx' |
int |
IndyEye가 선택한 툴 번호. |
'Tbe' |
float x 6 array |
물체 파지를 위한 로봇의 6D 작업 공간 위치. |
'Tbt' |
float x 6 array |
물체 파지를 위한 TCP의 6D 작업 공간 위치. |
'Tbo' |
float x 6 array |
물체의 6D 작업 공간 위치. |
'class_list' |
string array |
감지 가능한 물체의 이름 목록. ('command'가 3 인 경우에만 회신) |
C++ 클라이언트
IndyEyeClient는 IndyEye와 함께 제공되는 C++ 통신용 클래스입니다. NRMK Framework에 포함되어 제공되며, 구성은 아래와 같습니다.
파일/폴더 |
내용 |
IndyEyeClient.h |
IndyEyeClient의 헤더 파일. |
IndyEyeClient.cpp |
IndyEyeClient의 소스 파일. |
jsoncpp.cpp |
JsonCpp library의 소스 파일. |
json/ |
JsonCpp library의 헤더 파일들. |
IndyEyeClient는 IndyEye와의 간편한 통신을 위해 아래의 함수들을 제공합니다.
함수 |
변수 |
설명 |
SetIP |
char* ipaddress |
IndyEye의 IP 주소 설정 |
GetClassList |
- |
감지 가능한 물체 리스트를 요청 |
Detect |
int cls, double *pose |
물체 감지와 보정, 후처리 수행. cls: 목표 물체 종류 번호, 모두 감지를 위해서는 0 입력, pose: 현재 로봇 자세 (선택 입력, double × 6 어레이) |
GetClassList나 Detect 함수의 호출 후에, 그 결과는 아래와 같이 IndyEyeClient의 멤버 변수에 저장됩니다.
멤버 변수 |
형식 |
설명 |
class_detect |
int |
감지된 물체의 종류 번호 |
Tbe |
float x 6 array |
물체 파지를 위한 로봇의 6D 작업 공간 위치. |
Tbt |
float x 6 array |
물체 파지를 위한 TCP의 6D 작업 공간 위치. |
Tbo |
float x 6 array |
물체의 6D 작업 공간 위치. |
class_list |
vector |
감지 가능한 물체의 이름 목록. |
프로그램 관리 (고급)
앱 실행
- IndyEye 프로그램 실행을 위해 아래의 둘 중 한가지를 입력하십시오. 전자는 터미널 상에서 프로그램을 실행하고, 후자는 백그라운드 서비스로 실행합니다. (기본적으로 부팅 시 후자의 방법으로 프로그램이 실행됩니다.)
| cd ~/Projects/indyeye/src
sudo python3 IndyEye_main.py
|
or
| sudo systemctl start IndyEyeAuto
|
백그라운드 서비스 관리
- 프로그램의 상태를 확인하기 위해서는 아래의 명령을 입력하십시오.
| sudo systemctl status IndyEyeAuto
|
- 프로그램을 종료하기 위해서는 아래의 명령을 입력하십시오.
| sudo systemctl kill IndyEyeAuto
|