통합예제 - DR_VS_CUSTOM
통신프로토콜
비전 시스템에서 하기 프로토콜을 준수해야만, 비전 명령어가 정상적으로 동작합니다.
vs_request (cmd)
- 로봇 제어기 → 비전 시스템
- “MEAS_START" +cmd[4byte]
- cmd는 검출 물체 개수: integer를 4byte로 변환 ex) cmd=1 → 00000001
- ex) cmd= 1 인 경우: “MEAS_START"+00000001
- 실제 패킷: 4D4541535F535441525400000001
- 비전 시스템 → 로봇 제어기
- 비전 시스템이 정상인 경우 “MEAS_OK” 비 정상인 경우 “MEAS_NG”를 전송
vs_result ( )
- 로봇 제어기 → 비전 시스템
- “MEAS_REQUEST"
- 비전 시스템 → 로봇 제어기
- “MEAS_INFO" +cnt[4byte] +[(x[4byte] + y[4byte] + t[4byte]) x cnt개수]
- cnt 는 검출된 물체의 개수를 의미 함.
- x(x좌표), y(y좌표), t(회전값)는 100배 스케일링한 값을 전송해야 함.
- ex) cnt = 1, (x=1.1 , y=2.2, t=3.3)
- “MEAS_INFO"+1[4byte] +110[4byte] +220[4byte] +330[4byte]
- 실제 패킷: 4D4541535F494E464F000000010000006E000000DC0000014A
- ex) cnt = 2, (x=1.1 , y=2.2, t=3.3) (x=1.1 , y=-2.2, t=-3.3)
- “MEAS_ INFO"+2[4byte] +110[4byte] +220[4byte] +330[4byte] +110[4byte] -220[4byte] -330[4byte]
- 실제 패킷: 4D4541535F494E464F000000020000006E000000DC0000014A0000006EFFFFFF24FFFFFEB6
- “MEAS_INFO" +cnt[4byte] +[(x[4byte] + y[4byte] + t[4byte]) x cnt개수]
예제
vs_set_info(DR_VS_CUSTOM)
res = vs_connect("192.168.137.200", 9999) #비전과 통신 연결 시도
if res !=0: #통신 연결 결과 확인
tp_popup("connection fail",DR_PM_MESSAGE) #접속 실패 시, 프로그램 종료
exit()
ret = vs_request(1) #1번 물체 비전측정 정보 요청
cnt, result = vs_result() #물체 측정결과 정보 가져 오기
for i in range(cnt):
x = result[i][0]
y = result[i][1]
t = result[i][2]
tp_popup("x={0},y={1}, t={2}".format(result[i][0], result[i][1], result[i][2]),DR_PM_MESSAGE)