배너
닫기
배너

[로봇, 인공지능 그리고 SW 플랫폼(1)] 기계 학습, 데이터 및 SW 플랫폼

  • 등록 2018.07.30 11:10:29
URL복사
[선착순 마감임박] 우리 기업에 꼭 필요한 AI를 활용해 비즈니스를 확장할 수 있는 방법은? AI융합 비즈니스 개발 컨퍼런스에서 확인하세요 (5/3, 코엑스3층 E홀1~4)

현재 인공지능 기술, 특히 기계 학습(machine lear-ning) 기술이 많은 분야에 적용되고 있다. 역시 로봇 분야도 예외가 아니다. 로봇 분야에 다양한 형태로 기계 학습 기술을 포함한 인공 지능 기술이 적용되고 있다. 실제로 국내에서도 로봇 분야에 기계 학습 관련 기술 적용에 대해 많은 연구를 하고 있다. 본 연재에서는 로봇에 적용되는 기계 학습 관련 기술과 기계 학습 기술을 효율적으로 적용할 수 있는 SW 플랫폼 기술에 대해 논의해보고자 한다. 이를 위해 국내외에서 진행하는 딥 러닝 기술과 SW 플랫폼에 대한 문제점을 분석하고 이에 대한 해결방법도 모색해보고자 한다. 이에 따라 각 연재에서는 다음과 같은 주제를 가진다.


• 기계 학습, 데이터 및 SW 플랫폼

• SW 플랫폼

• 기계 학습과 학습 구조 

• 기계 학습과 SW 플랫폼


▲ SW 플랫폼의 등장으로 로봇 기술이 전문가들만 참여하는 분야에서 다양한

사업 참여자들이 더욱 쉽게 참여할 수 있는 길이 열리게 되었다.


로봇을 위한 SW 플랫폼


로봇을 위한 SW 플랫폼을 먼저 설명을 한다. 로봇 SW 플랫폼이란 사용자 혹은 개발자들이 로봇 또는 로봇 응용을 쉽게 개발할 수 있도록 하는 도구를 말한다. 이러한 SW 플랫폼의 구성 요소는 크게 미들웨어와 통합개발환경으로 나눌 수 있다. 


이미 플랫폼의 중요성은 여러 상용 플랫폼에서 입증되고 있다. 예를 들면, 안드로이드 플랫폼, i-phone 플랫폼, 구글 맵스 플랫폼, 자바 플랫폼 등 많은 플랫폼을 통하여 플랫폼이 가지고 있는 힘을 알 수 있다. 이러한 플랫폼들은 모두 공짜로 알고 있지만, 어느 정도 사업화가 되고 사용자가 충분히 많다고 생각하면 모두 유료화가 되고, 플랫폼 사용료도 다양한 형태로 진화한다. 


로봇 또한 SW 플랫폼이 매우 중요하다. 로봇 관련 제어 기술보다 훨씬 늦게 로봇 SW 플랫폼 관련 기술들이 나왔지만, 사용의 편리성과 개방성 때문에 현재 이에 대한 활용이 증가하고 있다.


SW 플랫폼의 등장으로 로봇 기술이 전문가들만 참여하는 분야에서 다양한 사업 참여자들이 더욱 쉽게 참여할 수 있는 길이 열리게 되었다. 즉, 기존 로봇 분야에서는 일부 전문가들만 로봇 사업을 할 수 있었지만, 현재는 로봇 제어기술을 모르지만 서비스 분야를 개발할 수 있는 사람들도 참여할 수 있어 다양한 형태의 로봇 사업을 할 수 있다. 


로봇 SW 플랫폼도 여러 형태로 나눌 수 있는데, 가장 중요한 기능은 사용자에게 ‘편리한 기능을 제공해야 한다’는 것이다. 이러한 관점에서 보면 스크래치(SCRACH)[1] 역시 플랫폼의 하나라고 생각할 수 있다. 스크래치 관련 기술을 개방하여 아이디어를 가진 새로운 시장 참여자들을 모으고 새로운 기술들을 창출하고 있기 때문이다. 그러나 스크래치는 코딩 교육용으로 개발된 것이며, 이를 활용하여 산업용 로봇 혹은 서비스 로봇을 개발하기에는 어렵다.


