본문 바로가기

카테고리 없음

[2024 ROS 스터디] 정성진 #4주차 - SLAM과 내비게이션

반응형

https://youtube.com/playlist?list=PLX-Ur4rl2-qxGXUo_odjVjv7eqN-Hmuek&feature=shared

 

2024 ROS 스터디 4주차

 

www.youtube.com

SLAM - Simultaneous Localization And Mapping : 동시적 위치 추정 및 지도 작성

Navigation : 차량 자동 항법 장치

 

길 찾기에 필요한 요소

1. 위치: 로봇의 위치 계측/추정하는 기능

GPS - 오차가 발생하고, 날씨 영향 받고, 실외에서만 사용 가능.

Indoor Positioning Sensor -  Landmark, Indoor GPS, Wifi SLAM, Beacon

추측 항법(dead reckoning) - 양 바퀴 축의 회전 값 이용. 이동 거리와 회전 값을 계산하여 위치 측정 그러나 바닥 슬립, 기계적, 누적 오차 발생. 따라서 IMU 등의 관성 센서, 필터로 위치 보상. 

필요한 정보로는 양 바퀴 축의 엔코더 값, 바퀴 간 거리, 바퀴 반지름이 있다.

 

2. 센싱: 벽, 물체 등의 장애물 계측 기능

거리센서 - LRF, 초음파센서, 적외선 거리센서(PSD)

비전센서 - 스테레오 카메라, 모노 카메라, 전 방향 옴니 카메라

Depth camera - SwissRanger, Kinect-2

 

3. 지도: 길과 장애물 정보가 담긴 지도

SLAM - 위치정보와 센싱정보를 바탕으로 지도를 만드는 알고리즘.

 

4. 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능

내비게이션, 위치 추정, 경로 탐색/계획

Dynamic Window Approach, A*알고리즘, 포텐셜 장, 파티클 필터, 그래프 등의 다양한 알고리즘 존재.

 

위치+센싱 -> 지도 : SLAM

위치+센싱+지도 -> 경로 : Navigation

 

Gmapping - openSLAM에 공개된 SLAM의 한 종류, ROS에서 패키지로 제공.

특징: Rao-Blackwellized 파티클 필터, 파티클 수 감소, 그리드 맵.

하드웨어 제약 사항 - x,y, theta 속도 이동 명령

                              - 주행기록계(Odometry)

                              - 계측 센서: 2차 평면 계측 가능 센서(LRF, LIDAR, Kinect, Xtion 등)

 

아래 링크를 참고하여 다음과 같은 실습을 진행하였다.

https://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/#gazebo-simulation

 

ROBOTIS e-Manual

 

emanual.robotis.com

roslaunch turtlebot3_gazebo turtlebot3_world.launch
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

위릐 명령어를 통해 아래 사진과 같은 결과를 얻을 수 있었다. rviz화면과 gazebo화면이고, 터틀봇을 조작하여 rviz화면에 2D 라이다 센서로 얻은 정보를 빨간색으로 표시하는 것을 확인 할 수 있다.

다음은 Gmapping을 이용하여 지도를 그리는 실습이다.

roslaunch turtlebot3_gazebo turtlebot3_world.launch
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

위의 명령어를 통해 아래 사진과 같은 결과를 얻을 수 있었다. 위 실습과는 다른 차이점이 실시간으로 rviz화면에 라이다 센서 정보를 그리는 것이 아닌 로봇이 이동함에 따라 지도를 그리는 것을 확인 할 수 있었다.

아래는 rosrun map_server map_saver 명령어를 통해 지도를 저장한 모습이다.

저장된 지도를 이용하여 Navigation을 실행해보겠다.

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml 명령어를 이용하여 아래 사진과 같이 실행시켜보았다.

왼쪽 그림의 초록색 점들이 로봇이 있을 확률을 나타내는 것인데, 초기에는 로봇의 위치도 다르고, 초록점도 많이 흩어져있는 것을 확인 할 수 있다. 초기위치는 2D pose Estimate버튼을 이용하여 화살표를 통해 설정해 줄 수 있었고, 로봇을 이동 시켜 줄 수록 초록점이 모이게 된다. 즉, 로봇이 있을 확률이 수렴하게 되는 것이다. 그리고 2D Nav Goal버튼을 이용하여 목적지로 로봇을 이동 시키는 실습까지 진행해보았다.

반응형