본문 바로가기

이슈&리포트

로봇 시스템 개발을 위한 로봇 소프트웨어 살펴보기(上)

?로봇 시스템 개발을 위한 로봇 소프트웨어 살펴보기(上)

로봇 시스템 개발을 위해서는 운영체제에서부터 시스템 구성을 위한 시뮬레이션까지 다양한 분야의 소프트웨어들이 필요하다. 이 소프트웨어들은 각자의 영역에서 각자의 역할을 다하며 로봇 시스템 개발에 일조하고 있다. 본지에서는 로봇 시스템 개발과 관련된 다양한 소프트웨어들을 소개하고자 한다. 소개될 각각의 소프트웨어들은 개연성을 떠나 다양한 방면의 로봇 개발자들의 관심을 끌 것으로 예상된다.

 ?

로봇시스템 개발을 위한 실시간 OS ‘ART-Linux’

ART-Linux is…
ART-Linux는 1998년에 Intel의 x86 아키텍처용의 Linux 커널 2.0에 대응한 실시간 OS로서 설계·개발되었으며, 2000년에는 Linux 커널 2.2에 대응한 ART-Linux 2.2, 2004년 Linux 커널 2.4에 대응한 ART-Linux 2.4, 2012년부터는 ART-Linux 커널 3.0으로 계속해서 진화하고 있다.                    
지능로봇의 시스템 개발에 있어서 인식, 계획, 제어의 각 지능에 대해 수개의 라이브러리(Open CV, Open Rave 등)를 다른 주기에 이용하면서 디바이스 드라이버를 활용해 여러 I/O의 입출력을 실행할 필요가 있게 되었으며, 이러한 다양한 기능을 이용할 기회가 많아지고 있다.

ART-Linux 타이머 할입 주기
타이머 할입의 주기(이하 타이머 주기)를 ‘ART=’이라는 인수로 변경 가능하다. 서식은 정수이며, 주기의 단위는 마이크로초(秒)이다. 디폴트는 커널·컨피그레이션(Configuration)의 ART_TICK로 설정한 값이다. 주기의 다음은 콤마(,)로 구분하고 타이머 할입의 근원이 되는 하드웨어를 선택하는 옵션이 있으며, 디폴트는 pit이다. pit를 지정하면 PIT를 선택한다.
art_wait 시스템 콜을 불러내면 태스크의 실행을 정지하고 최초의 불러내는 시간을 기준하여 art_enter 시스템 콜의 인수 usec로 지정한 주기(이하 태스크 주기로 함)에 대해 다음 주기에 도달하는 시각에 기상(起床)하게 하는 기능이 있다.
개별 타이머에 의해 동작하는 복수의 ART_Linux사이에서는 art_adujust 시스템 콜에 의해 타이머 사이의 위상차를 제어할 수 있다.
다음의 타이머 할입 시각을 인수 usec 마이크로초 늦게 설정한다. 안수 usec에 마이너스 값을 지정하는 경우 기준시각을 빠르게 설정할 수 있다. 인수 usec의 절대치는 타이머 할입 주기의 1/2 미만이어야 한다.

cats.jpg
ART-Linux의 문제 처리 우선도 설정
ART_Linux는 우선도 역전문제를 해결하기 위한 우선도 승계기구를 갖추고 있으며, 우선순위에 따라 실시간 처리를 실현하고 있다. 그러나 실제의 시스템에서는 낮은 우선도 태스크가 블록이 되었다는 자체를 인식한다는 것은 시스템 장애요인을 제거하기 위해 본질적으로 중요하다. 
ART_Linux에서 디바이스·드라이버의 할입 핸들러를 실시간/태스크 주기로 실행한다. 이들 태스크의 실행주기와 우선도를 변경하는 것이 가능하며, 할입 핸들러를 실행하는 실시간 태스크의 실행주기와 우선도의 값은 /pro/sys/kesrnel/ART/irq_status를 읽어 얻고, _control에서 변경한다.
여기서 논의하는 ART_Linux의 브런지는 실험적으로 개발한 것으로 공개되지 않았으며, 다만 확장 가능한 분야에 대한 예를 들자면, 르네사스社 제품인 SH-4 CPU에 대응한 ART_Linux를 개발했고, SH7751R은 이더넷 상에서 휴머노이드 로봇 HRP-3P의 체내 분산 I/O 시스템으로 이용되고 있다.

ART-Linux의 현재
x86 아키텍처를 64bit 확장한 AMD64 명령 셀에 의한 Linux에 대응되는 ART_Linux 커널을 Ubuntu 8.04 대응의 linux 2. 6. 24를 베이스로 개발됐다. 통상의 ART_Linux에서는 실시간 주기 태스크를 우선하기 위해서 할입 주기 핸들러에 주어진 주기는 1ms이지만 변경해 할입 처리하고 있다.
ART_Linux는 로봇을 개발할 때 여러 고유 주기로 실행되는 태스크가 계산기의 리소스를 실시간으로 이용하기 위해 설계·개발 된, Linux를 변경한 실시간 OS로, Linux 상의 다양한 어플리케이션과 디바이스 드라이버를 동작할 수 있다.
싱글 프로세서로 동작되는 ART_Linux는 로봇 시스템을 실현하는데 있어서 특히 유효한 기능을 갖고 있다.
2013년 3월 공개된 최신의 ART_Linux는 복수 코어를 기존 SMP_Linux와 AMP_Linux방식의 각 코어에 개별 바인드된 실시간의 ART_Linux가 고유 메모리로 결합된 시스템의 실현이 가능하다.