본 연재에서는 산업용 로봇 혹은 서비스 로봇을 개발할 수 있는 로봇 SW 플랫폼 기술들에 대해 살펴본다. 이러한 SW 플랫폼에는 ROS(Robot Operating System)[2], OPRoS(Open Platform for Robotic Services)[3], openRTM(Robot Technology Middleware)[4], OROCOS(Open Robot Control Software)[5] 등이 있다. SW 플랫폼들은 다음과 같이 분류될 수 있다.


SW 플랫폼 기술이 나타난 배경은 로봇 SW의 모듈/컴포넌트 기술의 활용으로, 기존 로봇 개발 시 통합적으로 개발한 것을 모듈/컴포넌트별로 분리해 개발하여 사용하게 한다. 이를 통하여 개발자 혹은 사용자는 모든 모듈을 개발하는 것이 아니고 필요한 SW 모듈만 개발하고 나머지 SW들은 기존 공개된 모듈을 재사용성(사실 소스 코드 관점의 재사용성임) 하고자 하는 것이다.


로봇 SW 플랫폼의 공통 요구 조건은 다음과 같다.


•‌ 실시간 서비스를 제공하여야 한다. 특히 주기 서비스를 제공하여야 한다.

• SW 모듈 간 데이터 통신 서비스를 제공하여야 한다.


그러나 이를 구현하는 방법에 있어서 ROS와 다른 3개 플랫폼과의 차이가 존재하는데 표 1에 표시되어 있다. 참고로 ROS 2.0은 다른 미들웨어처럼 통신 미들웨어와 실시간 스케줄러를 통합한 내용을 발표하기로 하였는데, 아직 발표되고 있지 않은 것 같다. 


▲ 표 1 로봇 SW 플랫폼의 비교


참고로 현재 IT 분야에서의 대부분 SW는 컴포넌트형으로 개발되고 있다. 컴포넌트형의 장점은 인터페이스만 외부로 공개되기 때문에 유지보수가 쉽다는 장점이 있다. 따라서 컴포넌트형으로 진행하면서 이 기술들은 하나의 기술로 병합이 예상되지만, 시기는 빨라질 수도 늦어질 수도 있다. 


로봇 SW 플랫폼의 가장 중요한 기술은 ‘안전’


현 로봇 SW 플랫폼에서 간과하고 있지만, 가장 중요한 기술이 안전(safety) 기술이다. 이 안전 기술은 사람을 상해하지 않도록 하는 기술이어서 보안(security) 기술도 포함한다. 보안 기술은 해커가 로봇 시스템을 해킹하여 원하지 않는 로봇 동작을 하게 할 수 있고, 로봇에서 발생한 데이터들을 수집할 수 있기 때문에 인터넷에 연결된 로봇일수록 반드시 운영해야 하는 기술이다. 


현 로봇 SW 플랫폼 기술들을 요약하면 다음과 같은 기술들의 집합으로 볼 수 있다.


•‌ 로봇 SW 모듈/컴포넌트들을 효율적으로 운영하게 하는 기술

•‌ 로봇 모듈로부터 들어오는 정보를 분석하여 사람을 안전하게 보호하는 기술

•‌ 로봇 동작을 응용에 맞게 실시간으로 동작하게 하는 기술

•‌ SW 모듈 간 데이터 교환을 원활하게 하는 기술(통신 미들웨어 기술)


이러한 기술들은 그림 1과 같은 구조로 나타낼 수 있다. 이러한 구조는 현재 ISO TC299 WG6 서비스 로봇 모듈화 분과에서 논의되고 있다. 그림 1에서 BSM은 Basic SW Module, CSM은 Composite SW module을 의미한다. BSM은 더 이상 나눌 수 없는 모듈을 말하고, CSM은 BSM의 조합으로 구성된다.


