일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코드업
- nav2 튜토리얼
- CODEUP 6073
- CodeUp
- docker foxy
- nav2 설치
- ROS FOXY 튜토리얼
- humble 환경설정
- ros2 환경설정
- ros2 development guides
- first-time robot setup guide
- ros2 configuring environment
- nav2 development guides
- Nav2 document
- humble development guides
- nav2 development guides
- nav2 dev contatiner
- ros2 foxy docker
- nav2 first-time robot setup guide
- ros2 foxy tutorial
- ros2 튜토리얼 환경설정
- ros2 튜토리얼
- nav2 tutorial
- Foxy tutorial
- error
- ros2 remapping
- nav2 getting started
- development guides
- foxy nav2
- Python
- Today
- Total
BAN2ARU
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 5) Environmental Representation 본문
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 5) Environmental Representation
밴나루 2024. 10. 3. 17:25해당 글은 공식페이지를 참조하여 작성함.
이전 글 목록
2024.10.03 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 3. Navigation Concepts - 1) ROS2
2024.10.03 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 3. Navigation Concepts - 2) Behavior Trees
2024.10.03 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 3. Navigation Concepts - 3) Navigation Servers
2024.10.03 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 3. Navigation Concepts - 4) State Estimation
Environmental Representation
Environmental representation이란, 로봇이 주변 환경을 인식하고 표현하는 방법을 의미한다. 이를 바탕으로 경로 계획, 장애물 회피, 행동 결정등이 이루어진다.
Costmaps and Layers
현재 ROS에서 사용하는 대표적인 환경 표현 방식은 비용 맵(Costmap)이다. Costmap은 2D 평면 grid의 형태로, 각 cell이 특정 비용(cost)를 가지며, 이는 해당 셀이 얼마나 안전한지 위험한지를 나타낸다. costmap은 unknown(미확인: 해당 cell의 정보가 부족하거나 인식되지 않은 상태), free(안전한 공간: 로봇이 자유롭게 이동할 수 있는 공간), occupied(점유된 공간: 장애물이나 이동할 수 없는 공간이며, 충돌 가능성이 있는 영역), inflated(팽창된 공간: 장애물 근처의 공간으로, 충돌 위험이 높기 때문에 로봇이 주의해서 이동해야 하는 영역)로 구성되어 있다. 해당 costmap을 이용하여 global 경로를 계획하거나, local 제어를 통해 충돌을 피하면서 안전하게 이동할 수 있다.
Costmap은 다양한 layer로 구성될 수 있으며, 각각의 layer는 특정 센서 데이터(LiDAR, 카메라 등)을 입력 받아 환경 정보를 추가한다. 예를 들어, LiDAR 센서의 데이터로 장애물 layer를 업데이트 하고, 깊이 센서의 데이터로 팽창 layer를 추가할 수 있다. plugin 형태로 구현되어, 개발자가 필요에 따라 새로운 layer를 추가하거나 수정할 수 있다.
즉 costmap layer는 costmap의 각 셀의 cost 값을 실시간으로 갱신하고, 특정 센서 데이터나 규칙에 따라 로봇의 경로를 계획하고 충돌을 회피할 수 있도록 하는 기능을 제공한다. 또한 특정 rule 또는 huristic에 따라 기본 costmap의 값을 변경할 수도 있다. 마지막으로, Costmap layer는 실시간으로 센서 데이터를 받아들이고, 해당 데이터를 2D 또는 3D 환경에 반영하여 로봇이 장애물이 있는 영역을 안전하게 우회할 수 있도록 한다.
Costmap Filters
만약 map 파일(or img 파일)에서 특정 구역에서는 특정 행동을 따르도록 설정 값(주석)이 있다고 가정해보자. 특정 구역을 진입 금지 구역(keep out zone)으로 표시하여 해당 영역에서는 경로 계획을 하지 않도록 하거나, 특정 픽셀을 사용하여 해당 구역에서는 최대 속도를 제한하도록 설정할 수 있다. 이런 식으로 주석이 추가된 지도를 filter mask라고한다.
Costmap filter는 costmap layer 기반의 접근방식으로, 공간적으로 특정한 행동 변화를 설정할 수 있는 plugin이다. 일반적으로 costmap layer는 장애물 회피나 경로 계획에 집중하는 반면, costmap filter는 특정 구역에 대해 특정 행동이나 규칙을 적용하여, 로봇이 이동이나 경로 선택 시 더욱 세밀하게 제어할 수 있도록 한다. Costmap filter의 동작 방식은 다음과 같다.
우선 costmap filter는 지정된 filter mask로부터의 데이터를 읽고, 그 데이터의 픽셀 값을 기반으로 특정 구역의 행동 변화를 설정한다. filter mask에서 읽어들인 데이터는 선형 변환을 통해 특정한 feature map으로 변환된다. 이 feature map은 main map의 각 cell과 대응되며, 해당 cell이 어떤 특별한 행동 규칙을 가질지 결정한다. 변환된 feature map을 사용하여 현재 costmap에 있는 각 cell의 기본 비용 cost를 변경하거나 특별한 규칙을 추가하여 로봇의 위치에 따라 행동을 변경할 수 있도록 한다. 예를 들어, costmap filter를 사용하여 다음과 같은 기능을 구현할 수 있다.
- 금지 구역(Keep-out zone) / 안전 구역(Safety zone) : 로봇이 들어가면 안되는 구역
- 속도 제한 구역 (Speed Restriction Areas) : 로봇이 해당 구역 안으로 들어가면 최대 속도가 제한되는 구역
- 선호 경로 (Preferred lanes) : 산업 환경이나 창고와 같은 장소에서, 로봇이 특정 경로를 따라 이동하도록 유도하는 구역
Other Forms
Costmap 외에도 로봇이 환경을 표현할 수 있는 방법은 아래와 같이 다양하다.
- 경사도 맵(gradient map) : 이는 costmap과 유사하지만, 각 cell이 표면의 경사도(surface gradient)를 나타내는 환경 표현 방식임. 경사도는 특정 지역의 지형 기울기나 지면의 기울기 변화를 나타내며, 로봇이 해당 지역을 이동할 수 있는지를 확인하는 데 사용됨
- 3D costmap : 일반적인 2D costmap이랑 비슷하지만, 환경을 3차원으로 표현하는 방식임. 3D costmap은 로봇이 입체저인 환경을 탐색할 때나 고저 차이가 있는 복잡한 지형에서 경로 계획을 수행할 때 사용됨. 3D costmap을 사용하려면 3D planning과 충돌 회피 알고리즘이 필요하므로 기존의 2D costmap보다 더 복잡한 계산이 필요함
- Mesh map : gradient map과 비슷하지만 표면의 형태를 더 정밀하게 표현하는 mash 구조를 사용하여 환경의 복잡한 표면 기하학을 나타냄. 각 cell이 단순한 경사도를 나타내는 것이 아니라, 복잡한 표면 mesh를 포함하여 다양한 각도에서의 지형 특성을 표현할 수 있음
- Vector space : 센서 데이터를 기반으로 하여 개별 물체와 위치를 추적하는 vector 기반의 표현 방식임. vector space는 machine learning이나 deep learning 기법을 사용하여, 센서 데이터에서 특정 객체를 감지하고 추적하는 방식으로 동작함
'Study > Nav2' 카테고리의 다른 글
[Humble/Nav2] 튜토리얼 4. First-Time Robot Setup Guide (0) | 2024.10.03 |
---|---|
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 4) State Estimation (2) | 2024.10.03 |
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 3) Navigation Servers (0) | 2024.10.03 |
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 2) Behavior Trees (4) | 2024.10.03 |
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 1) ROS2 (0) | 2024.10.03 |