카테고리 없음

패스트캠퍼스 환급챌린지 30일차 : 자율주행 로봇을 위한 ROS2 & Nav2 한번에 끝내기 강의 후기

연두부진 2025. 4. 3. 21:52

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

오늘은 SLAM을 들어가기 전에 알고 있어야 하는

지식들에 대해서 배워보는 시간을 가졌다.

 

[오늘의 수강 영상]

 

[오늘의 이론]

 

 

 

SLAM이란 무엇인가?

SLAM은 Simultaneous Localization And Mapping의 약자로

동시적으로 위치추정과 지도작성을 하는 기술이다.

 

Localization이란?

지도가 주어진 상황에서 주변의 정보를 사용해서

공간 속에서의 내 위치를 찾는 것이다.

 

Mapping이란?

이동정보와 같은 odom이 주어진 상황에서

지도를 생성하는 것이다.

 

 

이와 같이 SLAM을 진행할 때 Mapping을

하려면 자신이 현재 이동하는 정보와 위치를

알아야 하고 이 위치를 알려면 Localization을 진행해야 한다.

 

하지만, Localization을 하려면 map이 또 필요해진다.

 

그럼 Mapping이 먼저일까? 아니면 Localization이 먼저일까?

 

이건 SLAM에서 제일 먼저 얘기되는 chicken and egg problem이다.

 

이를 해결하기 위해 나온 게 SLAM이라고 생각하면 된다!!

 

따라서, 로봇은 이 기술을 사용해서 이전에 본 적 없는

환경에서도 자신이 어디에 있는지 알고

그 환경에 대한 지도도 작성할 수 있게 된다.

 

오늘은 우선 SLAM 보다는 SLAM을 알기 전에

알아두어야 하는 지식들에 대해서 먼저 알아보았다.

 

1. 2D coordinate Frames

 

우리가 흔히 사용하는 xy좌표계라고 생각하면 된다.

 

만약에 이걸 로봇에 적용한다면 어떻게 나타나질까?

 

이 로봇에서 보는 것처럼 통상적으로 아래와 같이 정한다.

x : 로봇이 바라보는 방향(진행방향)

y : 로봇의 왼쪽 방향

 

2. 3D coordinate Frames

 

이 좌표는 x, y, z 좌표로 이루어진 좌표계이다.

 

 

이를 우리가 로봇에서 흔히 사용하는 좌표계로

예시를 들며 설명해 보겠다.

 

우리가 로봇에서 사용하는 좌표계는

base_link와 base_scan이 있다.

 

base_link란?

로봇이 주(main)로 하는 frame(좌표)로

로봇의 중심좌표이다.

 

이를 사용해서 모든 동적 움직임 및 센서 데이터는

이 frame을 기준으로 계산되고 표현된다.

 

base_scan이란?

2D LiDAR가 측정하는 데이터의 원점을 나타내며,

센서의 물리적 위치와 방향을 기준으로 설정되는 frame이다.

 

예시를 들어서 base_link와 base_scan사이의

상대좌표를 구해보겠다.

 

base_link 기준으로 base_scan이 x축 뒤쪽방향으로 3.2m,

z 축 위쪽방향으로 17.2m 떨어져 있다고 한다면

 

base_link에서 본 base_scan의 좌표는

(- 0.032, 0.0, 0.172)가 될 것이다.

 

만약에 base_scan기준으로 base_link의 좌표를 본다면

(0.032, 0.0, -0.072)가 될 것이다.

 

이와 같이 좌표 변환을 할 때 사용되는 것이 있는데

바로 동차 좌표계(Homogeneous Coordinate)이다.

 

3. 동차좌표계(Homogeneous Coordinate)

 

동차좌표계란?

차원의 좌표를 1차원 증가시켜 표현하는 방법이다.

 

이는 기하학적 변환을 더 효율적으로 수행할 수 있게 해주는

좌표 표현 방식이다.

 

이를 사용하면 평행이동(translation)과 회전(rotation)을

하나의 행렬로 표현이 가능하고

 