▲ 그림 1 SW 모듈과 SW 플랫폼 간의 관계


실행 콘텍스트는 하나의 Control task와 여러 개의 SW 모듈들로 구성되어 있으며, 이 실행 콘텍스트는 하나의 프로세스로 동작하며 하나의 로봇에는 여러 개의 실행 콘텐스트들이 동작할 수 있음을 보여 주고 있다. Control Task가 앞에서 언급한 일종의 실시간 스케줄러의 기능을 포함하여 BSM과 CSM들을 사용자가 설정한 내용에 따라 제어한다. 프로파일은 CSM 혹은 BSM마다 하나씩 존재하며 이 프로파일 정보를 사용하여 해당 모듈의 제어 방식(주기/실시간 비주기/비실시간 실행 여부, 주기 구간 등)을 결정한다.


모듈 간 통신은 내부 모듈 간 통신과 외부 모듈 간 통신으로 나눌 수 있는데, 서버/클라이언트 방식, 공유 메모리 방식, 출판자/가입자(publish/subscribe) 방식을 지원한다. 어떤 방식으로 통신을 지원하느냐 역시 프로파일에 저장해야 한다.


안전/보안 매니저는 모든 실행 콘텍스트를 모니터링하고 있으며 이에 따라 안전 여부와 해킹 여부를 판단하여 처리할 수 있게 하여야 한다. 관련 상세 내용은 다음 연재에서 설명할 예정이다.


기계 학습의 핵심은 ‘데이터’


그러면 기계 학습 기술과 SW 플랫폼에 대해 생각해보기로 하자. 기계 학습 기술은 순수 SW 모듈 혹은 엔비디아와 같은 보드를 활용할 수도 있지만, 2가지 방법 모두 프로세스로 동작한다. 따라서 기계 학습 모듈의 수행은 그림 1의 실행 콘텍스트가 동작하는 것으로 간주할 수 있다. 기계 학습 모듈의 실행 결과를 다른 실행 콘텍스트의 SW 모듈들이 다양한 통신 수단에 의해 공유할 수 있다. 그러면 기계 학습 기술이 무엇인지를 살펴볼 때가 되었다.


온라인 강의의 하나인 Coursera에서 Andrew Ng은 기계 학습에 대해 다음과 같이 말했다. 


“고전적인 컴퓨터 프로그래밍의 복잡성은 코드(사람들이 작성하는 프로그램)에 있다. 기계 학습에서는 알고리즘(프로그램)은 원칙적으로 단순하며 그 (구조) 복잡성은 데이터에 있다. 그 구조를 자동으로 배울 수 있는 방법이 있는가? 그것이 바로 기계 학습의 핵심이다.”


이 내용에서 가장 중요한 것은 ‘데이터’라는 것이다. 데이터가 없다면 기계 학습을 하지 못한다는 말인데, 국내에서는 이 내용을 매우 가볍게 생각하고 있는 것으로 보인다. 즉, 데이터를 가볍게 생각하면 기계 학습 기술을 할 이유가 없는 것이다. 데이터의 질과 양에 따라 기계 학습 기술의 수준이 달라지는데, 국내 대부분 분야에서 데이터에 대한 공유 혹은 공개를 하지 않듯이 로봇 분야에서도 같은 상황이다. 국내의 로봇 분야에서 이러한 상황을 타개하지 않고 기계 학습 기술을 한다는 것은 ‘깨진 독에 물을 붓고 있는 상황’으로 간주할 수 있다.


잘 아시다시피 좋은 품질의 데이터를 만든다는 것은 매우 힘들고 비용이 많이 소모되지만 이에 대한 정부의 지원도 미비하다. 물론 기계 학습 기술에 대해 지원을 하고 있지만, 기계 학습 기술이 중요한 것이 아니고 좋은 품질의 데이터를 생성하고 이를 공유하고 유지·보수해야 하는 것이 중요하다는 관계자 모두가 이해할 필요가 있다. 물론 정부 차원에서 공공 빅데이터 센터를 설립하는 등 많은 노력을 기울이고 있지만, 이러한 노력만으로는 보다 전문적인 분야의 빅데이터들을 구축할 수 없다. 사실 지금 현재처럼 기계 학습 관련 과제가 수행되고 있는 것은 정부 과제의 평가 혹은 과제 기획에서 문제가 있을 수도 있다. 


