본문 바로가기

전체 글

섭동 모델 및 Gauss Newton Method 을 통한 SE(3) 최적화 설명 및 C++ 구현
2024. 5. 22. 21:28
이 글을 자율주행을 위한 Visual SLAM의 4장을 읽고 작성되었습니다.  자율주행을 위한 비주얼 슬램 스터디 4-3 ~ 4-6자율주행을 위한 비주얼 슬램 스터디 리 대수 미분 및 Sophus Presenter. 김대완docs.google.com  GitHub - dawan0111/Simple-SE3-Optimization: Simple-SE3-OptimizationSimple-SE3-Optimization. Contribute to dawan0111/Simple-SE3-Optimization development by creating an account on GitHub.github.com Robotics에서 로봇의 pose를 아는 것은 매우 중요한 일이다. 간단한 예제를 통해 최적에 로봇의 pos..
Effective Morden C++ 1회독 후기
2024. 4. 28. 01:57
정보책 제목: Effective Morden C++ (스콧 마이어스 지음, 류광 옮김)기간: 약 1달 반난이도: 3.5 / 5평점: 4.5 / 5구매하게 된 이유이 책을 읽기 전 C++ 기본문법에 대해 어느정도 이해하고 있는 상태였다. C++11, C++14로 업데이트되면서 우리는 편리하게 코드를 작성할 수 있게 됐다. 나는 프로젝트를 진행하면서 편리한 기능을 제대로 사용하고 있지 못할 뿐 아니라 내부적으로 어떻게 동작하는지에 대한 이해도가 부족하여 사용해야 할 경우와 아닌 경우를 판단하는데 어려움을 느꼈다. C++에 대한 이해도를 높이고 효율적이게 사용하고 싶어 Effective Morden C++ 책을 구매하게 되었다.책 내용Effective Morden C++책의 내용은 제목에서도 보이듯이 효율적이..
[Basic] Type deduction (template, auto, decltype) 유의할 점
2024. 2. 2. 16:13
C++98에서는 형식 연역(Type deduction)에 관한 규칙이 template에 대한 것 밖에 없지만, C++11부터는 auto와 decltype에 관한 규칙이 추가되었다. 우리는 C++ 코드를 작성하면서 종종 auto 키워드를 사용하게 되는데 제대로 사용하지 못하면 예기치 못한 규칙으로 인해 에러가 발생할 수 있다. 사용 시에 유의할 점을 알아보자. Template 형식에서의 유의할 점 함수의 Template 선언은 대부분 아래와 같은 형식이다. template void f(ParamType param); 우리는 2가지 형식을 연역하게 되는데, 하나는 T와 ParamType에 관한 것이다. 이 두 형식은 다른 경우가 많다. ParamType은 const나 reference qualifier 같은..
IMU Angular velocities 값으로 Quaternion 업데이트 방법
2024. 1. 19. 19:46
이 글은 아래 Attitude from angular rate 문서를 보고 작성되었습니다. Attitude from angular rate — AHRS 0.3.1 documentation Attitude from angular rate Unitary quaternions are used when representing an attitude. They can be updated via integration of angular rate measurements of a gyroscope. The easiest way to do so is by integrating the differential equation for a local rotatio ahrs.readthedocs.io 로봇의 orientation을..
[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)을 어떻게 생..
3D Rigid Body Transformation & ROS에서 회전을 표현하는법
2024. 1. 7. 01:30
이 포스트는 “자율주행을 위한 Visual SLAM 제2판” 내용을 정리하였습니다. 사전 지식 Vector에 대한 기본적인 연산 (내적, 외적, 벡터곱 등등) Rotation matrix 3차원 공간의 한 점의 좌표 $\mathbf{a} \in \mathbb{R}^3$ 가 있다고 생각해 보자. 3차원 공간에서 base를 구했다고 생각해 보면 $\mathbf{a}$는 아래와 같이 표현할 수 있다. \begin{equation} \mathbf{a} = \begin{bmatrix} \mathbf{e}_1 & \mathbf{e}_2 & \mathbf{e}_3 \end{bmatrix} \begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix} = a_1\mathbf{e}_1 + a_2\..
[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를 생성한다. 이는 불필요한 자원 낭..