CHAPTER 11-1 기본개념
길찾기를 하기위해서 필요한 4가지는
1. 위치: 로봇의 위치 계측/추정하는 기능
2. 센싱: 벽, 물체 등의 장애물의 계측하는 기능
3. 지도: 길과 장애물 정보가 담긴 지도
4. 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능이 필요하다
더 필요한 조건이 있을까 곰곰이 생각해봤지만 위치, 센싱, 지도, 경로만 있으면 길찾기의 조건이 만족되는 것 같다.
강의 1시간 가량은 길찾기에 대한 개념과 각 요소들이 길찾기에 어떻게 작용하는지 설명하는 내용이었다.
CHAPTER 11-2 SLAM, CHAPTER 11-3 Navigation
Gmapping • OpenSLAM에 공개된 SLAM 의 한 종류, ROS에서 패키지로 제공
Gmapping은 슬램의 한 종류로서 터틀봇을 이용하여 지도를 작성하는 방법이다.
흰색은 로봇이 이동 가능한 자유 영역 ,
흑색은 로봇이 이동 불가능한 점유 영역,
회색은 확인되지 않은 미지 영역이다.
SLAM 관련 노드들의 처리 과정은
① sensor_node ② turtlebot3_teleop ③ turtlebot3_core ④ slam_gmapping ⑤ map_server으로 사진(강의)을 보면 더 이해가 쉽다.
NAVIGATION은 많이 듣던 단어 그대로 길을 찾는 과정, 방법을 말한다. 로봇의 속도 탐색 영역에서 로봇과 충돌 가능한 장애물을 회피하면서 목표점까지 빠르게 다다를 수 있는 속도를 선택하는 방법을 navigation이라 할 수 있다.
이제 본격적으로 실습에 들어갔다.
여기서도 오류 천지였다. 강의 자료는 키네틱이라서 멜로딕을 사용하는 나로서는 구글에서 정답을 찾을 수 밖에 없었다.
1) 의존 패키지를 설정하고
sudo apt-get install ros-melodic-joy ros-melodic-teleop-twist-joy \ ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc \ ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan \ ros-melodic-rosserial-arduino ros-melodic-rosserial-python \ ros-melodic-rosserial-server ros-melodic-rosserial-client \ ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server \ ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro \ ros-melodic-compressed-image-transport ros-melodic-rqt-image-view \ ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers
2 ) 터틀봇3 패키지도 설치한다.
source /opt/ros/melodic/setup.bash
sudo apt-get install ros-melodic-turtlebot3-msgs
sudo apt-get install ros-melodic-turtlebot3
3) pdf 파일 그대로 git clone 설치하면 된다. (bash 파일 맨 밑에 export TURTLEBOT3_MODEL=waffle_pi 입력)
cm을 한 다음 $ source devel/setup.bash을 계속 쳐줘야지 실행을 할 수 있다. 터미널에 계속 갱신을 해야한다.
pdf 그대로 다 하면 이런 화면이 뜬다. $ roslaunch turtlebot3_gazebo turtlebot3_world.launch
$ roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch
rviz도 켜주자
새로운 창에
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
를 입력하고 그 창에서 w를 누르니 앞으로 나아간다. 조금 오래된 노트북이라 그런가 너무 작동이 느렸다.
작동하는 난이도가 과장 조금 보태서 실제 자동차를 운전하는 것 보다 어려웠다.
$ roslaunch turtlebot3_slam turtlebot3_slam.launch
을 입력하여 slam 창을 키고 지도를 완성했다.
$ rosrun map_server map_saver -f ~/map
을 치면 home에 지도가 저장된다.흰 부분은 이동가능영역, 검정색은 장애물/물체 , 회색은 미지의 영역
$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
을 입력한다.네비게이션은 사용자가 지정해둔 지도를 바탕으로 로봇의 현재위치를 찾아내고 이동하기 때문이다.
2D pose Estimate를 선택한 후 turtle이 위치한 대략적인 위치를 정해준다.
2D Nav Goal을 통해 이 로봇을 움직일 수 있다.
녹색 화살표는 작은 확률들이고 빨간 화살표는 로봇이 움직이는 경로같았다.
거북이는 목적지에 정상도착했다.
강의에서 말한대로 일반적인 로봇은 이런 방식을 통해서 움직인다고 했다.
그렇다면 자율주행이라는 분야도 비슷하다는 말인데 이 분야에 한 발자국 다가간 느낌이 들었다.
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2023 ROS 스터디] 조영상 #4주차 - SLAM과 내비게이션 (1) | 2023.02.05 |
---|---|
[2023 ROS 스터디] 오현민 #4주차 - SLAM과 내비게이션 (0) | 2023.02.04 |
[2023 ROS 스터디] 김동훈 #4주차 - SLAM과 내비게이션 (0) | 2023.02.03 |
[2023 ROS 스터디] 조성준 #4주차 - SLAM과 내비게이션 (1) | 2023.02.03 |
[2023 ROS 스터디] 박주빈 #4주차 - ROS (0) | 2023.02.03 |