지능로봇에 사용되는 소프트웨어가 성장하고 있는 가운데, 시뮬레이터, 로봇 계산 라이브러리 패키지 등은 현재까지 사용되었던 것에 반해 멀티코어, 클라우드 등 새로운 계산환경 대응 사례가 증가되고 있다. 모듈형 소프트웨어와 통신 기구를 관리 제어하는 복수의 계산기를 통일적으로 취급하게 되었으며, OS나 계산기에 의존하지 않는 멀티 플랫폼화나 오픈 소스화에 의해 이용자가 급격히 증가하는 추세이다.
1. 지능로봇의 소프트에어
지능로봇의 소프트웨어에는 1)로봇을 활용하는 방법을 생각하기 위한 것 2)로봇의 행동을 실행하기 위한 것 3)행동의 실행 상태를 감시하기 위한 것 4)행동 실행을 시뮬레이션 하기 위한 것 5)프로그램을 테스트하고 서류를 작성하기 위한 것 6)이러한 소프트웨어를 사람이 생성 편집하기 위한 것 등이 있다.
우선 로봇을 활용하는 방법을 생각하기 위한 소프트웨어는 정리된 시스템이 이미 있다는 뜻이 아니며, 계산기 프로그램이 실리는 방법을 생각하는 것도 아니다. 이는 사람이 조사해 디자인하는 것 자체가 소프트웨어에 해당하는 것을 뜻한다. Web에서는 고객의 기호를 알아서 고객에 특화된 대응이나 기호를 생각해 권고하는 기술(記述)을 사용하고 있다.
행동을 실행하기 위한 소프트웨어는 로봇의 행동기능을 구성하는 소프트웨어로 하드웨어를 실시간 처리리는 최하층, 이를 활용하는 중간층, 이를 통괄하는 최상위층의 3개 층으로 나누어 생각하면 쉽다. 중간층은 재활용성, 다종복수 계산기 대응의 필요성 및 부품활용을 위해 모듈화 형식을 취하는 것이 많아졌다.
중간층을 모듈화하면 최상위층도 중간층과 같은 모듈의 하나가 되지만, 모듈의 생성·관리 기능도 최상위층의 역할을 한다. 모듈 간 통신은 비동기 통신이 가능하며, 최상위층이 다른 모듈로부터 호출되는 콜백 기구 등에 의해 최상위에 비동기의 인터럽트가 걸리는 병열기구가 가능하다는 것이 특징이다.
▲ 한국에서도 로봇 소프트웨어의 오픈 플랫폼화를 위해 OPRoS 사업이 진행 중이다.
2. 행동의 기술(記述)
로봇의 태스크 행동의 기술은 레벨을 생각할 필요가 있으며, 동작 레벨에서 물체 조작, 물체 간 관계상태, 환경상태·목적상태 기술 등의 상위레벨을 생각할 수 있다. 레벨의 다른 언어를 설계하려면 로봇용의 전용 언어를 생각하게 된다. 계산기 용어분야에서는 특정 영역의 문제를 기술하는 전용 언어를 DSL(Domain Specific Language)이라고 부른다.
DSL은 처음부터 만드는 것이 아니고 범용언어의 매크로 기능 등을 사용해 언어문법이나 기술하는 형식을 자유롭게 설정할 수 있는 범용언어라면 DSL이라 정의할 수 있으며, 새로운 독자의 로봇언어를 실장할 수 있다. Lisp(List Processing)는 이러한 확장기능을 가진 언어의 하나이다.
한편 DSL을 개발의 중핵에 두려고 하는 언어지향의 프로그래밍 LOP(Language-oriented Programming)라는 생각 방식도 생기게 된다.
LOP에서는 (A)컴파일러로서 실장하는 외부 DSL과 (B)라이브러리로서 실장하는 내부 DSL, 그리고 (C)통합개발 환경으로서 실장하는, 흔히 워크벤치형이라고 말하는 영역특화 언어를 어떻게 실현하는가에 대해 논의되고 있다.
로봇 언어도 DSL이라고 한다. 초기 로봇언어는 (A)로 발전해 범용계산기 언어상의 (B)가 근래에 사용되고 있으며, Eclispe 등의 프로그래밍 통합 환경에 편입된 형태로 Open HRP나 Open RTM이 제공되고 있는 것은 (C)의 어프로치라고 할 수 있다.
기술레벨을 의식해 추상화된 기술레벨을 다루는 (A)의 언어가 아닌, 범용언어에 로봇 조작용 라이브러리를 추가하는 (B)의 방법은 범용언어 자체가 갖는 기술레벨에 대해 로봇용의 기능을 추가함으로써 다른 레벨의 행동 기술도 가능하게 된다. 또한 범용 언어가 진화된 새로운 언어로 발전되기도 해 여러 라이브러리가 보급되고 있는 언어를 사용해 로봇의 행동을 기술하는 경우가 많다.
서로 다른 언어로 기술한 모듈을 선언하는 것만으로 호출할 수 있는 기능은 타 언어 인터페이스(FFI ; Foreign Function Interface) 기능이라고 한다. FFI 기능을 가지고 오브젝트 클래스 환경 기하 모델을 갖는 Lisp 언어인 EusLisp는 DSL을 생성하기 쉬운 매크로 기구와 클래스 시스템, FFI 기구를 갖춤으로써 로봇 몸체나 환경을 가상해 표현·조작할 수 있다. 또한 실제 로봇과 가상로봇을 같이 취급하는 인터페이스를 설치함으로써 실제 몸체와 가상몸체를 같은 형식으로 취급할 수 있다.
초기의 로봇 언어는 (A) 어프로치로 특별 문법을 설치해 물체 간 관계나 환경상태를 기술했지만 CAD나 가상환경기술 언어인 VRML의 확장이나 게임, CG분야의 업계표준상호교환 형식인 XML베이스의 COLLADA 등이 설계돼 로봇에서도 나름대로 데이터 액세스 기술자를 이용해 (B)가 발전 되고 있다.
행동의 기술은 실행 시스템이 처리되는 형태로 분해된다. 로봇언어에서는 컴파일러가 이를 실행한다. 분해된 코드에 추가해서 시스템이 자동적으로 동작계획, 환경모델 조작, 동작 전후의 감각 확인 처리 등을 포함시킨다. 이에 따라 고객은 그 처리를 기술할 필요가 없게 된다.
3. 목적의 획득
로봇의 행동실행시스템의 최상위층은 인간으로부터의 목적을 받아주는 모듈과 스케줄러로 부터 이루어진다. 목적은 적절한 UI에 의해 주어지고 환경상태와 목적상태의 차이로부터 환경조작의 목적행동이 생성된다.
UI에는 음성, 손가락 등으로 지령, 로봇의 몸체를 직접 지도하는 교시, 인간이 행하는 행동을 관찰하면서 자기의 몸체로 재현하고자 하는 반응 등 다양한 교시 형태를 생각할 필요가 있지만 시스템이 UI로부터 얻은 정보를 일단 그 의도의 범주를 해석해 개개의 로봇이나 환경 상황에 맞는 행동을 계획 생성한다는 구성법이 대인 교시의 전체 구조가 된다.
▲ 사진. Siemens PLM Software
4. 주목 대상과 조작법의 획득
인간이 UI를 통해 의도를 로봇의 행동목적으로 전달해 로봇이 그 의도의 범주를 해석해서 로봇 행동의 목적을 결정해간다. 행동의 목적이 결정되게 되면, 목적을 위해 필요한 주목대상이 결정되고, 주위의 시간적 변화를 순서에 따라 기술하는 코드 시스템으로 전체가 일할 필요가 있다.
로봇이 스스로 지도를 만들고 자신이 어디에 있는지를 아는 기능이 있다면, 이는 로봇이 획득한 지도기억 가운데 인간이 조작 정보를 알려준 것을 로봇이 생각해서 이동하고, 후에 그 조작을 실행했으면 좋겠다는 생각만으로 해당 장소에 가서 조작을 실행하는 사용 방법이다.
한편 SLAM(Simultaneous Localization Mapping) 기능을 로봇이 갖는다면, 로봇이 사람에 대한 움직임, 환경지도를 생각하면서 이동하고, 사람이 생각해두면 좋겠다고 인식하는 장소에서 주목대상과 조작방법을 가르친다는 형식으로 로봇의 재이용 가능한 교시를 할 수 있다.
5. 계획 생성의 포함
최상위층에서의 행동기술의 수순 분해에 있어서 로봇의 동작궤도 생성을 상위에서 분해할 것인가, 실행 시에 분해할 것인가는 상황에 따라 변한다.
동작계획 기능 구성의 예로 Open RAVE에서 Pick-and-Place시스템의 구성에서 대상물과 그것을 집는 핸드의 형상을 알고 있으면 대략 그 대상물에 대해서 집기 가능한 위치를 자세 후보로 이해하고 대상물의 목표상대를 정할 때 암의 역운동학을 계산, 환경에 충돌하지 않지만 암의 가동범위 내에 있는지를 집기 가능 후보마다 조사해 문제가 없는 후보에 대해서 환경에 충돌하지 않는 암의 궤도를 RRT법에 의해 해결하는 방법이다.
6. 인식처리의 포함
동작계획 이외의 환경상태를 모델에 기초해 확인하는 처리를 하나하나씩 태스크 수준으로 기술할 필요가 없다. 계산기 과학에서 데이터 구동은 사고방식으로부터 데이터를 어떻게 처리할 것인가에 대한 정보는 데이터가 갖고 있고, 시스템측은 데이터가 갖는 처리를 실행한다는 처리만을 기술하면 시스템 측에 데이터 마다 나눌 필요가 없게 된다.
개개의 동일한 데이터에서는 같은 특징을 가지기 때문에 공통 요소의 처리를 공유화하는 클래스를 만들어 해당 클래스 내에 공유화되는 일반화된 처리 프로그램을 준비하게 된다.
7. 상황판정과 제어기구의 포함
대상물의 존재를 확인하는 처리가 된 후에는 조작 전후에 그 장소가 목적 상태의 범위에 들어 있는지 여부의 상환 판단과, 목적상태로 되어 있는 경우 동작의 유지 및 중지 여부의 제어판단이 필요하다.
다시 동작할 경우 같은 동작으로 움직일 것인지 혹은 조금 바꿔서 할 것인지, 할 수 있을 때까지 다시 해 볼 것인지 등 몇 가지 제어를 위한 파라미터가 생성된다. 재동작은 파라미터를 변경시킴으로써 시행착오를 행하는 학습행동으로 연결된다.
조작학습과 같이 성공사례와 실패사례를 생각해 상황판단에서 판단이 로버스트(Robust)성을 높여나가는 구조를 포함하는 것도 학습을 위한 기구를 포함하는 것과 연결된다. 결과의 판단만이 아닌, 일어날 상황을 예측해 실패확률이 적은 방법을 선택하는 등의 계획처리도 계획, 상황판단, 제어의 매립화 속에 취급하게 된다.
8. 결론
로봇 프로그램을 증대시키면 로봇이 할 수 있는 범위가 증대되는 것은 당연하지만, 프로그램을 증대시키지 않고 로봇이 할 수 있는 것을 증대시키는 것이 중요하고, 추상화, 일반화, 매립화가 필요하게 된다.
오픈 소스 소프트웨어를 이용하는 경우, 다양한 장점이 있지만 반면 소프트웨어 갱신에 의해 작동되던 로봇이 작동하지 않는 경우가 쉽게 발생한다. 계산기 분야에서는 자동적으로 테스트하는 환경을 구축하기 위한 계속통합(CI)환경을 만들기 위한 시스템이 개발, 보급되고 있으며, 지능로봇의 소프트웨어 분야에서도 이러한 사례가 일층 필요하고, RTM과 ROS의 상호 운용환경에서 실행하게 된다.
지능로봇의 소프트웨어에서는 계산기 과학 분야에서 발전되고 있는 방법론이나 스마트폰 등과 같이 사용자나 활용하는 사람이 급격히 다양화되고 있는 정보시스템 등의 새로운 움직임을 자연히 활용할 수 있는 체계가 이전보다 중요시되고 있다고 할 수 있다.
*본 원고는 지면상의 이유로 재편집되었으며, 원문 열람 희망 시 메일(makyuha@chol.com)로 문의주시기 바랍니다.
<출 처>
稻葉雅幸 ‘知能ロボットのソフトウェア’, 日本ロボット學會誌, 30(9), 2012, pp.824∼829