Skip to content

부록

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++ 클라이언트

IndyEyeClientIndyEye와 함께 제공되는 C++ 통신용 클래스입니다. NRMK Framework에 포함되어 제공되며, 구성은 아래와 같습니다.

파일/폴더 내용
IndyEyeClient.h IndyEyeClient의 헤더 파일.
IndyEyeClient.cpp IndyEyeClient의 소스 파일.
jsoncpp.cpp JsonCpp library의 소스 파일.
json/ JsonCpp library의 헤더 파일들.

IndyEyeClientIndyEye와의 간편한 통신을 위해 아래의 함수들을 제공합니다.

함수 변수 설명
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 프로그램 실행을 위해 아래의 둘 중 한가지를 입력하십시오. 전자는 터미널 상에서 프로그램을 실행하고, 후자는 백그라운드 서비스로 실행합니다. (기본적으로 부팅 시 후자의 방법으로 프로그램이 실행됩니다.)
1
2
cd ~/Projects/indyeye/src
sudo python3 IndyEye_main.py

or

1
sudo systemctl start IndyEyeAuto

백그라운드 서비스 관리

  • 프로그램의 상태를 확인하기 위해서는 아래의 명령을 입력하십시오.
1
sudo systemctl status IndyEyeAuto
  • 프로그램을 종료하기 위해서는 아래의 명령을 입력하십시오.
1
sudo systemctl kill IndyEyeAuto