고전적인 프로그래밍 방법의 개념적 모형과 Andrew Ng의 기계 학습 기술의 개념적 모형은 각각 그림 2와 그림 3과 같이 만들 수 있다. 


그림 3에서 보듯이 기존 방식에 해당되는 프로그램은 기계 학습 방식에서는 데이터에 의해 생성됨을 알 수 있다. 이 내용을 뒤집어 보면, 데이터들이 없거나 그 양이 적다면 기계 학습에 의해 생성된 프로그램의 동작이 제한적이거나 원하는 방향으로 동작이 안 될 수 있다는 것을 의미한다.


그림 2와 그림 3의 입력(input)은 센서로부터 들어오는 데이터이며, 출력(output)은 프로그램에 의해 생성되어 결과로써 모터 출력 혹은 영상, 음성의 인식 결과 등일 수 있다. 사용되는 센서 종류는 매우 다양하며, 예로써 레이저 센서, 초음파센서, 카메라 센서, 3D-깊이 센서, 접촉 센서 등 다양하다. 출력 구동기로는 모터(AC, DC, 스테핑 등), 유압, 공압 등이 있으며, 다양한 형태의 디스플레이 장치와 스피커 등이 있다. 


▲ 그림 2 고전적인 프로그래밍의 모형


▲ 그림 3 기계 학습의 모형


그림 3을 보면 기계 학습을 위해서는 양질의 데이터 축적이 중요하다는 것을 의미한다. 또한, 데이터 축적뿐만 아니라 데이터에 가치를 제공하는 것이 필요하다. 사실 우리는 많은 데이터를 가지고 있지만, 이를 활용하는 것은 매우 어렵다. 이는 해당 데이터에 가치를 부여하지 못하고 있기 때문이다. 실제로 데이터를 축적하는 것과 기계 학습을 위한 데이터를 축적하는 것은 많이 다르다.


그림 3에서 보듯이 기계 학습을 위한 데이터는 입력과 출력간의 관계가 명확해야 한다. 이러한 관계에서 관련 프로그램이 컴퓨터 내에서 생성되는데, 출력 혹은 입력 항목이 하나라도 변경이 되면 프로그램이 변경이 된다. 따라서 기계 학습에 필요한 적절한 형태의 데이터 생성이 중요하다. 이러한 데이터를 만들고 활용하는 데는 다음과 같은 문제들이 존재한다. 이러한 문제들을 해결하여야 기계 학습 기술이 보다 성장할 것으로 생각된다. 물론 로봇 분야에서도 같다.

 

•‌ 데이터의 수집과 적절한 분석·처리의 고비용 문제 : 국내 실정에 맞는 데이터 통합, 데이터 관계(예 : 입력과 출력) 정리 등 

• 데이터를 처리(수집, 분석)하기 위한 전문가의 부족

• 많은 데이터에서 활용 가능한 데이터들의 선택이 어려움

• 사용 가능한 데이터 품질이 낮음


현재 많은 분야에서 인간의 삶을 도와주는 로봇들을 개발하고 있다. 서비스 로봇은 안내, 수술, 의료 보조, 배달/물류, 농업 지원 등의 분야에 활용되며, 제조 로봇은 공장 내에서 물류, 조립, 용접 등의 분야에 활용되고 있다. 물론 이러한 분야에도 세부적으로 들어가면 많은 분류로 나눌 수 있다. 예를 들면, 전자 부품 조립이라도 케이블 조립과 이형 부품의 PCB 조립은 완전히 다르다.


먼저 보유하고 있는 데이터들을 활용하여 기계 학습 모델을 만들고 운영한다. 또한, 데이터들은 계속 축적이 되므로 축적되는 데이터들을 활용하여 온라인 학습을 수행하여 성능을 향상시킬 수 있어야 한다. 물론 다양한 학습 모델에 의한 학습 결과들도 빅데이터 시스템에 축적되어 다음에 활용하는 사람들에게 정보를 제공할 필요가 있다. 이러한 내용이 그림 4에 표시되어 있다.



하나의 로봇이 안내, 배달과 조립을 하기 위해서는 이들에 대한 데이터들을 모두 동시에 수집해야 한다. 이러한 데이터들을 동시에 수집하기 위해서는 각각 수집하는 것보다 훨씬 많은 조합이 존재하기 때문에 더욱 많은 데이터가 수집되어야 정상적인 기계 학습 동작을 수행할 수 있을 것이다. 


그러나 안내, 배달, 조립 동작이 하나의 로봇에서 동시에 하지 않는다고 하면(사실 그럴 가능성이 매우 높지만) 안내용 데이터, 배달용 데이터, 조립용 데이터를 관련 로봇에서 수집하고 기계 학습을 하여 관련 프로그램을 생성하여 동작시키면 된다. 그런 후 배달 서비스가 필요하면 배달용 기계 학습 프로그램을 다운로드하여 동작시키고 안내 서비스가 필요하면 안내용 기계 학습 프로그램을 다운로드하여 동작시키는 형태로 만들면 된다. 이때 필요한 것이 각 필요에 따라 기계 학습 프로그램을 요청하고 다운로드 받아 실행하도록 하는 기능이 필요하다. 이러한 기능들을 SW 플랫폼에 같이 장착하여 동작시킬 필요가 있다.


또한, 현재 기계 학습 프로그램을 안전 영역까지 적용하려는 시도가 존재하는데, 이러한 기술도 필요하지만, 아직 기계 학습 프로그램이 100% 안전을 보장할 수 없기 때문에 안전 관련 영역은 다른 기능으로도 해결해야 하는 부분이다.


맺음말


지금까지 로봇용 소프트웨어 플랫폼과 기계 학습 기술의 현황과 문제점들을 살펴보았다. 특히 기계 학습 기술을 체계적으로 발전시키기 위해서는 소프트웨어 플랫폼과의 연동이 필요하고 동시에 데이터의 중요성도 언급하였다.


로봇용 기계 학습을 위한 빅데이터 기술은 혼자 힘으로 만들 수 있는 것이 아니고 여러 사람이 공동으로 만들고 발전해가야 하는 분야라는 것을 항상 염두에 두어야 국내 로봇 기술이 발전할 수 있다. 그리고 다양한 분야가 있기 때문에 이들을 융합하여 활용할 수 있어야 하기 때문에 데이터의 공유는 필수적이어야 한다. 또한, 기계 학습 기술은 특정 분야에 집중되어 있기 때문에 로봇에 잘 활용할 수 있으려면 소프트웨어 플랫폼과의 연동도 필요하다.


현재 서비스 로봇과 제조 로봇의 구분이 점점 모호해지고 있고 안전성과 정보 보호 기능이 강화되고 있기 때문에 필요한 데이터의 축적이 빠른 시간 내에 이루어지고 이를 서로 공유하고 발전할 수 있도록 상호 협력하여야 로봇 분야에서의 기계 학습 기술이 세계 수준에 뒤처지지 않을 것으로 생각된다.


현재 로봇 기술의 발전이 빨라지고 있어 상호 협력을 기반으로 기술을 공유하지 않고 독자적으로 기술을 개발하는 것은 기술을 후퇴시키는 역할을 하게 한다는 것을 생각해 볼 필요가 있다. 


-----------------------

[1] 스크래치, scratch.mit.edu

[2] ROS, www.ros.org

[3] OPRoS, www.ropros.org or www.opros.or.kr

[4] openRTM, www.openrtm.org

[5] OROCOS, www.orocos.org


박홍성 교수, 강원대학교 IT대학 전기전자공학부










배너









주요파트너/추천기업