AutoCar

본문 바로가기
사이트 내 전체검색


AutoCar
AutoCar

11. SLAM 실습

페이지 정보

작성자 관리자 댓글 0건 조회 1,938회 작성일 21-01-22 21:02

본문

11. SLAM 실습

SLAM 실습


SLAM 은 LiDAR 를 통해 얻은 장애물 데이터를 축적해 주변 지도를 그려내는 알고리즘입니다. 

LiDAR 는 차체의 방향을 기준으로 데이터를 측정하기 때문에 차량이 이동하거나 회전하면 이전에 측정된 값과 다른 의미의 데이터를 축적하게 됩니다. 

그러므로 ICP (Iterative Closest Point) 알고리즘을 통해 이전 데이터와의 연관성을 찾아 데이터를 보정하여 축적하게 됩니다.


Pop 라이브러리에 SLAM 기능이 구현되어 있습니다. 

단, LiDAR 를 별도의 프로세스에서 동작시키기 때문에 LiDAR 를 사용하고 있는 경우 제대로 동작하지 않을 수 있습니

다.

Pop 에서 ROS 라이브러리를 불러오고, SLAM 객체를 생성합니다. 

객체가 생성되면 현재 위치를 중심으로 하여 주변 지도를 그리기 시작합니다.


from pop import ROS


slam=ROS.SLAM()



SLAM 객체는 map 과 pose 속성을 가지고 있고, 각각 축적된 지도와 차량의 위치/방향을 실시간으로 업데이트합니다. 

map 속성은 True 와 False 로 해당 좌표에 장애물 유무를 표시하며 축척율은 1:20 이므로 1 픽셀(값) 당 0.05m 에 해당합니다.

총 2048 x 2048 개의 값을 갖고 있으며 (1023,1023) 좌표가 시작점이 됩니다.


from pop import Util

import numpy as np


tmp=slam.map

imshow("map", np.ones((tmp.shape))*tmp*255)


pose 속성은 현재 위치와 방향을 반환합니다. 

position 값의 x, y, z 는 미터 단위로 반환되며 orientation 값의 x, y, yaw 는 Radian 단위로 반환하고 z, w 는 각각 sin(yaw), cos(yaw) 입니다.


print(slam.pose)



또, SLAM 객체가 생성된 이 후 HDMI 나 NoMachine 을 이용해 GUI 데스크탑 환경으로 접속하면 다음과 같이 실시간 SLAM 을 볼 수 있습니다.


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.