카테고리 없음

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

연두부진 2025. 4. 13. 23:13

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

 

오늘은 Mapping을 진행했던 Cartographer와
Localization을 진행했던 AMCL을
예시로 사용하여 그때 사용했던
Lua파일과 YAML파일에 있는 파라미터에
대해서 알아보았다.

 

[오늘의 수강 영상]

 

[오늘의 실습]

 

Mapping을 진행할 때 Cartographer를 사용했었다.

 

Cartographer를 사용할 때 원하는 파라미터를

잘 수정하여 사용하기 위해 우리는 어떤 파라미터가

어떤 의미를 가지는지 알아야 한다.

 

그리고 이 파라미터들은 Lua 파일에서 설정할 수 있다.

 

Lua 파일은 보면 아래와 같이

다양한 파라미터가 있는 것을 알 수 있다.

 

모든 파라미터에 대해서 설명할 수 있으면

좋겠지만 너무 많기도 하고 너무 장황한 글이 될 것 같아서

몇 가지만 소개하고자 한다.

 

1. map_frame

 

기본값 : map

 

맵을 publish를 하기 위한 frame ID로

odom_frame의 parent frame으로 사용된다.

 

2. tracking_frame

 

기본값 : base_link 또는 base_footprint

 

SLAM알고리즘을 사용할 때

추적하고자 하는 frame ID이며

 

IMU를 사용하는 경우에는 imu_link와 같은

IMU frame ID로 설정해야 한다.

 

3. published_frame

 

로봇 위치를 publish 하는 데 사용되는 frame ID로

map_frame으로부터 odom 위치가 publish 된다.

 

만약에 wheel odometry로부터 odom frame이

제공되는 경우에는 odom을 사용한다.

 

4. TRAJECTORY_BUILDER_2D.min_range

 

map을 building 할 때 사용되는 2D Ridar의

최소 측정거리로 이 값보다 짧은 거리의 데이터는 무시한다.

 

이는 센서 노이즈나 매우 가까운 물체로 인해

생길 수 있는 잘못된 데이터를 필터링하는 데 사용한다.

 

5. TRAJECTORY_BUILDER_2D.max_range

 

map을 building 할 때 사용되는 2D Ridar의

최대 측정거리로 이 값보다 긴 거리의 데이터는 무시한다.

 

센서의 최대 유효 범위를 넘어서는

거리 데이터를 제거하여 처리 효율을 높이고,

잘못된 데이터로 인한 오류를 줄이는 데 사용된다.

 


 

5번을 변경시켜 보면서 map을

그려보았고 결과는 아래와 같다.

 

1. max_range = 5.0일 때

 

2. max_range = 1.0일 때

 

3. max_range = 10.0일 때

 

이를 통해 너무 최대 거리를 짧게 하게 되면 좋은 map을 그리기 어렵고

너무 길게 했을 때는 한 번에 mapping을 하기 편하긴 하겠지만

멀리 있는 값들의 정확도가 높은지 확실하게 알 수 없기 때문에

적당한 값을 사용해야겠다고 생각했다.


 

Cartographer를 사용할 때 Lua 파일 말고

Launch 파일에서도 설정할 수 있는 파라미터가 있다.

 

우선 Cartographer의 입력을 들어가는 Topic 이름은 아래와 같다.

1. 2D LiDAR Topic (sensor_msgs/msg/LaserScan) : /scan

2. Odometry Topic (nav_msgs/msg/Odometry) : /odom

3. IMU Topic (sensor_msgs/msg/Imu) : /imu

 

근데 만약에 위에 있는 topic 이름과

센서에서 던져주는 topic 이름이 일치하지 않는다면

remapping을 통해서 topic의 이름을 서로 같은 topic이라고

연결해서 Cartographer에 보내줄 수 있다.


 

다음으로 Localization을 진행할 때는 AMCL을 사용했었다.

 

AMCL을 사용할 때 원하는 파라미터를

잘 수정하여 사용하기 위해 우리는 어떤 파라미터가

어떤 의미를 가지는지 알아야 한다.

 

그리고 이 파라미터들은 YAML 파일에서 설정할 수 있다.

 

여기서 잠깐!

AMCL은 동적 파라미터 튜닝을 지원하는 패키지여서

rqt의 dynamic reconfigure을 사용해서 실행 중인

시스템의 파라미터를 실시간으로 변경할 수 있다.

 

동적 파라미터 튜닝을 사용하지 못한다면

파라미터를 바꾸기 위해서 시스템들을 재시작해야 해서

불편함이 있었는데 이를 사용하면 바로바로 적용할 수 있어서

편하게 사용할 수 있다.

 

다시 AMCL 파라미터에 대한 내용을 넘어가 보면

AMCL 파라미터에는 아래와 같은 것들이 있다.

 

이것도 몇 가지만 뽑아서 설명하고자 한다.

 

1. min_particles

 

기본값 : 500

 

AMCL에서 사용되는 particle의 최소 개수이다.

Particle 수를 너무 적게 하면 위치 추정 정확도가 떨어질 수 있다.

 

2. max_particles

 

기본값 : 2000

 

AMCL에서 사용되는 particle의 최대 개수이다.

Particle 수를 너무 많게 하면 계산 부하가 증가될 수 있다.

 

min_particles와 max_particles는

Localization의 정확도와 계산 비용 사이의

균형을 맞추는 것이 중요하다.

 

만약에 로봇이 동적 환경이나 복잡한 환경에 있다면

particle 수를 높여서 정확도를 높일 수 있지만

로봇이 처리할 수 있는 처리 능력과 메모리의 한계를

고려해서 최소치와 최대치를 잘 조정하는 것이 중요한다.

 

3. set_initial_pose

 

기본값 : false

 

초기 자세를 initial_pose 파라미터로

설정할 수 있도록 해주는 boolen 파라미터로

로봇이 처음 시작할 때 정확한 위치에서 시작할 수 있게 해 준다.

 

4. initial_pose

 

기본값 : {0.0, 0.0, 0.0}

 

로봇 베이스 frame의 초기 자세(X, Y, Z 좌표 및 yaw) 값으로

정확한 초기 위치를 설정할 수 있다.

 

이를 사용하려면 set_initial_pose를 true를 두어야 한다.

 


 

AMCL에서 max_particles를 동적 파라미터 튜닝을

통해 바로바로 변하는 것을 실습해 보았다.

 

1. max_particles = 2000

 

2. max_particles = 1000

 

3. max_particles = 500

 


오늘 강의를 통해 다양한 파라미터들에 대해서

알게 되었는데 평소에 교수님이 다른 연구원분에게

Ridar 스캔범위를 줄여서 실험해 보라고 말씀하셨던

부분이 이런 것들을 조정해서 진행하는 거였구나라는

깨달음을 얻는 시간이었다.

 

처음 보는 파라미터도 많았고 직관적으로

와닿지 않는 파라미터도 많았지만

앞으로 이런 파라미터를 사용할 일이 생긴다

그때그때 찾아보면서 차근차근 익혀가야겠다고 느꼈다


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

 

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

https://bit.ly/4hTSJNB

 

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

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

fastcampus.co.kr