일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nav2 dev contatiner
- nav2 development guides
- development guides
- ros2 foxy docker
- ROS FOXY 튜토리얼
- first-time robot setup guide
- CodeUp
- Foxy tutorial
- humble development guides
- ros2 환경설정
- nav2 튜토리얼
- nav2 development guides
- ros2 튜토리얼
- ros2 foxy tutorial
- CODEUP 6073
- ros2 remapping
- 코드업
- foxy nav2
- nav2 getting started
- nav2 tutorial
- docker foxy
- ros2 development guides
- humble 환경설정
- Nav2 document
- error
- nav2 설치
- ros2 튜토리얼 환경설정
- ros2 configuring environment
- Python
- nav2 first-time robot setup guide
- Today
- Total
BAN2ARU
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 1) ROS2 본문
해당 글은 공식페이지를 참조하여 작성함.
이전 글 목록
2024.09.18 - [Study/Nav2] - [Humble/Docker] ubuntu에서 ROS2 humble docker 환경 구축
2024.09.18 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 1. Getting Started
2024.09.18 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 2. Development Guides - 1) Build and Install
2024.09.18 - [Study/Nav2] - [Humble/Nav2] 튜토리얼 2. Development Guides - 2) Dev Containers
ROS2
ROS2는 Nav2에 사용되는 core middleware이다.
Action Server
action server는 ROS와 ROS2에서 중요한 개념으로, 특히 navigation과 같은 오래 걸리는 작업을 처리할 때 유용하다. 예를 들어, 로봇이 어떤 목표 지점으로 이동하는 작업이나 기계의 부품을 움직이는 작업은 시간이 오래 걸리며, 이를 제어하기 위해 action server가 사용된다.
action server는 client가 특정 작업을 요청하면, 이 작업이 완료될 때까지 또는 요청한 피드백을 받을 때까지 기다리는 구조이다. 그러나 이러한 작업은 시간이 오래걸릴 수 있으므로, client는 중간에 피드백을 받아 작업의 진행 상태를 확인할 수 있다. 예를 들어, 로봇이 특정한 위치로 이동하는 동안 client는 로봇의 현재 위치, 남은 거리, 또는 진행 상태에 대한 정보를 지속적으로 받을 수 있다. 이러한 정보는 action server에서 제공하는 피드백을 통해 얻을 수 있다.
이러한 action server 개념은 복잡한 시스테에서 여러 작업을 병렬로 처리하거나, 작업의 중간 상태를 추적하는데도 유용하다. Nav2 stack에서는 action server가 행동 트리(BT) navigator와 통신하여 복잡한 navigation 작업을 수행하고, 이러한 작업을 세부적인 계획 및 제어 작업으로 분할하여 처리한다.
결론적으로, action server는 로봇 시스템에서 긴 시간동안 지속되는 작업을 안정적으로 처리하고, 작업 진행 상황을 추적하며 결과를 효율적으로 관리하는 데 필수적인 도구이다. ROS2에서 이를 잘 이해하고 활용하는 것이 중요하다.
Lifecycle Nodes and Bond
Lifecycle Node는 ROS2에서만 존재하는 고유한 개념으로, node의 상태를 관리하고 node가 어떻게 초기화되고 종료되는지에 대한 명확한 단계를 제공한다.
Lifecycle Node는 아래와 같은 상태로 node들을 관리한다.
- Unconfigured : node가 생성되었지만, 아직 네트워킹이나 매개변수 설정이 이루어지지 않은 상태임. node가 시작되면 해당 상태임.
- Inactive : node가 구성되었지만 아직 활성화되지 않은 상태이다. 이 상태에서 node는 ROS 메시지를 주고받지 않음.
- Active : node가 완전히 활성화되어 메시지를 처리하고 동작하는 상태임.
- Deactivating, Cleaning up, Shutting down, Finalized : node가 종료 과정에 있는 상태로, 자원을 해제하고 안전하게 종료함.
Bond connection은 node가 충돌하거나 예상치 못한 종료가 발생할 경우, 이를 감지하여 시스템 전체에 치명적인 오류가 발생하지 않도록 관리하는 역할을 한다. 이를 토해 시스템의 안전성을 더욱 높일 수 있다.
결론적으로, Lifecycle Node는 ROS2에서 node의 상태를 체계적으로 관리하고, 시스템의 안전성을 유지할 수 있어 복잡한 시스템에서 매우 유용하게 사용된다. nav2_util LifecycleNode wrapper는 이러한 복잡한 작업을 단순화하여 개발자가 쉽게 lifecycle node를 활용할 수 있도록 돕는다.
'Study > Nav2' 카테고리의 다른 글
[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] 튜토리얼 2. Development Guides - 2) Dev Containers (6) | 2024.09.18 |
[Humble/Nav2] 튜토리얼 2. Development Guides - 1) Build and Install (0) | 2024.09.18 |
[Humble/Nav2] 튜토리얼 1. Getting Started (0) | 2024.09.18 |