상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 구조광을 이용한 바닥 물체 검출 방법은 소정의 구조광이 투사된 지점의 높이 차를 측정하는 단계, 및 상기 측정된 높이 차를 이용하여 바닥 물체를 검출하는 단계를 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 로봇은 소정이 구조광이 투사된 영역의 영상 프레임을 제공하는 촬영부, 상기 영상 프레임에 촬상된 상기 구조광의 촬상 위치를 이용하여 바닥 물체의 경계를 추종하는 주행부, 상기 주행부의 주행 경로를 이용하여 상기 바닥 물체를 검출하는 검출부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 로봇(100)의 동작을 설명하기 위한 도면이다.
본 발명에서 로봇(100)은 자가적으로 이동 가능하며 소정의 목적을 위하여 부여된 작업을 수행하는 장치로서, 청소용 로봇을 바람직한 실시예로 들 수 있다. 로봇(100)의 주행 경로에는 바닥 물체(10)가 존재할 수 있는데, 로봇(100)이 이동할 수 있는 영역(20) 중에서 바닥 물체(10)가 존재하는 영역과 바닥 물체(10)가 존재하지 않는 영역 간에는 높이차가 존재한다. 여기서 바닥 물체는 카펫, 러그(rug), 슬리퍼 등과 같이 로봇(100)의 이동 범주(20) 상에 존재하며 로봇(100)이 수행하는 작업에 영향을 미칠 수 있는 다양한 유형의 물체를 말한다.
로봇(100)은 주행 중에 바닥의 높이 차를 측정하고, 이를 통하여 바닥 물체(10)를 검출한다. 바닥의 높이 차를 측정하기 위하여 로봇(100)은 주행 방향으로 소정의 구조광(structured light, 30)을 투사하고 구조광(30)의 투사 영역을 촬영한다. 여기서 구조광(30)은 하나의 선형, 다수개의 선형, 소정의 격자를 형성하는 행렬 형태의 선형 등 다양한 형태를 띨 수 있다. 이하에서는 구조광(30)이 하나의 선형을 띠는 것으로 설명할 것이나 본 발명은 이에 한정되지 않는다. 구조광(30)은, 로봇(100)으로부터 소정 거리 이격된 위치의 바닥을 향하여 하향 투사된다.
일반 바닥에 구조광(30)이 투사된 경우, 구조광(30)의 투사 영역을 촬영하여 얻은 영상 프레임에서 구조광(30)은 고정된 위치에 촬상된다. 그러나 구조광(30)이 바닥 물체(10)에 투사된 경우, 구조광(30)의 투사 영역을 촬영하여 얻은 영상 프레임에서 구조광(30)의 촬상 위치는 더 높아지게 된다. 이는 바닥 물체(10)로 인하여 높이 차가 발생하기 때문이다. 따라서 구조광(30)이 바닥에 투사될 경우의 영상 프레임 상에서 구조광이 촬상되는 기준 위치를 실험등을 통하여 사전에 설정하여 두고, 실제로 로봇(10)이 사용되는 중 촬영한 영상 프레임에서 구조광(30)의 위치를 기준 위치와 비교하면 바닥 물체(10)의 존재 여부를 알 수 있게 된다.
바닥 물체(10)의 존재가 감지되면 로봇(100)은 바닥 물체(10)의 경계를 추종함으로써 바닥 물체(10)의 크기와 바닥 물체가 존재하는 영역을 알 수 있게 된다. 이에 따라서 바닥 물체(10)가 위치한 영역과 일반 바닥에 대한 로봇(100)의 작업 방식을 구분하여 설정하거나 이들에 대한 로봇(100)의 작업 여부를 선택적으로 설정하는 등, 바닥 물체(10)에 대하여 필요한 로봇의 동작을 사전에 설정 및 제어할 수 있게 된다. 예를 들어 로봇(100)이 청소용 로봇인 경우 일반 바닥과 바닥 물체(10)에 대한 청소 방식을 별도로 설정하거나 바닥 물체(10)에 대한 청소만을 지시할 수 있게 된다. 이하 전술한 로봇(100)에 대하여 도 2a 및 도 2b를 참조하여 보다 구체적으로 설명하도록 한다.
도 2a는 본 발명의 일 실시예에 따른 로봇(100)의 사시도이고, 도 2b는 본 발명의 일 실시예에 따른 로봇(100)의 구조를 나타낸 블록도이다. 도시된 로봇(100)은 주행부(210), 투사부(220), 촬영부(230), 움직임 관리부(240), 검출부(250), 및 맵 관리부(260)를 포함한다. 도 2a에서 투사부(220)가 촬영부(230)의 상단에 존재하지만, 본 발명은 투사부(220)와 촬영부(230)의 배치 구조에 한정되지 않는다.
주행부(210)는 로봇(100)을 이동시킨다. 이를 위하여 주행부(210)는 하나 이상의 바퀴(212)와 바퀴(212)를 회전시키는 모터(도시하지 않음)를 포함할 수 있다. 그러나 본 발명은 이에 한정되지 않으면 주행부(210)는 로봇(100)을 이동시킬 수 있는 공지의 다른 주행 수단을 포함할 수도 있다.
투사부(220)는 구조광(structured light, 30)을 투사한다. 앞서 설명한 바와 같이 구조광은 하나의 선형, 복수의 선형, 행렬 형태 등을 띠며 로봇(100)의 전방으로 하향 투사된다. 구조광의 바람직한 실시예로써 라인 레이저를 들 수 있다. 라인 레이저는 레이저를 발생시키는 발광 다이오드와 발광 다이오드가 발생시킨 레이저를 선형으로 분산시키는 광학계(렌즈, 거울, 프리즘 등)로 구현 가능하다. 투사부(220)는 구조광을 주기적으로 투사하거나 항시 투사할 수 있다.
촬영부(230)는 구조광이 투사되는 영역에 대한 촬영 작업을 수행함으로써, 구조광이 촬상된 영상 프레임을 제공한다. 바람직하게는, 촬영부(230)는 영상 프레임을 주기적으로 제공한다. 구조광을 촬상시키기 위하여 촬영부(230)는 투사부(220)와 동기화될 수 있다. 즉, 투사부(220)가 구조광을 투사하는 시점에 촬영부(230)는 촬영 작업을 수행할 수 있게 된다. 이러한 촬영부(230)는 CCD(charge coupled device), CMOS(complementary metal-oxide semiconductor), SMPD(Single-carrier Modulation Photo Detector) 등의 촬상 소자를 포함할 수 있다.
움직임 관리부(240)는 로봇(100)의 이동 방향을 제어한다. 따라서, 주행 부(210)는 움직임 관리부(240)의 제어에 따라서 로봇(100)을 이동시키게 된다. 특히 움직임 관리부(240)는 촬영부(230)가 제공하는 영상 프레임에 촬상된 구조광을 이용하여 로봇(100)이 바닥 물체로 접근하고 바닥 물체의 경계를 추종하도록 로봇(100)의 이동 방향을 제어할 수 있다. 움직임 관리부(240)에 대한 구체적인 설명은 도 3을 참조하여 후술하도록 한다.
검출부(250)는 바닥 물체의 경계를 추종하는 작업에 따른 로봇(100)의 이동 경로를 바탕으로 하여 바닥 물체를 검출한다. 본 명세서에서 바닥 물체를 검출한다는 것은 바닥 물체가 차지하고 있는 영역을 확정하고 바닥 물체의 물체의 크기를 측정한다는 의미를 포함한다. 로봇(100)의 이동 경로를 확인하기 위하여 검출부(250)는 로봇(100)의 위치 및 방향의 변화를 측정할 수 있는 엔코더, 자이로스코프 등을 포함할 수 있다.
검출부(250)는 바닥 물체의 크기를 통해서 바닥 물체의 종류를 분류할 수도 있다. 예를 들어 검출부(250)는 1m*1m 이상의 크기를 갖는 바닥 물체는 카펫류로 분류하고, 0.5m*0.5m ~ 1m*1m의 크기를 갖는 바닥 물체는 러그류로 분류하고, 0.5m*0.5m 미만의 크기를 갖는 바닥 물체는 슬리퍼류로 분류할 수 있다. 바닥 물체의 종류를 분류함으로써 바닥 물체의 종류에 따른 작업 분류가 가능해진다.
경계 측정부(244)는 바닥 물체의 경계를 측정하기 위하여 색상 정보를 이용할 수도 있다. 예를 들어 영상 프레임에 촬상된 구조광을 통하여 바닥 물체의 존재가 감지되면, 경계 측정부(244)는 바닥 물체의 색상 정보와 바닥의 색상 정보 간의 차분 값을 구하고 구해진 차분 값의 절대치(이하 초기 색도차라 한다)를 소정의 임계치와 비교한다. 여기서 바닥 물체의 색상 정보는 구조광을 통해서 바닥 물체가 존재하는 것으로 추정되는 영역을 영상 프레임에서 샘플링하고 샘플링된 영역의 색상 정보를 분석함으로써 얻을 수 있다.
만약 초기 색도차가 제1 임계치 이상이라면, 경계 측정부(244)는 영상 프레임에서 바닥 물체의 색상 정보와 제2 임계치 미만의 차이를 나타내는 색상을 갖는 영역과 제2 임계치 이상의 차이를 나타내는 색상을 갖는 영역을 분리함으로써, 바닥 물체의 경계를 측정할 수 있다.
그 후, 구조광을 이용하여 얻은 바닥 물체의 경계 방향과 색상 정보를 이용하여 얻은 바닥 물체의 경계 방향의 가중치 합(weighted sum)을 통해서 바닥 물체의 경계 방향을 결정할 수 있으며, 이를 수학식1로 나타내었다.
[수학식1]
수학식1에서
는 구조광을 통해서 얻은 바닥 물체의 경계 방향이고,
는 색상 정보를 이용하여 얻은 바닥 물체의 경계 방향이고,
는 이들의 가중치 합에 따른 바닥 물체의 경계 방향이다. 또한 k는 가중치를 나타내는데,
와
의 신뢰도에 따라서 사전에 설정되어 있을 수도 있고,
와
에 대한 측정 결과에 따라서 동적으로 설정될 수도 있다. 예를 들어 가중치 k는 초기 색도차를 영상 프레임이 가질 수 있는 최대 색도 값인 255로 나눈 값으로 설정될 수 있다.
맵 관리부(260)는 로봇(100)의 이동 가능 영역을 나타내는 기준 맵이 검출부(260)에 의하여 검출된 바닥 물체의 존재가 반영되도록 기준 맵을 갱신한다. 여기서 기준 맵은 벽이나 가구 등과 같이 로봇(100)의 이동을 차단시키는 장애물들의 배치 구조를 나타낸 맵으로서 사전에 작성되어 있을 수 있다. 기준 맵을 작성하는 기술은 다양하게 공지되어 있으므로, 본 명세서에서는 이에 대한 설명을 생략하기로 한다. 맵 관리부(260)는 검출부(250)로부터 바닥 물체의 크기, 영역, 재질, 종류 등과 같은 검출 정보를 얻을 수 있으며, 검출 정보를 기준 맵 상에 반영시킨다.
도 3은 도 2의 움직임 관리부(240)를 보다 구체적으로 나타낸 블록도이다. 도시된 움직임 관리부(240)는 거리 계산부(242), 경계 측정부(244), 및 제어부(246)를 포함한다.
거리 계산부(240)는 촬영부(30)로부터 제공되는 영상 프레임에 촬상된 구조광을 통하여 높이 차가 감지되는 경우 바닥 물체가 존재하는 것으로 판단하고, 로봇(100)의 현재 위치로부터 바닥 물체까지의 거리를 계산한다. 앞서 설명한 바와 같이 바닥의 높이 차는 영상 프레임 상에서 구조광의 위치를 통하여 판단할 수 있다. 투사부(220)가 투사한 구조광이 일반적인 바닥에 투영되면, 촬영부(230)가 제공하는 영상 프레임에서 구조광이 촬상되는 위치는 일정하게 유지된다. 따라서 구조광이 바닥에 투사될 경우에 촬영부(230)가 제공하는 영상 프레임에서 구조광이 존재하는 기준 위치를 사전에 저장시켜두고, 실제로 촬영된 영상 프레임에서 구조광이 존재하는 위치를 기준 위치와 비교함으로써 바닥 물체의 존재 여부가 확인될 수 있다. 도 4a 및 도 4b를 참조하여 바닥 물체의 존재를 확인하는 과정에 대하여 설명하도록 한다.
도 4a는 로봇(100)이 바닥 물체(10)의 경계면에 수직한 방향으로 이동하는 장면과 각 장면에서 촬영부(230)가 촬영한 영상 프레임을 시간적 순서에 따라서 나타낸 도면이다. 시간 t1과 t2에서와 같이 구조광(30)이 바닥에 투사된 경우, 영상 프레임에 존재하는 구조광(30a)의 위치는 기준 위치(410)와 동일하다. 그러나, 시간 t3에서와 같이 구조광(30)이 바닥 물체(10)에 투사된 경우, 영상 프레임에 존재하는 구조광(30a)의 위치가 기준 위치(410)보다 높게 나타난다. 이 경우, 검출부(250)는 전방에 바닥 물체(10)가 존재하는 것으로 판단할 수 있다.
도 4b는 로봇(100)이 바닥 물체(10)의 경계면에 비스듬한 방향으로 이동하는 장면과 각 장면에서 촬영부(230)가 촬영한 영상 프레임을 시간적 순서에 따라서 나타낸 도면이다. 시간 t1과 t2에서와 같이 구조광(30)이 바닥에 투사된 경우, 영상 프레임에 존재하는 구조광(30a)의 위치는 기준 위치(410)와 동일하다. 그러나, 시간 t3에서와 같이 구조광(30)이 바닥 물체(10)와 바닥에 걸쳐서 투사되면 촬영부(230)가 촬영한 영상 프레임에 존재하는 구조광(30a)에는 단차(420)가 존재하게 된다. 단차(420)가 존재하는 구조광(30a)에서 기준 위치(410) 상에 촬상된 부분은 바닥을 나타내고 기준 위치(410)보다 높은 부분은 바닥 물체(10)를 나타낸다.
영상 프레임에 촬상된 구조광의 위치를 통해서 높이 차가 감지되면 거리 계산부(242)는 구조광이 투사된 영역에 바닥 물체가 존재하는 것으로 판단하고, 로봇(100)의 현재 위치로부터 바닥 물체까지 이동하기 위한 거리 및 방향을 계산한다. 이하 도 5a 내지 도 5c를 참조하여 이에 대해 설명하도록 한다.
도 5a는 본 발명의 일 실시예에 따른 촬영부(230)와 임의의 대상 지점 간의 좌표 관계를 나타낸 도면이다. 도 5a에서 좌표축 Xc, Yc, Zc는 로봇(100) 상에서 촬영부(230)가 사용하는 기준 좌표축이고, 기준 좌표축 Xc, Yc, Zc는 기준점 C를 중심으로 한다. Ox, Oy는 영상 프레임(510)의 좌표 중 촬영부(230)의 좌표축 Zc에 대응하는 기준점이고, Yp, Xp는 영상 프레임(510)의 기준 좌표축이다. 점 P는 대상 지점을 나타내며 P'는 영상 프레임(510)에서 대상 지점 P가 촬상된 위치를 나타낸다.
본 발명에서 대상 지점은 구조광이 투사된 지점을 나타낸다. 바람직하게는, 대상 지점은 영상 프레임에 촬상된 구조광에 단차가 존재하지 않으면 구조광의 중심점에 대응하는 위치이고 영상 프레임에 촬상된 구조광에 단차가 존재하면 단차 지점에 대응하는 위치일 수 있다.
도 5b는 도 5a와 같은 좌표 관계에서 촬영부(230)로부터 대상 지점 P까지의 Zc축 방향으로의 거리 Cz와 Yc축 방향으로의 거리 Cy간의 관계를 나타낸 도면이다. 도 5b에서 f는 촬영부(230)의 초점 거리이고, y는 초점 거리 f에서 대상 지점 P의 상이 맺히는 Yc 축 방향의 거리이다. y는 수학식2과 같이 나타낼 수 있다.
[수학식2]
수학식2에서
은 영상 프레임(510)에서 대상 지점의 촬상 위치 P'가 영상 프레임(510)의 기준점(Ox, Oy)으로부터 Yp 축 방향으로 이격된 거리이고,
은 촬 영부(230)의 촬영 작업과 영상 프레임(510)의 크기에 따른 Yc축 방향의 왜곡 정도를 보상하기 위한 스케일 파라미터이다.
도 5b에 도시된 관계에 따른 삼각법과 수학식2을 이용하면 수학식3와 같은 Cy와 Cz 간의 관계가 성립한다.
[수학식3]
이와 유사한 방식을 이용하면 촬영부(230)로부터 물체까지의 Zc축 방향으로의 거리 Cz와 Xc축 방향으로의 거리 Cx 간의 관계도 구할 수 있다. 수학식4은 Cx와 Cz 간의 관계 및 Cy와 Cz 간의 관계를 행렬식으로 나타낸 것이다.
[수학식4]
수학식4에서
은 촬영부(230)의 촬영 작업과 영상 프레임(510)의 크기에 따른 Xc 축 방향의 왜곡 정도를 보상하기 위한 스케일 파라미터이다.
도 5c는 본 발명의 일 실시예에 따른 촬영부(230)의 기준 좌표축과 로봇(100)의 기준 좌표축 간의 관계를 나타낸 도면이다. Xr, Yr, Zr는 로봇(100)의 기준 좌표축이고, Xc, Yc, Zc는 촬영부(230)의 기준 좌표축이다. 여기서 촬영 부(230)의 기준 좌표축은 도 5a에서 설명한 바와 동일하다. C와 R은 각각 로봇(100)의 기준 좌표축과 촬영부(230)의 기준 좌표축의 중심을 나타내는 기준점이다.
로봇(100)의 기준 좌표축 중 Xr과 Zr로 이루어지는 평면은 로봇이 이동하는 바닥 평면과 동일하고 Zr은 로봇의 전방을 향한다. 본 실시예에서 Xr과 Xc는 서로 평행하고, 촬영부(230)의 기준점 C는 로봇(100)의 기준점 R로부터 Yr 방향으로 H만큼 이격되어 있다. 또한 Zc는 Zr에 대하여 각도 α만큼 회전되어 있다.
이 경우, 로봇(100)의 기준 좌표축을 사용한 좌표계와 촬영부(230)의 기준 좌표축을 사용한 좌표계 간의 관계는 수학식5와 같이 나타낼 수 있다.
[수학식5]
수학식5에서 Rx, Ry, Rz는 각각 로봇(100)의 기준점 R로부터 Xr, Yr, Zr 방향으로의 거리를 의미하고, Cx, Cy, Cz는 각각 촬영부(230)의 기준점 C로부터 Xc, Yc, Zc 방향으로의 거리를 의미한다.
수학식5를 이용하면
의 관계가 성립한다. 여기서 로봇(100)의 이동 면인 XrZr 평면을 위하여 Ry=0으로 놓고 수학식4을 통해 얻은 Cy와 Cz 간의 관계를 대입하면 수학식6를 얻을 수 있다.
[수학식6]
수학식5와 수학식6를 이용하면, 로봇(100)으로부터 대상 지점까지의 Zr축 및 Xr축 방향으로의 거리 Rz와 Rx를 구할 수 있다. 수학식7와 수학식8은 각각 Rz와 Rx를 구하는 식을 나타낸다.
[수학식7]
[수학식8]
도 5a 내지 도 5c와 수학식2 내지 수학식8을 참조하여 설명한 거리 계산 방식은 본 발명의 일 실시예일뿐이므로 본 발명이 이에 한정되는 것은 아니며, 실시예에 따라서 다양한 공지의 기술이 이용될 수도 있다.
한편, 전술한 거리 계산 방식을 사용하면 바닥에서부터 구조광이 투사된 지점까지의 높이 차를 직접 계산하는 것도 가능하다.
다시 도 3을 참조하면 경계 측정부(244)는 바닥 물체의 경계 방향을 측정한다. 바닥 물체의 경계 방향은 로봇(100)이 바닥 물체로부터 일정 거리 이내에 위치한 상태에서 로봇(100)이 회전하는 동안 촬영부(230)가 제공하는 연속된 영상 프레임들에 존재하는 구조광의 단차들의 연장 방향을 통하여 측정될 수 있다. 예를 들어 도 6에 도시한 바와 같이 로봇(100)이 바닥 물체(10)의 경계 부근에서 시계 방향으로 회전하면서 시간적으로 연속된 네 개의 영상 프레임을 생성하는 경우, 거리 계산부(242)는 로봇(100)의 현재 위치로부터 각 영상 프레임에서 구조광의 단차(610, 620, 630, 640)가 존재하는 지점에 대응하는 위치까지의 거리와 방향을 계산할 수 있다. 이때 경계 측정부(244)는 단차가 존재하는 지점들의 좌표를 생성하고 생성된 좌표들을 연결함으로써 바닥 물체의 경계 방향을 측정할 수 있다.
제어부(246)는 거리 계산부(242)와 경계 측정부(244)로부터 제공되는 정보를 이용하여 로봇(100)이 진행할 방향이나 로봇(100)의 회전 방향 등을 결정하고, 결정 결과를 통하여 주행부(210)를 제어한다.
이하 전술한 로봇(100)의 바닥 물체 검출 과정에 대하여 구체적으로 설명하도록 한다.
도 7은 본 발명의 일 실시예에 따른 바닥 물체를 검출하는 과정을 나타낸 흐름도이다.
먼저 투사부(220)가 구조광을 투사하면(S710) 촬영부(230)는 구조광이 투사된 영역을 촬영하여 영상 프레임을 제공한다(S720). 구조광은 주기적으로 투사될 수 있으며, 촬영부(230)는 투사부(220)와 동기화되어 구조광이 투사될 때마다 촬영 작업을 수행할 수 있다. 또는, 투사부(220)는 구조광을 끊임없이 투사하고 촬영부(230)가 일정 주기마다 구조광이 투사된 영역을 촬영할 수도 있다. 본 흐름도에서는 구조광의 투사와 촬영 작업이 과정 S710과 S720을 통해서 한번 수행되는 것처럼 도시되어 있으나, 이하의 과정이 수행되는 동안 구조광의 투사와 촬영 작업은 지속적으로 수행된다.
움직임 관리부(240)는 영상 프레임에 존재하는 구조광을 통해서 바닥의 높이 차가 발생하였는지 판단한다(S730). 바닥 물체로 인하여 높이 차가 발생하였는지의 여부는 4a 및 도 4b를 참조하여 설명한 바와 같은 작업을 통해서 판단할 수 있다. 물론, 도 5a 내지 도 5c와 수학식2 내지 수학식8을 참조하여 설명한 내용을 바탕으로 하여 영상 프레임에 존재하는 구조광의 위치에 대응하는 지점의 높이를 계산함으로써 높이 차를 감지하는 것도 가능하다.
만약 높이 차가 존재하지 않으면, 주행부(210)는 움직임 관리부(240)의 제어에 따라서 지금까지의 로봇(100)의 이동 패턴을 유지한다(S740). 그러나 과정 S730의 판단 결과 바닥의 높이 차가 감지되면, 주행부(210)는 움직임 관리부(240)의 제어에 따라서 바닥 물체로 로봇(100)을 접근시킨다(S750). 이 때, 로봇(100)은 바닥 물체의 경계로부터 일정 거리에 위치할 때까지 이동하며, 로봇(100)으로부터 바닥 물체까지의 거리 및 방향은 도 5a 내지 도 5c를 참조하여 설명한 내용에서처럼 거리 계산부(242)를 통해서 구해질 수 있다.
로봇(100)이 바닥 물체의 경계로부터 소정의 거리에 위치할 때까지 이동하면, 움직임 관리부(240)는 로봇(100)이 바닥 물체의 경계를 추종하도록 주행 부(210)를 제어하고 주행부(210)는 움직임 관리부(240)의 제어에 따라서 바닥 물체의 경계를 따라 로봇(100)을 이동시킨다(S760).
바닥 물체의 경계를 추종하는 작업이 완료되면 검출부(250)는 로봇(100)이 바닥 물체의 경계를 따라서 이동한 경로를 이용하여 바닥 물체를 검출한다(S770). 이 때 검출부(250)는 바닥 물체의 크기를 이용하여 바닥 물체의 종류를 분류하여 둘 수 있다.
그 후, 맵 관리부(260)는 바닥 물체의 존재 영역이 반영되도록 로봇(100)의 이동 가능 영역을 나타내는 기준 맵을 갱신한다(S780).
도 8은 본 발명의 일 실시예에 따른 바닥 물체의 경계를 추종하는 과정을 나타낸 흐름도이다. 도시된 흐름도는 도 7의 과정 S760를 보다 구체적으로 나타낸 도면이다.
먼저 바닥 물체로부터 일정 거리 이내로 접근하면, 제어부(246)는 회전 방향을 지시하고, 주행부(240)는 제어부(246)가 지시한 방향으로 로봇(100)을 회전시킨다(S810).
로봇(100)이 회전하는 동안에도 투사부(220)와 촬영부(230)의 동작으로 인하여 구조광이 촬상된 영상 프레임이 주기적으로 제공된다. 경계 측정부(244)는 연속적으로 제공된 영상 프레임들을 분석하여 바닥 물체의 경계 방향을 결정한다(S815).
바닥 물체의 경계 방향이 결정되면 제어부(246)는 이동 방향을 바닥 물체의 경계 방향과 평행한 방향으로 결정하고, 주행부(240)는 제어부(246)가 결정한 방향 으로 로봇(100)을 이동시킨다(S820).
바닥 물체의 경계를 따라서 이동하던 중 로봇(100)에게 발생할 수 있는 상황은 크게 두 가지로 나누어 볼 수 있다. 하나는 바닥 물체의 코너에 접근하는 경우이고 다른 하나는 장애물을 만나게 되는 경우이다.
우선 바닥 물체의 코너에 접근하는 경우 촬영부(230)가 제공하는 영상 프레임에서 구조광의 단차가 사라지게 된다. 도 9에 로봇(100)이 바닥 물체(10)의 코너에 접근하는 장면과 각 장면에서의 영상 프레임을 도시하였는데, 도 9의 시간 t3에서 구조광(910)의 단차(920)가 사라져 있다.
로봇(100)이 바닥 물체의 경계 방향을 따라 이동하는 중에, 제어부(246)는 촬영부(230)가 제공하는 영상 프레임에서 구조광의 단차가 사라지는지의 여부를 판단한다(S825). 만약 영상 프레임에서 구조광의 단차가 사라진다면 바닥 물체의 코너에 다다른 것을 의미하므로, 제어부(246)는 단차가 사라진 지점까지 로봇(100)의 이동을 지시하고 주행부(210)가 그 지시에 따라서 로봇(100)을 이동시킨다(S830).
로봇(100)이 단차가 사라진 지점까지 이동하면, 제어부(246)는 회전을 지시하고 주행부(210)는 로봇(100)을 회전시킨다(S835). 여기서 로봇(100)의 회전 방향은 바닥 물체가 존재하던 방향이다. 예를 들어 도 9에 도시된 바와 같은 단차를 감지하면서 바닥 물체의 경계를 따라서 이동하였다면 영상 프레임의 구조광을 통해서 바닥 물체가 로봇(100)의 왼쪽 방향에 존재한다는 사실을 알 수 있다. 이 경우, 제어부(246)는 로봇(100)이 왼쪽 방향으로 회전하도록 지시하게 된다.
로봇(100)이 회전하는 동안 촬영부(230)로부터 제공되는 영상 프레임을 통해 서 경계 측정부(244)는 바닥 물체의 경계 방향을 다시 결정한다(S840). 그 후, 주행부(210)는 경계 측정부(244)에 의하여 결정된 바닥 물체의 경계 방향과 평행한 방향으로 로봇(100)을 이동시킨다(S845). 과정 S835 내지 S845는 과정 S810 내지 S820과 유사한 방식으로 수행된다.
로봇(100)이 바닥 물체의 경계 방향을 따라서 이동하는 중에 제어부(246)는 바닥 물체의 추종 작업에 따른 로봇(100)의 이동 경로가 폐루프를 형성하는지 판단한다(S850). 만약 로봇(100)의 이동 경로가 폐루프를 형성한다면 바닥 물체의 추종 작업이 종료된다.
한편, 로봇이 바닥 물체의 경계를 따라서 주행하는 도중, 제어부(246)는 로봇(100)의 전방에 장애물 존재하는지의 여부를 판단한다(S855). 촬영부(230)가 제공하는 영상 프레임에서 구조광의 높이가 임계치 이상으로 높아지는 경우 제어부(246)는 장애물이 존재하는 것으로 판단할 수 있는데, 그 일 예를 도 10a와 도 10b에 도시하였다.
도 10a에 로봇(100)이 장애물(1010)에 접근하는 장면과 각 장면에서의 영상 프레임을 나타낸 도면이다. 도시된 바와 같이 바닥 물체가 장애물에 접해 있는 상태에서 로봇(100)이 장애물에 가까워지면, 구조광이 장애물에 투사된다. 이 때 영상 프레임에서 구조광(1020)의 단차(1030)의 단차가 사라지고(시간 t2 참조), 구조광(1020)의 촬상 위치가 점차 높아지게 된다(시간 t3 참조). 제어부(246)는 영상 프레임에서 구조광의 촬상 위치가 일정 높이를 초과할 경우 장애물의 존재를 확인할 수 있다.
도 10b 역시 로봇(100)이 장애물에 접근하는 장면과 각 장면에서의 영상 프레임을 나타낸 도면이다. 도 10b와 같은 상황에서 로봇(100)이 장애물에 접근에 가까워지면, 구조광(1080)은 장애물(1040)과 바닥에 걸쳐서 투사된다. 이 경우, 영상 프레임에서 구조광(1020)의 단차(1050, 1060, 1070)가 점차 커지게 되는데, 이를 통해서 제어부(246)는 장애물(1040)의 존재를 확인할 수 있게 된다
다시 도 8을 참조하면, 과정 S855에서 장애물이 존재하는 것으로 판단되면 제어부(246)는 바닥 물체의 경계를 추종하던 중 처음으로 감지된 장애물인지 판단한다(S860). 처음 감지된 장애물이면 제어부(246)는 로봇(100)의 진행 방향이 반대가 되도록 지시한다. 이 때 주행부(210)는 로봇(100)의 진행 방향을 180도 회전시키고 다시 바닥 물체의 경계를 따라서 로봇을 이동시킨다(S865). 물론 이 경우, 과정 S810 내지 S820에서와 같이 바닥 물체의 경계를 다시 측정하고, 측정된 경계 방향에 따라서 로봇(100)을 이동시킬 수 있다.
한편, 과정 S860의 판단 결과 두 번째로 감지된 장애물이면 바닥 물체 추종 작업이 종료된다.
이와 같은 과정을 통해서 바닥 물체의 경계의 추종이 완료되면 도 7의 과정 S770에서 검출부(250)는 바닥 물체를 검출하게 되는데, 바닥 물체가 장애물과 인접해 있는 상태에 따라서 바닥 물체 검출 방식 달라질 수 있다.
우선 도 11a에 도시된 바와 같이 바닥 물체(10)가 장애물과 접해있지 않은 경우, 바닥 물체(10)의 추종 작업 시 로봇의 이동 경로(1110)(이하 추종 경로라 한다)는 폐루프를 형성하게 된다. 추종 경로가 폐루프를 형성하면 검출부(250)는 추 종 경로(1110)로 구획되는 영역을 바닥 물체(10)가 존재하는 영역으로 결정하게 된다.
한편, 도 11b에 도시된 바와 같이 바닥 물체(10)의 한쪽 경계면이 장애물과 접해 있는 경우, 로봇(100)은 바닥 물체(10)의 나머지 세 경계면을 추종하게 된다. 따라서 추종 경로(1120)는 소정의 각도로 연결된 세 개의 라인으로 형성되는데, 이 경우 검출부(250)는 추종 경로(1120)의 양 끝점(1122, 1124)을 연결하여 얻어지는 폐루프를 바닥 물체(10)의 영역으로 결정하게 된다.
또한, 도 11c에 도시된 바와 같이 바닥 물체(10)의 두 경계면이 장애물과 접해 있는 경우, 로봇(100)은 바닥 물체(10)의 나머지 두 경계면을 추종하게 된다. 따라서 추종 경로(1130)는 소정의 각도로 연결된 두 개의 라인으로 형성되는데, 이 경우 검출부(250)는 추종 경로(1130)의 양 끝점(1132, 1134)을 잇는 선분(1136)을 기준으로 하여 추종 경로(1130)를 대칭 처리하고, 대칭 처리 결과 얻어지는 폐루프를 바닥 물체(10)의 영역으로 결정하게 된다.
끝으로, 도 11d에 도시된 바와 같이 바닥 물체(10)의 세 경계면이 장애물과 접해 있는 경우, 로봇(100)은 바닥 물체(10)의 나머지 한쪽 경계면을 추종하게 된다. 이 경우 검출부(250)는 바닥 물체(10)의 색상 정보를 사용하여 바닥 물체(10)의 영역을 결정하게 된다. 이를 보다 구체적으로 설명하면, 바닥 물체(10)의 한쪽 경계만이 파악된 경우, 주행부(210)는 제어부(246)의 제어에 따라서 바닥 물체(10)의 경계 방향에 대하여 수직한 방향으로 일정 간격 로봇(100)을 이동시킨다. 바람직하게는 주행부(210)는 바닥 물체(10)의 경계의 중앙 부분에서 바닥 물체(10)의 경계 방향에 대하여 수직한 방향으로 로봇(100)을 이동시킬 수 있다.
그 후, 주행부(210)는 로봇(100)이 바닥 물체(10)를 향하도록 로봇(100)을 회전시키고, 촬영부(230)는 바닥 물체(10)를 촬영한다. 이 때, 촬영부(230)로부터 제공되는 영상 프레임에는 도 12에 도시된 바와 같이 바닥 물체(10)가 촬상되게 된다. 검출부(250)는 영상 프레임에서 바닥 물체(10)의 색상 정보와 임계치 이내의 색도차를 갖는 영역을 분리함으로써 바닥 물체(10)의 두 경계(1210, 1220)를 결정한다. 여기서 바닥 물체(10)의 색상 정보는 바닥 물체(10)의 경계 추종 시 촬영부(230)가 제공하는 영상 프레임에서 구조광의 위치를 통하여 바닥 물체(10)가 존재하는 것으로 판단된 영역에 대한 샘플링을 통하여 사전에 구해놓은 것일 수 있다.
영상 프레임 상에서 바닥 물체(10)의 두 경계(1210, 1220)가 결정되면 검출부(250)는 두 경계(1210, 1220) 간의 거리를 이용하여 바닥 물체(10)의 폭(1141, 도 11d 참조)을 추정하게 된다. 물론 영상 프레임은 2차원적이므로 바닥 물체(10)의 높이를 나타내는 부분(1230)이 바닥 물체(10)의 폭(1141)을 측정하는데 영향을 미치지 않도록 하기 위하여, 두 경계(1210, 1220) 간의 거리에서 바닥 물체(10)의 두께에 해당하는 부분(1230)의 거리는 제외시키는 것이 바람직하다. 바닥 물체(10)의 두께는 바닥 물체(10)를 감지할 당시 구조광을 통하여 얻은 바닥 물체(10)의 높이 차에 대응하는 수치로 결정될 수 있다. 이러한 작업을 위하여 영상 프레임에서 소정 위치의 라인 간의 거리에 따른 각 라인에 대응하는 위치 간의 실제 거리에 대한 정보를 사전에 저장하여 두고, 검출부(250)가 이를 이용하도록 할 수 있다.
바닥 물체(10)의 폭이 결정되면 검출부(250)는 바닥 물체(10)의 한쪽 경계에 대한 추종 경로(1140)와 색상 정보를 이용하여 얻은 바닥 물체(10)의 폭을 곱한 값으로 바닥 물체(10)의 크기를 계산하고, 바닥 물체의 존재 영역을 결정하게 된다.
한편, 검출부(250)는 바닥 물체의 재질을 측정할 수도 있다. 바닥 물체의 재질은 종래의 기술에 의하여 측정될 수도 있으나, 검출부(250)는 구조광을 통하여 바닥 물체의 재질을 측정할 수도 있다. 이를 위하여 주행부(210)는 제어부(246)의 제어에 따라서 구조광이 바닥 물체의 표면을 스캐닝하도록 로봇(10)을 이동시킨다. 이 때 촬영부(230)가 제공하는 연속된 영상 프레임들은 바닥 물체의 표면에 투사된 구조광이 촬상되어 있다. 검출부(250)는 영상 프레임 상에서의 구조광의 위치 정보를 이용하여 구조광이 투사된 지점의 높이 정보를 획득한다. 그 후, 검출부(250)는 높이 정보에서 잡음을 제거한 후 남은 정보들의 고주파 성분을 계산한다. 도 13a에 도시한 바와 같이 긴 털을 포함 하는 등의 이유로 표면이 불균일한 바닥 물체의 높이 정보는 잡음을 제거하더라도 고주파 성분이 많이 존재한다. 따라서 고주파 성분이 소정의 임계치보다 많으면 검출부(250)는 바닥 물체를 긴 털을 포함하는 물체로 판단하고 그에 대한 정보를 바닥 물체의 검출 정보에 반영한다. 그러나 도 13b에 도시한 바와 같이 짧은 털로 이루어 지는 등의 이유로 표면이 균일한 바닥 물체의 높이 정보는 잡음을 제거할 경우 고주파 성분이 적다. 따라서 소정의 임계치보다 많지 않으면 검출부(250)는 바닥 물체를 평평한 물체로 판단하고 그에 대한 정보를 바닥 물체의 검출 정보에 반영한다.
이상과 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.