사회적 지능연구를 위한 시뮬레이션 플랫폼 ‘SIG-Verse’      

SIG-Verse is…
지능로봇의 개발을 위해서 인간의 지능 메커니즘을 알아야 하는 것은 하나의 유력한 수단이다. 인간과 같이 복잡한 시스템에서는 지능의 원리를 해명하기 위해 신체와 환경의 물리적 상호 작용과 사회적 상호적용 등 많은 주변 분야의 이해와 지식이 필요하며 종래의 환원적 접근이 아닌 로봇이나 시뮬레이션 등을 이용한 구성론적·계산론적 접근에 근거한 논의가 중요하다.
시뮬레이션 플랫폼 SIG-Verse는 이러한 사회적 지능연구를 위한 도구로 개발됐다. 
              
가상계와 실존계가 공존하는 SIG-Verse
이 시스템은 복수의 로봇 에이전트가 서로 커뮤니케이션을 하고, 복수의 실제 사람과 동시에 사회적 상호작용을 시뮬레이션하는 것을 목적으로 복수의 클라이언트가 몰입형의 유저 인터페이스를 이용해 동시에 동일 가상세계에 로그인하는 네트워크 인터페이스를 로봇 시뮬레이터에 탑재한 것이다.
역학 시뮬레이터는 ODE(Open Dynamics Engine)를 사용하고 있으며 각 물체·에이전트간의 상호작용을 시뮬레이터 한다. 시뮬레이터 되는 지각 형식은 시각, 청각, 역각이 있다. 시각 시뮬레이션에서는 에이전트 시점·시야에서 얻는 화상의 픽셀 맵(Pixel Map)을 제공할 수 있으며 물체의 모양, 크기, 위치, 명칭, ID 번호와 같은 속성치를 얻을 수 있다.
에이전트끼리 커뮤니케이션은 지각 시뮬레이션에 의한 제스처나 음성 커뮤니케이션이 가능하다. 가상환경 속에서 에이전트끼리 커뮤니케이션뿐만 아니라 가상환경과 실세계의 유저사이에 상호작용 기능도 제공되고, 시뮬레이터에 접속하기 위한 클라이언트 시스템에는 GUI, 마이크, 스피커의 인터페이스가 구축되어 있으며, GUI에 의해서 가상 에이전트 사이에 코만도를 송수신하거나 음성 대화를 나눌 수 있다.   
또한 가상세계 속에서 로봇과 실세계 사용자 사이에 사회적 대화실험을 수행하는데 필요한 인터페이스 기능을 가지고 있는 SIG-Verse 클라이언트(SIG Viewer)를 통해 서버 내에서 일어나는 상황을 관찰하지만 클라이언트에 접속된 유저 인터페이스로 가상세계에 대한 간섭도 가능하다.

SIG-Viewer 유저 인터페이스
사용자는 각자가 구축한 가상세계에서 필요한 유저 인터페이스를 SIG-Viewer에 플러그인 형식으로 추가함으로써 가상환경과 상호작용을 실현하게 된다.
표준의 유저 인터페이스로는 키보드에 의한 텍스트 입출력이 있으나, Kinect에 의한 전신동작패턴과 HMD에 의한 몰입형 인터페이스가 있다. 이는 HMD에는 파노라마 틸트 방향의 두부 경사를 검지하는 센서가 탑재됐으며, 센서에서 얻은 센서 정보를 SIG-Viewer에 전달함으로써 아바타 두부의 움직임을 제어한다. 사용자의 전신운동을 가상세계의 아바타에 반영하기 위한 인터페이스로 Microsoft Kinect용의 인터페이스 플러그인이 제공됐다.

RoboCup@Home을 통해 살펴본 SIG-Viewer
RoboCup@Home은 인간과 대화가 가능한 서비스 로봇에서 청소나 물건을 주고받는 서비스 행동의 질을 다투는 경기로 지금까지는 실기 형식의 로봇 경기뿐이었으나 축구, 인명구조와 같은 시뮬레이션을 실행함으로써 인간-로봇 상효작용 고도화의 개발 코스트를 삭감하고 더욱 효율적으로 발전했다.
RoboCup@Home의 규정집에 규정된 것 외에도 취지에 따른 내용으로 SIG-Viewer를 사용함으로써 비교적 쉽게 실현 가능한 테스크를 생각할 수 있는데 그중 하나가 요리하는데 협조하는 작업이다. 요리를 도우는 행동은 로봇이나 에이전트의 연구에서도 취급하는 도메인이기도 하다.
SIG-Viewer 시스템은 서버 클라이언트 형식의 시스템으로 되어있으며. 서버는 Linux로 동작된다. 중앙집권적으로 전체적인 에이전트 및 사용자의 정보를 관리하고 있으며, 각 사용자는 Window 클라이언트 어플리케이션을 통해서 서버에 접속한다.
SIG-Viewer는 대규모이며 장시간의 사회적·신체적 상호작용의 실시에 착안한, 막대한 코스트 부담 없이 성립시킬 수 있는 연구 플랫폼이다. 몰입형 인터페이스를 추가해 서버에 복수의 클라이언트가 접속되는 성질을 이용해서 RoboCup@Home의 애플리케이션이 실장 가능함을 보여주고 있다.
*본 원고는 지면상의 이유로 재편집되었으며, 원문 열람 희망 시 이메일(makyuha@chol.com)로 문의주시기 바랍니다.
2.jpg

※ 출처 : EngNews (산업포탈 여기에) - 로봇 시스템 개발을 위한 로봇 소프트웨어 살펴보기(上)