소켓 통신 활용 기본 안내서 v2.0
1. 기본 개요
Rainbow Robotics 에서 제공하는 TCP/IP 소켓 통신을 이용한 어플리케이션 개발에는 크게 두 가지 방식을 사용할 수 있습니다.
1.1 일반 소켓 통신을 통한 데이터 교환
- Rainbow Robotics 시스템은 TCP/IP 의 서버 또는 클라이언트가 될 수 있습니다.
- 상대방 PC/시스템과 유효한 데이터 (숫자, 배열, 문자열 등) 만 주고 받는 방식입니다.
- 사용자는 Rainbow Robotics 의 UI 를 이용하여 프로그램을 구성합니다.
- 상대방 PC/시스템에서 특정 데이터를 보내면, 해당 데이터를 활용하여 동작/프로그램을 수행 가능합니다.
1.2 외부 제어 스크립트를 통한 로봇 제어
- Rainbow Robotics 시스템은 TCP/IP 의 서버로 동작합니다. (포트 5000/5001 사용)
- 기본적으로 Rainbow Robotics 의 UI를 사용하는 것이 아니라, 사용자가 직접 운용 프로그램을 원하는 개발 언어로 만드는 방식입니다.
- Rainbow Robotics 에서 규정한 전용 스크립트 문법에 맞게 사용자가 문자열을 보냅니다.
- 사용자의 개발 언어는 상관없습니다. (JAVA, C++, Python 등)
- 문법에 맞는 스크립트 문자열을 규정된 포트로 전송만 하면 됩니다.
TCP/IP 소켓 통신을 위해서는 사전에 Rainbow Robotics 제어박스의 IP 주소가 세팅 되어야 합니다.
IP 주소 및 Netmask 등은 UI Program을 통해서 세팅합니다.
Setup 페이지의 System 란에서 설정 및 확인 가능합니다.
2. [방식 1] 일반 소켓 통신을 통한 데이터 교환
- RB 시스템은 TCP/IP 의 서버 또는 클라이언트가 될 수 있습니다.
- RB 시스템이 서버일 경우 사용자 시스템은 클라이언트이고 RB 시스템이 클라이언트일 경우 사용자 시스템은 서버로 작동시키면 됩니다.
어느 쪽을 서버로 사용할지는 사용자의 편의에 따라 선택하면 됩니다. - 상대방 PC/시스템과 유효한 데이터 (숫자, 배열, 문자열 등) 만 주고 받는 방식입니다.
- 사용자는 RB 의 UI 프로그램을 이용하여 프로그램을 구성합니다.
- 상대방 PC/시스템에서 특정 데이터를 보내면, 해당 데이터를 활용하여 동작/프로그램을 수행 가능합니다.
- 주고 받는 데이터는 기본적으로 Ascii String(문자열) 입니다.
- 문자열을 주고 받고, 필요에 따라 문자열 함수를 활용하여, 문자열을 숫자 또는 배열 등으로 변환하여 사용 가능합니다.
- 양 쪽 시스템의 IP 주소는 사용자가 설정 가능합니다.
- 통신할 포트의 경우 예약된 포트 번호 (1000번 미만 포트들, 2000, 2001, 5000, 5001)를 제외한 모든 번호가 사용 가능합니다.
아래의 예시는 [방식 1]을 사용했을 때 로봇 프로그램 구성의 간단한 예시입니다.
본 안내서에서는 아래의 예시 및 예시에 사용된 기능을 별도로 설명하지 않습니다.
각 기능에 대한 설명과 다양한 예시는 별도의 ‘소켓 통신 예시 문서’를 통해 참고하세요.
3. [방식 2] 외부 제어 스크립트를 통한 로봇 제어
- RB 시스템은 TCP/IP 의 서버로 동작합니다. (포트 5000/5001 사용)
- 기본적으로 RB 의 UI 를 사용하는 것이 아니라, 사용자가 직접 운용 프로그램을 원하는 개발 언어로 만드는 방식입니다.
- RB 에서 규정한 전용 스크립트 문법에 맞게 사용자가 문자열을 보냅니다.
- 사용자의 개발 언어는 상관없습니다. (JAVA, C#, C/C++, Python 등)
- 사용자의 개발 언어에 상관없이 문법에 맞는 스크립트 문자열을 규정된 포트로 전송만 하면 됩니다.
- 5000 번 포트는 사용자의 명령어를 RB 시스템에 보내는데 사용합니다. (동작 명령 등)
- 5001 번 포트는 RB 시스템의 상태 정보를 사용자에게 알려주는데 사용합니다. (관절 각도, 동작 여부, 각종 상태 정보 등)
외부 제어 스크립트를 통한 제어의 자세한 설명은 “제품 매뉴얼 Appendix E”에 있습니다. 로봇 동작 명령어 스크립트의 경우 두 가지 형태가 존재합니다.
- 서술형 (제품 매뉴얼 Appendix E에 설명)
- 함수형 (UI script 매뉴얼에 설명)
어떤 형태를 사용해도 상관없습니다. 명령어를 5000번 포트로 보내기만 하면 됩니다.
3.1 Example 1 - Move J
아래 예시는 Move J로 6개 관절을 0,45,90,0,90,0도로 이동하기 위한 서술형과 함수형 두 형태의 예시입니다.
3.1.1 서술형 명령어 예시:
“jointall 0.3, 0.1, 0, 45, 90, 0, 90, 0”
3.1.2 함수형 명령어 예시:
“move_j(jnt[0, 45, 90, 0, 90, 0], 60, 80)”
3.2 Example 2 - Move L
아래 예시는 Move L로 직교좌표계 100,200,300,0,90,0으로 이동하기 위한 서술형과 함수형 두 형태의 예시입니다.
3.2.1 서술형 명령어 예시:
“movetcp 0.2, 0.1, 100, 200, 300, 0, 90, 0”
3.2.2 함수형 명령어 예시:
“move_l(pnt[100, 200, 300, 0, 90, 0], 100, 300)”
4. 기타
Rainbow Robotics 에서는 '외부제어 스크립트' 예시 프로그램을 제공합니다.
- 예시 프로그램에 대한 설명은 제품 매뉴얼 Appendix E에 서술되어 있습니다.
- 예시 프로그램은 두 가지 언어로 제공됩니다. (C++ & C#)
- 예시 프로그램은 C++과 C#으로 구성되어 있지만, 앞서 설명된 것과 같이 사용자 개발 언어는 자유입니다.
- Python, JAVA 등 다른 프로그래밍 언어를 사용해도 상관 없습니다.
- TCP/IP 소켓 포트 5000/5001로 규정된 문법의 스크립트가 문자열 형태로 전송만 되면 됩니다.
4.1 예시 프로그램 1
- C++ 언어 기반
- Qt (IDE 개발 프로그램) 5.8 기반으로 제공 (Qt는 기본적으로 무료이며, 가장 편리한 Window Gui 개발 프로그램 입니다.)
- https://www.qt.io/ (Qt 5.8버전 다운로드)
4.2 예시 프로그램 2
- C# 언어 기반
- Microsoft Visual Studio (VS) 기반으로 제공