도 1은 본 발명의 일 실시예에 따른 로봇용 시뮬레이션 시스템을 나타낸 블록도이다.
도 1을 참조하면, 로봇용 시뮬레이션 시스템(100)은 로봇 모델 시뮬레이터(110), 인터페이스 모듈(120)을 포함한다.
로봇 모델 시뮬레이터(110)는 해당 로봇을 시뮬레이션하기 위한 소프트웨어들의 집합이다. 로봇 모델 시뮬레이터(110)는 인터페이스 모듈(120)을 통해 외부에 있는 실제 로봇의 로봇 제어기(130)와 연결된다.
인터페이스 모듈(120)은 로봇 모델 시뮬레이터(110)와 로봇 제어기(130)의 사이에 위치하여, 로봇 제어기(130)로부터 입력되는 하드웨어용 제어신호를 로봇 모델 시뮬레이터(110)에서 인식할 수 있는 형태의 제어신호로 변환하는 기능을 수행한다. 또한, 제어신호의 프로토콜을 변환한 후 신호를 전달하는 기능을 수행한다. 인터페이스 모듈(120)에 대해서는 좀 더 상세히 후술한다.
로봇 제어기(130)는 개발하고자 하는 로봇의 실제 하드웨어적인 제어기를 의미하여 예를 들어, ARM 9, ARM 7 등의 임베디드(embedded) 시스템을 지원하는 프로세서일 수 있다.
도 2는 본 발명의 일 실시예에 따른 로봇 모델 시뮬레이터의 기능을 나타내는 블록도이다.
로봇 모델 시뮬레이터(110)는 로봇 모델링 모듈(111), 뷰어 모듈(viewer module, 112), 유틸리티 모듈(utility module, 113)을 포함할 수 있다.
로봇 모델링 모듈(111)은 로봇의 동작에 관련된 동역학 엔진과 충돌 검출을 위한 충돌 엔진, 로봇 모델 라이브러리(robot model library), 환경 모델 라이브러리 등을 포함할 수 있다. 동역학 엔진은 동역학 기반 즉, 물체에 가해진 힘을 기반으로 물체의 운동방정식을 풀어 물체의 운동 상태 등을 결정한다. 동역학 엔진은 로봇에 포함된 각 관절의 위치, 회전 각, 회전 속도, 관절 사이에 연결된 링크의 길이, 링크의 무게 등의 필요한 변수를 입력 받아 그 결과를 계산한다.
충돌 엔진은 로봇 모델 라이브러리, 환경 모델 라이브러리 등을 통해 주어지는 제한 조건을 고려하여 로봇의 동작에 발생하는 제한 조건 위반 등의 충돌 상황을 계산하고 검출하는 기능을 수행한다.
로봇 모델 라이브러리는 시뮬레이션 하고자 하는 로봇에 따라 다양한 형태로 주어지는 함수, 변수 집합 등을 규정할 수 있다. 환경 모델 라이브러리는 로봇 주위의 환경에 대한 함수, 변수 집합 등을 규정할 수 있다. 예를 들어, 이동 로봇의 경우 이동 로봇이 이동하는 지면이나 장애물에 대한 함수, 변수 집합 등의 정보를 제공할 수 있다. 또는 달걀과 같이 깨지기 쉬운 물체를 잡을 수 있는 인체의 손과 같은 구조의 로봇을 개발하는 경우, 상기 물체에 대한 정보를 제공할 수 있다.
뷰어 모듈(112)는 사용자가 사용할 수 있는 GUI(graphic user interface), 로봇의 시뮬레이션 상황을 시작적으로 모니터링 할 수 있는 3차원 소트프웨어 등을 포함할 수 있다.
유틸리티 모듈(113)은 충돌 검출에 필요한 메쉬(mesh) 정보 생성기, VRML(Virtual Reality Modeling Language)뷰어, 그 외의 분석도구를 포함할 수 있다.
로봇 모델 시뮬레이터(111)는 데스트탑, 노트북 등의 컴퓨터 상에서 실행될 수 있다. 상술한 로봇 모델 시뮬레이터(111)는 예시에 불과하며, 어떠한 로봇 시뮬레이션용 소프트웨어라도 무방하다.
도 3은 본 발명의 일 실시예에 따른 인터페이스 모듈을 나타내는 블록도이다.
인터페이스 모듈(120)은 가상 디바이스 드라이버(310), 프로토콜 변환기(320)를 포함할 수 있다.
가상 디바이스 드라이버(virtual device driver, 310)는 로봇 시뮬레이션 시스템(100)의 외부에 위치한 로봇 제어기(130)로부터 실제 로봇에서 사용되는 제어신호(이하 편의상 하드웨어적 제어신호라 칭한다)를 입력받아 로봇 모델 시뮬레이터(110)에서 사용되는 제어신호(이하 편의상 소프트웨어적 제어신호라 칭한다)의 형태로 변환하는 기능을 수행한다. 또한, 반대로 소프트웨어적 제어신호를 하드웨어적 제어신호로 변환하는 기능을 수행한다.
가상 디바이스 드라이버(310)는 PWM(Pulse Width Modulation) 변환부(311), 인코더(312), 힘 센서(force sensor, 313), 토크 센서(torque sensor, 314), 보조부(auxiliary, 315) 등을 포함할 수 있다.
PWM 변환부(311)는 로봇 제어기(130)에서 생성되는 인코딩된 펄스 신호를 로 봇 모델 시뮬레이터(110)에서 사용하는 방식의 변수 값으로 변환하는 기능을 수행한다. 예를 들어, 로봇 제어기가 임의의 관절에 제공하는 관절 회전값은 펄스 신호로 주어질 수 있다. 반면 로봇 모델 시뮬레이터(110)에서는 상기 관절에 대한 관절 회전값이 실수값으로 요구될 수 있다. 이러한 경우, PWM 변환부(311)는 상기 펄스 신호를 실수값으로 변환하여 제공할 수 있다.
인코더(312)는 로봇 제어기(130)에서 생성된 관절 모터에 대한 회전속도, 회전 각 등에 대한 신호를 로봇 모델 시뮬레이터(110)에서 인식할 수 있는 변수 값으로 변환하는 기능을 수행한다. 힘 센서(313), 토크 센서(314)는 로봇의 각 관절에 연결된 링크(link)의 특정 부위 예컨대 끝단에서의 힘, 토크 등에 제어 신호값을 로봇 모델 시뮬레이터에서 인식할 수 있는 값으로 변환하는 기능을 수행한다. 보조부(315)는 로봇의 개발자가 입력하는 별도의 신호에 대한 변환을 수행하는 부분이다.
또한, 가상 디바이스 드라이버(310)는 로봇 모델 시뮬레이터(110)에서 주어지는 소프트웨어적 제어신호에 대한 변수 값을 로봇 제어기(130)가 인식할 수 있는 하드웨어적 제어신호에 대한 변수 값으로 변환하는 기능도 수행한다. 가상 디바이스 드라이버(310)는 DSP(Digital Signal Processing) 프로세서 또는 AVR과 같은 마이크로 프로세서를 통해 구현될 수 있다. AVR은 8비트 RISC MPU(Reduced Instruction Set Computer Micro-Processing Unit)이다.
프로토콜 변환기(320)는 로봇 모델 시뮬레이터에서 사용하는 프로토콜과 로봇 제어기(130)에서 사용하는 프로토콜 간에 변환을 담당하는 부분이다. 예를 들 어, PCI(Peripheral Component Interconnect)방식과 CAN(control area network) 방식, USB(Universal Serial Bus)방식과 CAN 방식, USB방식과 RS485 방식 간 등에서 신호를 각 통신규약에 따른 형식에 맞추어 변환할 수 있다. 프로토콜 변환기(320)는 예컨대, AVR과 같은 마이크로 프로세서를 이용하여 구현될 수 있다.
가상 디바이스 드라이버(310) 및 프로토콜 변환기(320)는 하나의 인터페이스 카드로 구성될 수 있으며, 이 경우 인터페이스 카드는 PCI 소켓에 연결되는 형태로 구성될 수도 있고, USB 단자에 연결될 수 있는 형태로 구성될 수도 있다.
도 4는 본 발명의 일 실시예에 따른 인터페이스 카드의 구성을 나타낸 블록도이다.
인터페이스 카드에서 AVR #0 내지 AVR #n은 각각 CAN #0 내지 CAN #n에 연결될 수 있다. 가상 디바이스 드라이버(310)는 이러한 AVR에 의해 구현될 수 있다. CAN(control network area)은 로봇 제어기(130)와의 통신 방식을 나타낸다. 직렬 통신 인터페이스(Serial Communication Interface, SCI), 주변장치용 직렬 인터페이스(serial peripheral interface, SPI)는 로봇 개발자가 사용하는 보조 장치와의 연결을 위해 배치될 수 있다.
이하에서는 상술한 바와 같이 구성된 로봇 시뮬레이션 시스템을 이용하여 실제 로봇의 제어기를 시뮬레이션하는 방법을 설명한다. 실제 로봇이 인체의 손과 같은 구조로 구성되어 있는 경우 실제 로봇은 다수개의 관절과 각 관절에 연결되어 있는 링크로 구성될 수 있다. 이러한 실제 로봇에 대한 로봇 제어기를 시뮬레이션하는 경우를 가정한다.
도 5는 본 발명의 일 실시예에 따른 로봇 시뮬레이션 시스템을 이용하여 로봇이 제어기를 시뮬레이션하는 방법을 나타낸 흐름도이다.
로봇 제어기는 하드웨어적 제어신호를 발생한다(S510). 예컨대, 로봇 제어기는 각 관절을 구동하는 회전 모터에 대한 인코딩 신호를 PWM 방식으로 생성할 수 있다. 이러한 하드웨어적 제어신호를 인터페이스 모듈로 제공한다. 이 경우, 인코딩 신호는 CAN 방식 또는 RS-485 방식에 따라 전달될 수 있다.
인터페이스 모듈은 하드웨어적 제어신호를 소프트웨어적 제어신호로 변환한다(S520). 예를 들어 인터페이스 모듈의 가상 디바이스 드라이버에 포함된 PWM 변환부는 이러한 PWM 방식의 신호를 로봇 모델 시뮬레이터에서 사용하는 형식의 변수값으로 변환한다. 이것은 로봇 모델 시뮬레이터에 따라 달라질 수 있다.
프로토콜 변환기는 소프트웨어적 제어신호에 대한 프로토콜을 변환한다(S530). 예를 들어, 상기 변환된 변수값은 프로토콜 변환기에서 CAN 방식 또는 RS-485 방식에서 PCI 또는 USB방식의 신호로 변환되어 로봇 모델 시뮬레이터로 전송될 수 있다.
로봇 모델 시뮬레이터는 이러한 소프트웨어적 제어신호를 입력받아 시뮬레이션을 수행한다(S540). 즉, 로봇 모델 시뮬레이터에 포함된 동역학 엔진 등의 소프트웨어를 통해 로봇의 관절의 움직임이 계산되고, 그 결과가 뷰어를 통해 로봇의 개발자에게 시각적으로 표시된다(S550).
마찬가지로 로봇 모델 시뮬레이터에서 로봇 제어기로의 신호 흐름은 상술한 방법의 역순으로 진행된다. 예컨대, 로봇의 개발자는 유틸리티 모듈에 포함된 VRML 뷰어, 분석도구 등을 이용하여 임의의 명령어를 내릴 수 있다. 이러한 명령어는 소프트웨어적 제어신호일 수 있으며, 인터페이스 모듈을 통해 하드웨어적 제어신호로 변환되어 로봇 제어기로 전달될 수 있다.
도 6은 PCI 소켓에 연결되는 형태로 구성된 인터페이스 카드의 실제 구현 예이고, 도 7은 USB 단자에 연결될 수 있는 형태로 구성된 인터페이스 카드의 실제 구현 예이다.
이러한 인터페이스 카드는 데스크 탑, 노트북 등의 컴퓨터에 용이하게 결합되어 사용될 수 있다.
도 8은 로봇 제어기와 로봇 시뮬레이션 시스템을 연결한 모습을 나타낸다.
도 8에서 외부 제어기는 개발하려는 로봇의 로봇 제어기를 나타낸다. 로봇 제어기는 로봇 시뮬레이션 시스템의 외부에 존재하며 하드웨어로 실제로 구현된 것이라는 점에서 본 발명은 로봇용 HILS(Hardware In the Loop Simulation)의 예라고 볼 수 있다.
본 발명에서는 실제 로봇에 사용되는 로봇 제어기를 인터페이스 모듈을 통해 로봇 모델 시뮬레이터에 연결할 수 있다. 즉, 소프트웨어만을 통해 로봇을 시뮬레이션하는 것과 달리 실제 로봇 제어기의 오작동 여부를 시뮬레이션할 수 있다. 따라서, 시뮬레이션과 실제 로봇 제어기의 동작이 다르게 발생할 확률을 줄일 수 있다. 로봇 제어기에 사용되는 CPU와 로봇 모델 시뮬레이터에서 사용되는 CPU가 서로 다른 경우, 예를 들어, 로봇 제어기에서는 ARM 9칩이 사용되고, 로봇 모델 시뮬레이터에서는 인텔사의 범용 CPU가 사용되는 경우, 서로 명령어 체계가 다르므로 소 프트웨어적 시뮬레이션 결과 만으로 실제 로봇의 제어계통이 정확히 동작할 것이라고 판단하기 어렵다. 그러나, 본 발명에서는 실제 로봇의 제어기를 이용할 수 있으므로 이러한 문제가 해결된다.
또한, 시뮬레이션 용으로 제작된 프로그램을 다시 실제 로봇 제어기에 이식한 후 시험하는 방식이 아니라 시뮬레이션 용으로 제작된 프로그램을 이용하여 실제 로봇 제어기를 바로 시험할 수 있다.
이상에서 살펴본 바와 같이 본 발명의 실시예에 대해 상세히 기술하였지만, 본 발명이 속하는 기술분야에 있어서 통상의 지식을 가진 사람이라면, 첨부된 청구 범위에 정의된 본 발명의 범위를 벗어나지 않으면서 본 발명을 여러 가지로 변형하여 실시할 수 있을 것이다. 따라서 본 발명의 앞으로의 실시예들의 변경은 본 발명의 기술을 벗어날 수 없을 것이다.