본문 바로가기

ROS

[Nav2] AMCL(Adaptive Monte Carlo Localization) package 분석
2024. 1. 9. 02:16
이 글은 Particle Filter에 대한 기본 이해가 필요합니다. Nav2에서 기본적으로 로봇의 localization 문제를 AMCL(Adaptive Monte Carlo Localization)을 통해 해결한다. AMCL package가 어떻게 동작되는지 분석해 봤다. AMCL(Adaptive Monte Carlo Localization) 이란? AMCL은 Particle Filter를 이용하여 로봇의 위치를 추정한다. Particle Filter에 대해 간단하게 소개하자면 특정 분포를 가지고 있지 않는 nonparametric 한 모델을 위한 베이즈 필터를 구현한 것이다. 이 포스트는 주요한 아래 4가지를 어떻게 구현하였는지에 초점을 둔다. 로봇의 위치 sample(particle)을 어떻게 생..
[ROS2] Callback group 개념 및 Deadlock 문제 해결
2024. 1. 4. 16:25
ROS2에서는 callback group이라는 개념이 있다. callback group을 모르고 개발하다 보면 특수한 상황에서 deadlock이 발생할 수도 있다. Callback group 이란? 기본적으로 ROS는 수 많은 Callback function들을 사용하게 된다. (topic subscriber, service server, action server 등) 이런 Callback function들을 관리하기 위해 사용되는 것이 Callback group이다. Callback group은 2가지 유형을 제공한다. Mutually Exclusive Callback Group Reentrant Callback Group 두가지의 차이점은 뭘까? 첫 번째로 Mutually Exclusive Callb..
[ROS2] Life cycle node 개념 및 Nav2 예시 살펴보기
2024. 1. 4. 02:45
이 글은 Managed node에 이점과 Lifecycle에 대한 내용이 주로 되어 있습니다. Life cycle node란? Life cycle node는 일반 Node와 관리 Node의 Life cycle을 관리할 수 있다. 이러한 이점으로 인해 Nav2, Moveit2와 같은 대중적인 ROS library는 Managed node로 구성되어 있다. Life cycle의 관리는 통해 우리는 아래와 같은 상황에서 컴퓨터 자원을 절약이 가능하다. Node를 재시작해야 할 경우 Node가 항상 켜져있지 않아도 될 경우 종종 예상치 못한 버그로 Node를 재시작해야 할 경우가 있다. 이때 일반 Node라면 실행 중인 Node의 Process를 중단하고 새로운 Process를 생성한다. 이는 불필요한 자원 낭..
[ROS2] DDS와 RMW 개념 및 QoS 호환성 확인
2023. 12. 5. 20:06
💡 이 글은 ROS2에서 노드간의 통신의 변경점 및 DDS관련 용어 및 QoS 설정에 관한 내용이 포함되어 있습니다. ROS2는 기본적으로 DDS Middleware를 사용한다. 다양한 DDS 혹은 RTPS 가 호환되는데 작성일 기준 호환되는 벤더는 아래와 같다. eProsima’s Fast DDS → Humble이 기본적으로 사용하는 DDS Middleware RTI’s Connext DDS Eclipse Cyclone DDS GurumNetworks GurumDDS ROS2는 다른 DDS와도 통신이 가능하다. 그 이유는 RMW(Robot MiddleWare)가 RCL(Robot Client Library)와의 통신을 위해 DDS 구현에 대한 추상화 계층을 제공하기 때문이다. (DDS가 도입되면서 RO..
ROS1 Noetic Arduino와 Serial 통신하기
2022. 7. 15. 12:25
ROS1은 TCP/IP 프로토콜을 통하여 Node끼리 통신이 가능합니다. 그러나 Arduino와 같은 인터넷 연결이 안 되는 MCU는 TCP/IP 프로토콜로 통신하기 어렵기 때문에 rosserial package를 설치하여 Arduino와 Serial 통신이 가능하도록 설정해봅시다. 1. Arduino IDE Setup 먼저 아두이노 IDE를 설치해야 합니다. 설치 링크는 아래와 같습니다. 설치 후 Arduino가 설치된 위치를 기억해 주세요! 보통 user home 폴더에 설치가 됩니다 https://www.arduino.cc/en/software Software Open-source electronic prototyping platform enabling users to create interacti..