목차
현재의 기술로는 로봇이 만족할 만한 성능을 가진다는 것이 어렵다. 그렇다면 로봇 기술을 포기하는 것이 옳은가? 그건 아닐 것이다. 로봇 기술은 이제 막 싹이 트는 과정이다. 더구나 많은 사람들의 분석에 따르면 십수 년 안에 그야말로 기술과 산업의 중심으로 우뚝 설 분야이다. 현재의 상태에만 주목하여 싹을 잘라버리거나 관심을 거둬버리는 우를 범하기엔 너무나 중요한 분야이다.
로봇 기술을 연구하는 사람들은 현재의 로봇 기술에서 부족한 점을 끊임없이 연구하고 발전시켜 더 만족스러운 성능을 로봇이 갖추도록 해야 하며, 로봇을 사용하게 될 사용자들은 로봇 기술의 현주소에 대해 어느 정도의 이해를 가지고, 로봇이 발전되어 가는 모습을 애정 깊은 시각으로 바라봐 주었으면 하는 바람이다.
이제 로봇의 내비게이션에 대한 문제들을 좀 더 기술적으로 들어가 보고자 한다. 로봇 내비게이션에 필요한 요소로 자기위치인식과 지도를 언급했다. 얼핏 생각해보면 자기위치를 인식하기 위해서는 지도가 필요할 듯하다. 그런데 바꿔 생각해보면 지도를 만들기 위해서는 자기위치를 알아야 한다. 이 두 가지 문제는 서로 꼬리에 꼬리를 물고 돌아가는 형태로, 닭이 먼저인지 달걀이 먼저인지를 묻는 문제와 유사한 성격을 가진다.
여기서는 우선 위치인식과 지도 작성 각각의 문제에 대해 얘기하고 세 번째로 이를 동시에 실현하고자 하는 기술인 슬램(SLAM : Simultaneous Localization And Mapping)에 대해 설명하고자 한다.
위치인식
위치인식이란 앞에서도 언급되었듯이 여러 가지 환경 정보를 이용해 로봇의 현재 위치를 추정하는 기술이다. 여기에는 지도가 이미 알려져 있다고 가정한다. 사람은 어떻게 위치인식을 하게 될까? 모르는 장소를 찾아갈 때 일반적으로 사람은 먼저 자신이 지도 상에서 어디쯤 위치해 있는지 확인한다.
예를 들어 관광지 등 처음 가보는 곳을 방문했을 때는 주변에서 지도를 우선 찾고, 지도에서 현재 위치가 표시된 부분을 찾게 된다. 가끔 현재 위치가 표시되지 않은 지도를 만나면 주변의 시설물 등과 비교해가며 현재 위치를 추정하고, 이후 이동하면서 계속 자신이 움직인 거리와 주변 환경을 보면서 위치를 파악한다.
이를 로봇에 적용해보자. 로봇은 우선적으로 자신이 현재 위치한 곳에 대한 정보를 센서 등을 통해 얻거나 외부로부터 입력받는다. 이후 이 정보를 바탕으로 일정 시간 움직여가며 움직인 양을 측정하거나 외부 환경의 상대적 움직임을 파악하여 자신의 위치 변화를 인식하고 이를 사용해 계속적으로 위치 정보를 갱신한다.
로봇의 초기 위치가 정확히 알려진 상태에서는 일정 시간의 주행 후 현재의 위치를 알아내기 위해 인코더를 사용하는 추측 항법(Dead-Reckoning)과 다양한 센서를 융합해 사용하는 센서 퓨전(Sensor Fusion) 기법이 따로 혹은 병행하여 쓰인다. 앞에서 언급한 것처럼 인코더는 초기 위치에서 바퀴의 회전에 따라 펄스를 발생시킨다. 이를 바탕으로 위치를 추정하게 되는데, 값싸고 구현이 쉽다는 장점이 있지만 오차가 계속 누적되어 시간이 지날수록 결과의 신뢰성이 떨어진다.
인코더의 오차 발생에 대한 주된 원인은 이동부의 구조가 정확히 일치하지 못하는 데서 오는 오차와 고르지 못한 환경이다. 바퀴를 사용하는 로봇의 경우 대부분 동력이 전달되는 바퀴와 균형을 잡아주는 무동력 보조 바퀴(Caster)를 사용하게 되는데, 동력이 전달되는 바퀴가 완전히 똑같은 형태를 가지기 어려우므로 직진 및 회전 시 오차가 발생하게 된다.
예를 들어 지름 10cm의 바퀴 2개의 둘레가 약 1mm의 오차를 가진다면 1m만큼 진행할 때 약 3mm의 오차를 가지게 된다. 10m×10m의 넓이를 가진 방을 생각할 때 단순 계산으로 이 방을 한 바퀴(40m)만 돌면 양쪽 바퀴의 이동 거리가 12cm만큼 차이가 나게 되는 것이다. 특히 바퀴의 불일치로 인한 오차는 회전 시에 많이 나타나는데 이로 인해 회전 운동에 대한 인코더의 신뢰도가 직선 운동의 경우보다 많이 떨어지게 된다.
이것은 로봇 이동부 자체의 구조적 문제이며 여기에 덧붙여 환경의 구조적 문제로 인해서도 오차가 발생한다. 비교적 바닥이 고른 실내의 경우에서도 작은 요철이나 장애물로 인해 로봇 이동부의 흔들림이 발생하게 되고 이로 인해 인코더 값이 잘못 출력된다. 또한 너무 매끄러운 바닥 면에서 바퀴가 미끄러진다든지, 카펫 같은 바닥에서 바퀴가 헛돈다든지 하게 되면 이 또한 인코더의 오차를 발생시킨다. 이러한 오차는 외부 센서의 도움으로 초기화되지 않는 한 계속 누적되며 없어지지 않는다.
따라서 인코더의 낮은 신뢰도로 인해 로봇의 위치인식에 추가적인 센서를 사용한다. 주로 사용되는 센서는 초음파, 적외선, 자이로스코프, 레이저, 카메라 등인데, 센서 결과의 정확도를 높이기 위해 여러 종류의 센서 값을 융합해 최종적으로 위치인식을 위한 정보를 생성한다. 센서 값의 처리 및 가공에는 칼만 필터(Kalman Filter)나 여러 종류의 확률 함수(Probabilistic Function) 등이 쓰인다.
센서 융합 기법은 센서 자체의 정확성 및 감지 범위 등에 영향을 받게 되므로 고성능의 센서를 사용하기 위해 높은 비용을 지불하면 센서들의 정보를 많이 융합하지 않아도 더 좋은 결과를 얻을 수 있으며, 저가의 센서를 사용하게 되면 여러 가지 융합 방법을 사용해도 전체적인 성능은 조금 떨어지게 된다. 그러므로 센서가 작동하는 환경에서 요구되는 위치인식 정확도에 따라 비용 대 성능의 적절한 교환(Tradeoff)을 결정해야 한다.
만약 초기 위치 정보를 얻지 못하거나 잘못된 정보를 얻을 경우는 어떻게 될까? 이 상황에서 위치를 알기 위해서 사용되는 것은 지도 정보와 이전에 측정, 계산된 센서 정보이다. 이 정보들을 이용해 로봇의 위치를 인식하는 데는 마코프 위치인식(Markov Localization)과 파티클 필터(Particle Filter)라는 두 가지 기법이 주로 쓰인다. 이 기법들에 대해서는 간단하게만 언급하니 좀 더 자세히 알고 싶은 독자들은 관련 전문 서적을 찾아보길 권한다.
지도
이번에는 로봇이 사용하는 지도에 대해 알아볼 것이다. 로봇이 여러 가지 방법을 사용해 자신의 위치를 잘 인식하고 있다고 가정하자. 이제 로봇이 할 일은 자신의 위치와 장애물의 위치를 인식해 주변 환경에 대한 정보를 수집하고 조립하여 지도를 만드는 것이다. 그런데 사람이 보는 지도와 로봇이 보는 지도는 어떻게 다를까?
사람의 정보 처리 능력은 매우 우수해서 많은 정보 중에 필요한 것만 간추리고 다른 작업과 병행해 이 정보를 사용할 수 있으며, 필요한 경우 언제든지 정보를 추가, 활용할 수 있다. 이에 반해 로봇은 정보 처리량에 한계를 가지고 있어서, 어느 한 부분의 계산량이 많아지면 전체적인 수행 능력이 대폭 감소한다.
그러므로 로봇에게는 최소한의 필요한 정보만 주는 것이 바람직하다. 로봇이 사용하는 지도의 경우에도 유사한 개념이 적용되는데 로봇에게 가장 적합한 것은 갈 수 있는 곳이냐, 가지 못하는 곳이냐 라는 이분법적 지도 정보이다. 이를 대표적으로 나타내는 것이 격자 지도(Grid Map)이다.
격자지도는 초음파, 적외선, 레이저 센서 등의 거리 측정 센서를 이용해 로봇과 주위 장애물 간의 거리를 측정하고, 일정 크기의 격자로 나눈 공간에서 그 장애물이 위치할 것으로 추정되는 격자들에 실제로 장애물이 위치할 확률을 부여해 만들어진다.
여기서 확률값을 사용하는 이유는 센서의 부정확성에 기인한다. 하나 혹은 여러 개의 센서 정보를 취합해 센서 융합의 기법을 사용한 후 최종 적으로는 정해진 임계값(Threshold)을 넘는 확률을 가진 격자는 장애물이 존재하는 것으로 인정하고 그렇지 않은 격자는 비어있는 공간으로 인정한다. 즉, 로봇은 비어있다고 인정되는 격자로만 움직이게 된다.
격자지도를 사용할 때, 초기에 존재하는 고정 장애물의 경우 지도 작성 시 인식되므로, 로봇이 움직이는 경로를 생성할 때 갈 수 없는 지역으로 지정되어 미리 충돌을 방지할 수 있다. 그러나 초기 지도 작성 시 누락된 장애물이나, 이동 장애물의 경우 로봇 자체의 장애물 감지 능력이 없다면 지도 만의 정보를 가지고 로봇을 운용할 경우 충돌 등 부가적인 문제가 발생할 수 있다.
격자지도는 이동 로봇에 대부분 사용되지만 부족한 점이 있다. 첫 번째는 특별히 관심을 가질 필요가 있는 지점에 대한 구분 능력이 부족하다. 격자지도에서는 비어있거나 차있는 정도로만 공간을 구분하므로 더 이상의 정보를 로봇이 파악하기 어렵다.
둘째로 공간이 커지면 커질수록 처리해야 할 격자의 수가 증가해 계산량이 많아지게 된다. 다시 말해 로봇이 이용할 가능성이 거의 없는 공간에 대해서도 해당 공간이 비어 있는지 장애물로 점유되어 있는지에 대한 정보를 가지고 있어야 하며, 경로 생성 시 고려해야 한다. 이는 로봇이 가지는 자원(연산속도, 메모리 등)의 효율적 이용이라는 면에서 지양되어야 할 상황이다. 이를 보완하기 위해 특성지도(Feature Map)와 토폴로지 지도(Topological Map) 등이 사용된다.
특성지도는 말 그대로 영역 내에 존재하는 특이점, 즉 정보가 풍부한 지점을 나타낸 지도이다. 로봇이 어느 집의 거실에 있다고 하자. 이 로봇에게 무엇인가 작업을 시키고자 한다. 작업을 지시받으면 로봇은 자신이 가지고 있는 지도와 현재 자신이 보는 시점에 나타난 영역을 일치시키고 작업을 시작해야 한다. 이때 지도와 영역의 일치에 사용되는 것이 거실이라는 공간을 나타내는 특별한 사물 혹은 구역이다.
예를 들어 거실 벽에 걸려있는 그림이라든지, 소파나 TV, 혹은 거실에만 존재하는 둥근 모양의 기둥 등이 특별한 지점이 될 수 있다. 이런 것들은 마치 사람이 지도를 보고 방향이나 위치를 인식할 때 사용하는 산이나 언덕, 특이한 건물 등의 역할을 하게 되는 것이다.
지도에 나타나는 이동 가능한 영역은, 이동하여 계속 머물러 있을 가능성이 높은 구역과 이동에만 사용될 가능성이 높은 구역으로 나눠질 수 있다. 예를 들어 학교 건물을 생각해보자. 항상 그런 것은 아니지만 학생들은 대부분 강의실에서 오래 머문다. 반면에 복도는 강의실이나 실험실 등의 장소를 이동하는 경우에만 사용하게 된다.
그렇다면 강의실에 어떤 물건이 있고, 어떤 구조로 되어 있는지는 잘 알아야 하지만, 복도의 경우는 이동하는데 필요한 공간 정보 정도만 알고 있어도 건물의 사용에는 하등의 지장이 없을 것이다. 로봇도 마찬가지로 작업이 주로 이루어지는 장소와 이동에만 쓰이는 장소가 구분되게 된다.
이 경우 전체 격자 정보를 모두 갖고 있는 것보다는 이러한 구역의 특징을 잘 요약해 갖고 있는 것이 정보 처리량을 대폭 감소시킬 수 있다. 이러한 개념이 구현된 것이 바로 토폴로지 지도다. 여기에서는 작업 등의 이유로 머물러 있을 가능성이 높거나 특징적인 구역을 노드(Node)라 지정하고 이 노드들을 연결하는 통로를 엣지(Edge)라 한다.
노드는 대부분 작은 원이나 사각형, 혹은 점 등으로 나타나며, 엣지는 선으로 나타난다. 특성지도나 토폴로지 지도는 사용 목적이나 환경에 따라 여러 가지 방법으로 작성 될 수 있는데, 〈그림 8-11〉은 하나의 예를 보여준다. 그림에서 희미한 색으로 표시되어 있는 가장자리 부분이 주어진 공간의 모양을 나타내며, 작은 사각형 모양으로 되어 있는 것이 노드, 이들을 연결하는 선이 엣지가 된다.
슬램
로봇이 지도를 갖고 있는 상태에서 자기 위치 인식을 하는 방법에 대해 얘기했다. 또 위치를 알고 있을 때 이를 바탕으로 지도를 작성하는 방법도 언급했다. 그러면, 전혀 모르는 환경에서 자신의 위치도 모를 때 로봇은 무엇을 할 수 있을까? 이런 상황에서 자기위치인식과 지도 작성을 병행해서 할 수는 없을까? 이런 물음에서 슬램(SLAM : SimultaneousLocalization And Mapping)의 개념이 나타났다.
슬램의 시초는 1986년 미국 캘리포니아의 샌프란시스코에서 열린 학술 대회인 국제전기전자공학자협회 주관 로봇 및 자동화 학회(IEEE Robotics and Automation Conference)에서였다. 이때는 로봇공학과 인공지능 분야에서 확률적 방법이 막 소개되던 시기였는데, 이 방법을 사용해 많은 연구자들이 로봇의 지도 작성과 위치인식 문제 각각을 해결하려 노력했다.
이후 몇 년간에 걸쳐 두 분야에 괄목할 만한 연구 성과가 있었고, 1990년에 들어와 알려지지 않은 환경에서 이동 로봇이 랜드마크를 관찰하며 이동할 때, 추정된 로봇의 위치에 대한 오차 때문에 랜드마크의 추정 결과들이 서로 연관된다는 것이 알려졌다.
이로 인해 위치 인식과 지도 작성의 문제에, 로봇의 위치 정보와 랜드마크의 위치 정보가 통합된 형태로 필요하게 되었다. 이에 대한 심도 깊은 고찰과 논의를 거쳐 1995년 국제로봇연구 심포지움(International Symposium on RoboticsResearch)에서 이동 로봇에 대한 논문에 슬램 문제가 구체적으로 처음 나타났다.
슬램은 미지의 영역을 탐색하며 지정된 작업을 수행하는 데 꼭 필요한 기술로, 로봇이 진정한 자율 주행 로봇으로 거듭나기 위해 반드시 구현되어야 한다. 이 기술은 혹성이나 해저, 위험지역의 탐사뿐 아니라 일반 가정, 사무실 등의 복잡하고 다양한 환경에 적응될 수 있어 매우 가치가 높다.
크게 확장 칼만 필터(EKF : Extended Kalman Filter)를 사용하는 슬램(EKF-SLAM)과 파티클 필터를 사용하는 슬램(FastSLAM)이 있으며, 최근 패스트슬램을 확장한 디피-슬램(DP-SLAM : Distributed Particle - SLAM) 등이 연구되고 있다.
슬램은 로봇이 미지의 공간에서 자신의 위치를 인식하며 동시에 주변 환경에 대한 정보를 모아 지도를 만드는 기술로, 이동 로봇 분야에서 핵심적 기술이고 오랜 기간 연구되어 왔지만 아직까지는 연구 결과가 기대에 못 미치는 어려운 분야이다. 여기서는 각 슬램 기법들의 구체적 수식 및 구현 방법 등에 대해서는 언급하지 않고 특징들만 요약하고자 한다.
EKF-슬램에서는 환경에 대한 전체 지도와 로봇의 위치 정보를 추정하기 위해 확장 칼만 필터를 사용한다. 그런데 칼만 필터에서는 특징점 개수의 제곱만큼 연산량이 증가하므로 매우 큰 공간에서는 연산 시간의 문제로 적용하기 힘든 면이 있다. 또한 미리 정의된 특징점 혹은 랜드마크가 필요하다. 즉, 이 기술은 비교적 작은 크기의 공간에 대한 슬램 문제에 적당한 해법이 될 수 있다.
패스트슬램에서는 앞의 방법이 가지는 연산량에 대한 약점을 보완하기 위해 파티클 필터를 이용했다. 파티클 필터의 소개글에서 언급된 것처럼 파티클 필터는 계산량이 적고 빠르며, 환경에 대한 정보 처리에 강한 면을 보인다. 그러나 파티클의 개수에 결과의 정확성이 크게 의존되고, 잦은 재샘플링으로 인해 파티클 중 일부가 소실되어 중요한 정보가 사라질 수도 있는 단점을 가진다.
DP-슬램은 파티클 필터의 샘플링·재샘플링 단계를 이용하여 트리 구조를 만들고, 과정이 진행됨에 따라 의미가 약해지는 가지를 제거하는 것을 반복하여 최소한의 가지를 갖는 형태를 유지한다.
각 가지마다 해당되는 지도를 가지게 하여 여유분의 정보로 활용하는데, 이전 상태를 기준으로 현재 상태를 수정함으로써 다른 슬램 기법들이 대부분 필요로 하는 루프 클로징(Loop Closing)을 필요로 하지 않는다. 이 기법에서도 파티클을 사용하므로 뿌려지는 파티클의 개수를 어떻게 최적화시킬 것인가가 중요한 문제로 대두된다.
본 콘텐츠의 저작권은 저자 또는 제공처에 있으며, 이를 무단 이용하는 경우 저작권법 등에 따라 법적책임을 질 수 있습니다.
외부 저작권자가 제공한 콘텐츠는 네이버의 입장과 다를 수 있습니다.
외부 저작권자가 제공한 콘텐츠는 네이버의 입장과 다를 수 있습니다.
[네이버 지식백과] 위치인식과 지도, 닭이 먼저냐 달걀이 먼저냐? (훤히 보이는 지능형 로봇, 2008. 12. 31., 한국전자통신연구원(ETRI), 전자신문사)
No comments:
Post a Comment