무한대에 있는 점도 표현 가능하게 되며

 

원근 투영(perspective projection)을 선형변환으로

표현할 수 있게 된다.

 

동차좌표계를 표현할 때

기존의 3차원 좌표(x, y, z)에 추가로 w라는 차원을 더해서

(x, y, z, w)라고 표현하는데

 

이때, 일반적으로 w는 1로 설정되며,

1로 설정하는 이유는 변환 행렬을 이용할 때

변환을 쉽게 표현하기 위해서 이다.

 

만약에 w가 1로 되어있다면 그건 점을 나타내며

0으로 되어있다면 벡터라고 생각하면 된다.

 

아까 동차좌표계로는 평행이동과 회전을

한 번에 나타낼 수 있다고 했는데

 

이 두 개에 대해서 알아보면서 좌표 변환에

이를 대입해 보겠다.

 

이동변환(Translation)이란?

좌표를 일정 거리만큼 평행하게 이동시는 변환이다.

 

이는, 3차원 공간에서의 이동 

4x4 행렬로 표현하면 아래와 같다.

 

회전 변환(Rotation)이란?

좌표를 특정한 각도(θ)만큼 회전시키는 변환이다.

 

3차원 공간에서의 각 축을 기준으로 회전을

4x4 행렬로 표현하면 아래와 같다.

X축 회전 Y축회전 Z축 회전

 

회전 변환은 회전 순서에 따라

결과가 달라질 수 있어서 회전순서에

주의를 기울여야 한다.

 

합성변환(Combined Transformations)이란?

이동변환과 회전 변환을 동차 좌표계에서 결합하여

하나의 행렬로 표현하는 것이다.

 

이를 나타내면 아래와 같이 나타낼 수 있다.

 

그리고 이걸 사용해서 점 변환을 진행하고자 하면

아래 식에 대입하면 된다.

 

그럼 우리가 구하고자 했던 base_scan으로 본 좌표를

base_link 좌표계로 변환해 보자

 

아까와 마찬가지로 base_link 좌표를 기준으로 base_scan는

(-0.032, 0.0, 0.172)에 있다고 했었다.

이건 Translation이 된 것이라고 생각하면 되고

 

이때, base_scan에서 (1,2,3)이었던 좌표를

base_link로 나타내고 싶다면 아래와 같이 구할 수 있다.

 

여기서 부호가 반대인 이유는 base_scan에서 base_link로

변환되는 거니까 이동되는 방향으로 생각돼서

부호가 반대가 되었다.

 

4. TF

 

TF란?

여러 로봇 구성 요소 간의 좌표계를 효율적으로 

다루기 위한 좌표 변환 라이브러리이다.

 

위에서 배웠던 좌표변환을 바로바로 할 수 있는 라이브러리로

매번 계산하지 않고 이를 사용해서 쉽게 알아볼 수 있다.

 

이는 로봇 시스템에서 다양한 센서, 프레임,

그리고 여러 장치들이 각기 다른 위치와 방향을

가지는 걸 일관성 있게 연결하기 위해 사용되곤 한다.

 


오늘은 이렇게 선행되는 지식들인

좌표변환에 대해서 배워보았다.

 

SLAM의 강의들의 처음 시작 부분은

대부분은 이걸로 시작하는데

이번 기회에 다시 정리할 수 있는

기회가 돼서 너무 좋았다.

 

그만큼 중요한 부분이니 앞으로도

잊지 말고 계속해서 잘 사용해 봐야겠다!!

 

ps. 블로그를 처음 시작하다 보니

댓글차단기능이 있는 줄 몰라서

지금까지 써주신 댓글들을

이제야 보게 되었습니다ㅠㅠ

 

항상 따뜻한 말씀 해주셔서

너무너무 감사드립니다.

 

블로그를 쓰는 게 처지는 시간점에서

댓글들을 보니 다시 힘을 얻을 수 있었습니다!!

 

저희 모두 파이팅 했으면 좋겠습니다!!!!


공부 시작시간
공부 종료시간

 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완

https://bit.ly/4hTSJNB

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr