[첨단 헬로티]
로봇에 인공지능을 활용할 수 있는 방법은 다양하게 존재한다. 해당 로봇의 응용 특성에 맞는 방법을 활용하고, 기존 로봇 방식을 활용하기 위해서는 로우 레벨의 소프트웨어부터 모듈화를 하는 것이 인공지능 기술을 접목시키는 데 효율적이다. 또한, 딥러닝 기반 로봇 제어를 위해서는 많은 데이터가 필요하고 기계학습 모듈을 같이 운영할 수 있는 소프트웨어 플랫폼 기술이 필요하다. 산업용 로봇과 소프트웨어 플랫폼 동향에 대해 지난 3월28일 열린 ‘로보틱스 컨퍼런스 2018’에서 강원대학교 박홍성 교수가 발표한 강연 내용을 정리했다. [편집자 주]
▲ 일반 플랫폼과 로봇 플랫폼 비교
산업용 로봇과 소프트웨어 플랫폼의 동향을 살펴봄으로써 산업용 로봇 소프트웨어 플랫폼의 요구사항을 알아본다. 또한, 기계학습 기술을 소개함으로 산업용 로봇에 기계학습 기술이 어떻게 활용되는지와 그 제약사항을 알아본다. 특히, 기계학습 기술에서 왜 데이터가 중요한지와 이 데이터들이 주는 한계도 소개한다. 그리고 이를 통하여 모듈 기반의 소프트웨어 플랫폼과 기계학습 기술이 왜 공존해야 하는지에 대해서도 살펴보겠다.
산업용 로봇과 소프트웨어 플랫폼 동향
최근 4차 산업혁명과 함께 제조 산업에도 큰 변화의 바람이 시작됐다. 따라서 제조 자동화 시스템을 주도적으로 제어할 수 있고, 유지보수가 쉬우며 모듈화 형태의 유연한 소프트웨어 구조를 가진 로봇이 필요하게 됐다.
제조산업에서 로봇에 투자하는 이유는 크게 4가지이다. 첫째, 생산성과 상품의 질을 향상하고 제품에 따른 프로그램의 변경이 용이하다. 둘째, 인공지능 등 신기술과 연동으로 작업자의 작업 질을 향상할 수 있다. 셋째, 로봇의 소형화·경량화·유연성이 모듈화라는 관점에서 지원되기 시작했다. 넷째, 로봇에 따른 모듈의 최적 조합으로 생산 원가를 감소할 수 있기 때문이다.
최근 산업용 로봇은 IREX 2017(국제로봇전)에서도 확인했듯이 공정 간 연결하는 모바일 로봇이 확산되고 있다. 즉, 공정이 유연하게 바뀌고 있다는 것이다. 따라서 로봇을 만들 때도 공정의 유연성을 고려해야 할 필요성이 있다. 공정 유연성 관점에서 가장 중요한 기술 중의 하나가 인공지능이다.
로봇 기술 동향을 살펴보면 첫째, 모바일 매니퓰레이터가 확산되고 있고 둘째, 소형 로봇을 활용한 부품 조립라인이 확대되고 있으며 셋째, 소프트웨어 플랫폼을 사용하려는 노력이 확대되고 있다.
실제로 보면, 로봇 소프트웨어 플랫폼도 있지만, PLC용 소프트웨어 플랫폼을 사용해서 로봇에 활용하려는 시도가 많이 눈에 많이 띤다. 그 예로, CoDeSys에서 시작하여 유럽, 중국 등 여러 업체에서 PLC용 소프트웨어를 활용해서 제품을 출시하고 있다. 이 얘기는 곧, 로봇 소프트웨어 자체가 모듈화라는 것이다. 지금은 6축까지 가능하도록 로봇 소프트웨어 모듈을 제공하고 있다. 이것은 PLC 기능과 로봇 기능이 통합되고 있음을 의미한다. 또한, ROS-i에서도 ROS 기반으로 산업용 로봇이 적용되기 시작했다.
로봇 소프트웨어 플랫폼을 활용하는 목적은 소프트웨어 모듈을 재활용하고 값싸고 빠르게 신뢰성 있는 로봇을 만들기 위함이다. 그리고 가장 중요한 것은 전문 인력 부족 문제를 해결하기 위해서이다.
로봇 소프트웨어 플랫폼이란
로봇 기술자가 아녀도 소프트웨어 모듈을 가지고 로봇 개발을 쉽게 하기 위해서는 소프트웨어 플랫폼 역할이 중요하다. 소프트웨어 플랫폼이란, 응용 프로그램이 구동되는 기반(하드웨어 구조, 소프트웨어 툴, OS) 등을 의미한다. 이 플랫폼은 로봇에 필요한 하드웨어와 소프트웨어의 연결을 쉽게 하고 다양한 비즈니스 활용에 기반이 된다.
그러면 일반 플랫폼과는 어떻게 다른가. 일반 플랫폼은, 예를 들어 스마트폰은 하드웨어가 거의 고정되어 있다. 그 위에 OS가 있고 OS 위에 플랫폼이 있다. 그리고 그 플랫폼에 애플리케이션 소프트웨어인 앱들이 있다. 로봇 소프트웨어 플랫폼은 좀 더 복잡하다. 로봇 소프트웨어 플랫폼은 산업용, 장난감용, 안내용, 자동차용 등 다양하다 보니 하드웨어들이 바뀌고, 소형부터 대형, 그리고 센서도 상당히 작다. 뿐만 아니라 OS도 윈도, 리눅스 등 다양하고 그 위에 플랫폼을 올린다. 이 소프트웨어 모듈은 플랫폼을 잘 만들지 않으면 앱의 재사용이 매우 힘들다.
로봇 소프트웨어 플랫폼의 변화를 살펴보자. 처음 제공 범위는 ‘OS+개발도구’부터 시작해서 미들웨어가 들어가고 뒤에 소프트웨어 플랫폼이 추가되었다. 지금은 거의 모든 플랫폼이 솔루션을 제공하는 형태가 되었다. 앱도 생태계를 만든다는 관점에서 이제는 솔루션을 제공해야 한다.
그런데 생태계에서 가장 중요한 것은 하드웨어가 됐든 소프트웨어가 됐든 실제로 활용할 만한 뭔가가 있어야 한다는 점이다. 즉, 플랫폼이 있으면 안드로이드 앱이라든지 아이폰의 앱처럼 생태계가 만들어질 수 있다. 하지만 로봇 분야에는 아직 생태계가 없다. 왜냐하면, 생태계를 하려면 사용할 만한 가치가 있는 모듈들을 계속 제공해야 하고 그것을 가지고 이익을 창출해야 하는데, 사실 로봇 소프트웨어 모듈을 활용하는 사용자 입장에서는 공짜로 사용하려는 경향이 강하다. 두 번째 이유는 소프트웨어가 유출되는 것을 매우 싫어하기 때문이다.
산업용 로봇 소프트웨어 플랫폼의 요구사항으로는 크게 4가지가 있다. 첫째, 주기와 실시간 비주기 서비스 및 비실시간 서비스를 제공할 수 있어야 한다. 둘째, 안전성과 신뢰성 있는 기능을 제공할 수 있어야 한다. 셋째, 제조 공정에 따른 로봇 동작 변경과 같은 인더스트리4.0에 알맞은 유연한 구조를 제공할 수 있어야 한다. 넷째, 모듈의 개발이 쉬워야 하며 저렴해야 한다.
실제로 로봇 업체들은 이 요구조건대로 모듈을 개발하지 않는다. 한꺼번에 다 개발해서 유지보수하기 매우 어렵게 만든다. 또한, 플랫폼 하나가 만들어지면 값비싸지는 이유는 모듈화하지 못하고 어떻게 하면 빨리 개발해서 상품화할까에만 치중하다 보니 오히려 개발이 더 늦어지게 된다. 차근차근 설계부터 시작해서 모듈화하다 보면 잘 만들어진 모듈은 앞으로도 계속 활용이 가능하기 때문에 훨씬 더 빠르게 개발할 수 있다. 모듈들을 잘 활용하게 하는 것이 바로 소프트웨어 플랫폼이다.
기계학습에서 데이터가 중요한 이유
그러면 기계학습이란 무엇인가. 기계학습은 데이터로부터 학습할 수 있는 시스템의 구축 및 연구에 관한 것으로, 전통적인 컴퓨터 프로그래밍과는 매우 다르다. 다시 말해, 기계학습에 관련된 데이터 구축이 없으면 기계학습은 필요 없다는 것이다.
▲ 로봇 제어 방식 비교
기계학습과 기존 프로그래밍 방법과의 차이점을 살펴보면, 기존 프로그래밍 방법은 데이터와 프로그램을 컴퓨터를 통해 아웃풋 한다. 그런데 기계학습은 컴퓨터가 데이터 및 경험된 아웃풋과 인풋을 프로그래밍하여 아웃풋 한다. 이 의미는 학습이 안 된 데이터는 오류를 발생한다는 것이다.
지금까지 기계학습은 룰 기반 시스템이었지만, 클래식 머신러닝으로 핸드 디자인 피쳐스를 만들고 매핑하는 작업 등의 기능을 했다. 그런데 딥러닝은 피쳐스 학습부터 시작해서 모든 것을 기계학습에 넣다 보니 실제로 많은 데이터가 필요하게 되었고, 특히 로봇은 기계학습 종류 중에서 강화학습(Reinforcement learning)을 많이 소개하고 있다. 중요한 것은 데이터양과 성능과의 관계에서 데이터양이 많을수록 퍼포먼스가 높다는 사실이다. 데이터를 축적하지 않으면 기능과 성능도 떨어진다. 러닝을 하는 연구기관이나 업체들은 데이터들을 어떻게 공유하고 축적할 것인지를 고민할 필요가 있다.
2012년까지만 해도 컴퓨터 비전에서 객체인식 방식은 대상물을 SVM(Support Vector Machine)으로 분류한 후 객체를 판단했다. 그러나 최근 딥러닝 방식은 수억 개의 매개변수와 1,200만 개의 학습 이미지를 사용하여 판단하기 때문에 상당히 정확하다.
로봇 제어도 이와 같다. 현재의 로봇 제어 방식은 처음에 인식한 후 상태를 추정하고 컨트롤 후 매개변수를 통해 모터 명령어까지 내려보낸다. 그런데 딥 강화학습 방식은 객체를 인식하면 학습을 위한 많은 매개변수를 가진 다층 신경 네트워크를 통해 모터 커멘드까지 딥러닝 해서 만들게 된다. 따라서 로봇은 사항별로 6축이면 6축, 4축이며 4축에 맞게 만들어야 한다. 딥러닝의 문제는 하나를 만들어서 계속 사용할 수 없다.
예를 들어, 기존 방식은 객체가 호랑이가 있으면 이를 센싱 및 객체 인식 프로그램으로 인지한 후에 액추에이션 프로그램을 통해 이동, 조작하고 액션하는 과정이다. 이것은 인식과 액션이 완전히 분리되어 있다. 그러나 딥러닝 방식으로 바꾸면 기존 구동 방식에 인공지능 기반의 인식이 가미하게 된다. 최근 로봇 분야에 많이 적용되고 있다. 인공지능 기반 인식을 통해서 음악을 인식하고 댄싱하는 사례가 있다. 이 로봇은 동작할 때 프로그램에서 딥러닝 기반 댄스 음악에 대해 장르를 인식하게 되면 장르의 내용에 따라 랜덤 패턴에 의해서 댄스 동작을 만든다. 또 다른 사례로, 비전을 통해 위치를 파악하고 위치를 파악한 후에 물건을 잡는 동작은 프로그램에 의해서 한다. 이때 인식은 딥러닝으로 하고 프로그램에 의해서 조작을 한다.
그런데 딥러닝 자체가 학습되지 못한 데이터들이 존재할 가능성이 매우 크다. 그러면 그 데이터를 다시 학습시키는 과정들이 있다. 우선 클라우드 서버 학습 모듈이 필요하고 학습된 모듈에 대해서 로봇 내 학습된 모듈을 받아서 동작하는데, 실제 동작은 로봇 소프트웨어 모듈에서 한다. 이러한 구조가 현재 많이 사용하는 방식이다.
현재 딥 감각운동 학습(Deep sensorimotor learning)의 강자는 구글이다. 구글은 객체를 거의 완전하게 인식하고 강화학습해서 모터 토크까지 내려보낸다. 토크 관련해서는 레빈(Levin)이라는 교수가 2015년에 이 데이터를 만들었다. 레빈 교수는 92,000개 매개변수를 처리하는데 7계층을 사용했다. 2016년에도 비슷하게 14대 로봇을 가지고 80만 그라스프(grasp) 시도들로부터 학습했다.
기계학습으로 로봇을 완전히 제어하기에는 많은 시간이 걸린다. 그렇지만 도전할 만한 가치는 있다. 로봇은 다양한 통신 메시지를 통하여 통제되고 있으며, 그 통제는 서버로부터 명령이 내려진다. 어떻게 제어할 것인지에 대한 고민이 필요하다. 또한, 기계학습은 한 부분에 집중할 때 좋은 결과를 얻을 수 있다. 향후 스마트공장은 다품종 대량 생산을 목적으로 하기 때문에 기계학습만으로 로봇을 제어하는 것은 적절한 해결책이 될 수 없다. 새로운 제품을 만들기 위해서는 새로운 학습이 필요하다. 마지막으로 기존 소프트웨어 모듈과 기계학습 기술 모듈 간의 트레이드오프가 필요하며, 이를 위해서는 소프트웨어 모듈과 기계학습 모듈 간의 인터페이스가 중요하다.