이번 글은 별도의 참고자료가 존재하지 않고, 참고하는 블로그가 있는 경우 바로 다음에 표시를 하고 지나가도록 하겠습니다.
자율주행 개요
자율주행은 간단하게 3가지 과정을 통해 진행이 된다고 생각할 수 있습니다. 가장 먼저 주변의 상황을 파악하는 인지(perception) 과정을 거치고, 인지 정보를 바탕으로 어떻게 주행을 진행할 것인가 계획을 세우는 판단(Decision making)과정을 거치게되고, 이를 통해 로봇이나 자동차를 움직이는 제어(Control)하게됩니다.
우리는 여기서 판단과정에 집중을 하고자 합니다. 판단은 또 크게 2가지로 나눌 수 있습니다. 첫 번째는 경로계획(path planning) 혹은 경로생성(path generation), 두 번째는 경로추종(path following)입니다. 간단하게 네비게이션으로 목적지를 찍으면 목적지까지 경로를 생성해주는 것을 경로계획이라고 생각할 수 있고, 사람이 직접 자동차를 움직여서 목적지까지 이동하는 것을 경로추종이라고 생각할 수 있습니다.
경로 계획
위에서 설명한 대로 네비게이션에 목적지를 찍으면 해당하는 위치까지 경로를 생성해주는 과정을 전역경로생성(계획)이라고 합니다.
그러면 자동차를 끌고 나와서 목적지까지 이동을 할 때, 1차선을 타고갈지 2차선을 타고갈지 계속해서 계획을 세우게 되는데, 이러한 과정을 지역경로생성(계획)이라고 합니다.
결국 자율주행의 경로계획 과정은 네비게이션을 통해서 전체경로를 생성하고 그 길을 따라가면서 발생하는 이벤트들을 처리하기 위해 계획하는 과정이라고 생각하면 됩니다.
그러면 자율주행에서 경로를 생성하기 위해 필요한 준비물은 무엇이 있을까요? 우선 전역경로계획을 위해서는 도로의 상황이 기록되어 있는 지도가 필요합니다. 지도가 있다면 목적지까지 손쉽게 경로를 생성할 수 있습니다.
지역경로를 생성하는 과정을 이해할 때는 우리가 운전을 할 때를 생각해보면 됩니다. 우선 360도 방향으로 차들이 존재하는지, 현재 도로는 몇차선이고 차로 변경이 가능한지 등등. 주변 상황을 인식한 이후에 자동차를 제어합니다.
이 과정은 자율주행 관점으로 바라보게 된다면 카메라, 라이다, 레이더 등의 센서를 통해서 정보를 받아들이고, 이 정보를 딥러닝이나 조건문을 통해서 전처리한 이후 판단과정으로 넘깁니다.
그러면 이 정보를 바탕으로 지역경로를 생성하고 자율주행을 진행하게 됩니다. 하지만 이 과정은 예측불가능한 상황이 굉장히 많기 때문에 우리는 path planning 과정에만 집중하기로 하고 정말 이상적인 상황만 가정해서 로봇을 움직일 계획입니다.
인식을 하는 과정에서 등장하는 개념은 로봇을 직접 움직이면서 확인을 하도록 합시다. 글이 좀 짧으나 다음 글부터는 경로를 계획하는 다양한 알고리즘들을 알아보고, 이를 ROS상에서 구현하는 것을 목표로 합시다.
준비물
이 과정을 따라오기 위해서 필요한 준비물은 다음과 같습니다.
1. 그래픽카드가 달려있는 노트북, 혹은 데스크탑이 필요합니다. Gazebo를 실행해야합니다.
2. ROS2가 설치되어 있는 Ubuntu 환경이 필요합니다. 그러나 turtlebot3가 상당히 많은 ROS 버전을 커버합니다. 편한버전으로 받으면 됩니다. 저는 Humble을 사용합니다.
이에 대한 설치방법은 다음의 글들에 자세히 정리되어 있습니다.
(실무 리눅스) 1. 우분투 ubuntu 20.04(영문)를 설치하고 한글 키보드 추가하기. (tistory.com)
(실무 리눅스) 2. 우분투 20.04에 chrome, jupyter notebook, visual studio code 설치하기 (tistory.com)
(실무리눅스) 12. 우분투 22.04에 ROS2 Humble 설치하고 rviz와 gazebo까지 설치하기 (tistory.com)
터틀봇3 시뮬레이션 듀토리얼 진행하기 (tistory.com)
이정도까지 설치되어 있으면 됩니다. 추가적으로 ROS2에 대한 지식이 있다는 가정으로 진행됩니다. 그러니 이 목록을 정독할 생각이라면 다음의 책을 참고하는 것이 좋습니다.
표윤석님의 다음의 책을 공부하는 것이 좋습니다. 책이 없다면 오픈로보틱스 카페에 표윤석 박사님이 따로 정리한 내용들이 있으니 이를 참고해도 좋습니다. ROS 세상에 발을 들였다면 바이블정도니 한 권정도 사놓는 것이 좋습니다. 난이도가 높은편입니다.
오픈소스 소프트웨어 & 하드웨어: 로봇 기술 공유 카페 (오로카) : 네이버 카페 (naver.com)
위의 책이 난이도가 높다면 민형기님의 ROS2 책으로 먼저 공부를 한 후에 표윤석님의 책을 보시면 됩니다.
ROS2 혼자공부하는 로봇SW 직접 만들고 코딩하자 - YES24
제가 따로 정리한 부분이 있지만 아직 완결이 되지 않았습니다.
'공부#Robotics/(ROS2) 기초' 카테고리의 글 목록 (tistory.com)
'공부#Robotics#자율주행 > (ROS2)Path Planning' 카테고리의 다른 글
ROS2로 turtlebot3 제어하기 5장. turtlebot이 생성된 경로를 따라 움직이게 하자 (0) | 2023.06.03 |
---|---|
ROS2로 turtlebot3 제어하기 4장. map파일을 가지고 전역경로 생성하기 (0) | 2023.06.03 |
ROS2로 turtlebot3 제어하기 3장. Nav2 이해하기와 파이썬 환경설정 (0) | 2023.06.03 |
ROS2로 turtlebot3 제어하기 2장. MAP 만들기 (0) | 2023.06.02 |
python robotics 환경 세팅하기 (0) | 2023.05.25 |