강좌 & 팁
안녕하세요. 오랜만에 다시 글을 적네요.
오늘은 로봇 연구와 개발에 실제적으로 필요한 기초 이론들과 실무 테크닉이 무엇인지
대략적으로 알아보도록 하겠습니다. 로봇틱스에 조금이라도 발을 담붜보지 않은 사람은
처음에는 로봇틱스가 무슨 연구할께 그렇게 많은가 의아해 하기도 합니다. 제가 그랬으니까요.
저는 2008년부터 로봇틱스에 입문하였습니다. 그 전에는 주로 리눅스 분야에 빠져있었지요.
다양한 디바이스 드라이버에 관심이 많았고, 커널이 어떻게 돌아가는지에 대해서도 궁금해
했었습니다. 리눅스 분야에서 일을 4년 정도 하고 실무가 어떤거구나 조금씩 이해가 되던
정도... 그때는 그냥 콘트롤 이론 (학부 3학년때) 조금 정도 알고 있던게 다였습니다.
리눅스가 굉장히 복잡한 시스템이라 이놈과 씨름했던 저의 삽질을 믿고 로봇틱스에 입문을
했었는데요, 예상과 다르게 전 완전 KO승 당했습니다. 여지없이 무너져 버렸지요. ㅋㅋㅋ
저는 조용히 로봇틱스에 필요한 기본기를 지난 3년동안 익혀야만 했습니다. 다른 방법이
없었지요. 실제로 리눅스 기반의 산업 제어 시스템을 만드는 전문가들도 이쪽 공부를 꽤나
해야 하는 그런 초기 장벽이 있습니다.
이곳에서 저는 제가 아는 한 전반적인 분석을 해 보도록 하겠습니다.
- 로봇틱스 전통적인 이론
- 기본 수학 이론
- 인지(Cognition) 과 인식 (Perception)
- 행동(Action) 과 제어 (Control)
- 소프트웨어 측면
- 하드웨어 측면
총 6가지 측면으로 설명을 해 보도록 하겠습니다.
[1] 로봇틱스 전통적인 이론
로봇틱스가 학제적이고 다른 학문의 어플리케이션이라고 해도 로봇 고유의 영역이 있습니다.
전통적으로 kinematics 과 dynamics 등의 분야가 그렇다고 할 수 있습니다. 로봇의 링크의 길이가
어떻게 되서 어떻게 움직일 수 있고, 링크의 mass에 의해 어떻게 dynamics 가 움직임에 영향을
주고 등의 이야기가 되겠지요. 로봇 팔 (Manipulator) 이나 휴머노이드 로봇이 이 것들을 주로
연구하는 세부 분야이고 Mobile robotics 에서도 바퀴 2개달린 로봇이나 차량 스타일의 이동
로봇에서도 kinematics나 dynamics가 중요한 한 분야를 차지합니다.
[2]기본 수학 이론
불행하게도 수학이 조금 (실은 많이) 필요합니다. 많이 알면 알수록 좋습니다. 하지만
제가 생각하는 진짜 필요한 working knowlege는 선형 대수학(linear algebra) 와 확률 이론
(probabiltiy theory) 그리고 최적화 이론(Optimization theory) 인거 같습니다. 선형 대수는
매트릭스에 대한 이론인데요, 뭐 선형대수 쉽다고 생각했는데, 실제 그리 쉽지 않았습니다.
저에게는요. 그리고 선형대수를 사용한 알고리즘이 로봇 프로그램에 무지 무지 많이 사용됩니다.
실제 사용하기 위해서는 Numerical analysis 에 대한 이해도 잘 가지고 있어야 하기 때문에
더욱 어렵게 되는 것 같습니다. 하지만 high qualtiy open source 선형대수 라이브러리가
있습니다. 바로 LAPACK (Linear Albebra Package)라는 놈입니다. 우리가 자주 사용하는
MATLAB이 바로 위 라이브러리를 사용합니다. 매트랩은 그냥 껍데가 역할(명령어 파싱)을
하는 것입니다. 실제 일을 LAPACK이 수행하는 것입니다.
확률에 대한 좋은 이해가 필수적입니다. 요즘은 추세가 항상 uncertainty 와 맞서야 하므로
항상 바람직한 통게적 모델을 기반으로 해야 하거든요. 그래서 확률과 통계는 기본이 되었습니다.
SLAM이라고 불리는 로봇틱스의 가장 유명한 문제 중 하나의 formulation 자체가 확률론적
로봇틱스에 기반을 두고 있습니다. (Thebastian Thrun - 스탠포드 대학 교수)
로봇의 퍼셉션이 어떻게 보면 estimation theory 의 어플리케이션이라고 볼 수 있는데, 이 통계적
추청 이론이 바로 통계와 확률을 기반하고 있기 때문에 더욱이 이 과목은 중요하다고
볼 수 있습니다. 저의 박사 논문의 아주 저변에 깔리는 놈중 하나죠.
마지막으로 최적화 이론입니다. 이것은 로봇틱스 분야 뿐만이 아니라 공학 전반적으로
가장 중요한 주제 중 하나입니다. 어떻게 보면 우리의 삶이 최적화 과정이 아닐까요 ?
목적함수(Objective function)과 제한조건(Constraints)들이 애매하지만 전 인생 문제는
highly non-linear multivariate 최적화 문제라고 정의하고 싶기도 합니다. 여튼 최적화는
너무 너무 중요합니다.
- 인지(Cognition) 과 인식 (Perception)
인지는 좀 된 AI에 가까운 이해과정이구요, 기본적으로 세상을 인식하는 것이 우선입니다. 퍼셉션이죠.
로봇이 외부 환경을 어떻게 이애할 것인가? 어떻게 외분환경을 모델링하고 어떤 세부 레벨까지
이해할 것인가에 대한 것이죠. 그리고 그 환경에 이해를 바탕으로 어떤 생각의 나래를 펼칠 수 있는가가
바로 인지이지요. 아닌가 ? ㅋㅋ 아무튼 인지는 좀 더 하이레벨의 것입니다. 현재의 많은 로봇틱스
연구는 퍼셉션에 더 치우쳐져 있다는 생각입니다. 아까 말씀을 드렸듯이 이 퍼셉션이 기본 바탕이
바로 Estimation theory 입니다. 확률적인 추정 이론이 기본에 깔리고 그 위에 다양한 주제 들이
퓨전됩니다.
- 행동(Action) 과 제어 (Control)
세상에 대한 인식이 되고 인지가 되면 액션을 해야 겠지요. 목표를 세워야 하고 이 목표를 위한
행동을 구체화하기 위해서 motion planing (or path planning) 을 수행해야 합니다. 예를 들면,
무인 자동차가 앞의 차량을 추월하고 싶을때는 가능한 패스를 가능한 많이 발생시키고 이 놈들중
가장 cost가 적게 드는 한 궤도를 골라서 (이게 최적화 과정이죠) 그 놈을 따라 액션을 하게 되는
것이지요. 그리고 실제 액션을 할 때는 로우 레벨 제어를 수행하게 되겠지요. 모터를 제어하거나
(PID) 차량의 속도를 제어하는 것 등.
- 소프트웨어 측면
로봇의 하드웨어가 있으면 그 에 대한 정신을 불어넣어 주어야 겠지요. 실제로 로봇의 소프트웨어에
대한 연구의 중요성을 주장하는 사람들이 많습니다. MIT 인공지능 연구소의 마빈 민스키도 로봇
몸뚱이 만드는데 시간을 다 쓰지 말고 실제 중요한 알고리즘을 (정신을)만드는 열정을 바치라고
조언한바 있습니다. 그리고 Grand or Urban challene 역시 챠량의 하드웨어 보다는 무인 차량을
위한 퍼셉션과 제어 알고리즘을 평가하기 위한 대회라고 선언하고 있습니다.
물론 이와는 반대로 로봇의 하드웨어 제작을 멋지게 잘 (효율적인 설계 )해서 제어를 보다 쉽게
해야 한다는 주장을 하는 사람도 많습니다.
로봇의 소프트웨어를 위한 많은 플랫폼이 있습니다. 이런 것들 중 로봇 소프투에어 플랫폼중
리눅스에 해당하는 놈이 있습니다. 개인적으로 ROS라고 하는 놈을 소개 합니다. 이 것은
high qualtiy open source 로봇 라이브러리를 모아서 로봇 개발자가 알고리즘 개발에만 전념할 수
있게 해주는 아주 좋은 툴이자 오픈 소스 라이브러리들 입니다. 빠른 시간 내에 멋진 로봇을
개발하시려 한다면 저는 개인적으로 이놈을 강력 추천합니다. 리눅스 전문가 여러분이 보시면
그냥 이 놈의 구조를 이해하실 겁니다. 그리고 좋아하실 겁니다.
- 하드웨어 측면
로봇이라 하면 일단 로봇의 몸뚱이가 있어야 하겠지요. 그것이 모바일 로봇이든 휴머노이드이든
비행 로봇이든 그 하드웨어를 잘 설계하고 제작하는 것은 핵심 중에 핵심이라 하겠습니다.
기계 공학과 기계 설계 등 많은 지식이 필요한 부분이겠지요. 저는 이 분야 보다는 소프트웨어
적인 측면을 연구하므로 별로 아는 것이 없네요.
이상 로봇 연구에 필요한 기초이론과 몇가지 정보들이었습니다. 이것은 그냥 저의 생각입니다.
얼마든지 위 것들이 다 없이도 로봇을 즐겁게 만들고 테스트하고 즐거움을 얻을 수 있습니다.
Just for fun ! 그것이 쿨 한 것입니다 !