본문 바로가기

[패스트캠퍼스 11월 환급 챌린지]

패스트캠퍼스 환급 챌린지 24일차 : AMCL

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

https://fastcampus.info/4oKQD6b

 

올해 마지막 보너스 혜택! 1+1+1 쿠폰 이벤트 (~12/09 23:59) | 패스트캠퍼스

지금 강의 구매 시, 결제 금액과 동일한 1+1 쿠폰 & AI월드 무료 쿠폰 증정 (+) 이벤트 기간 내 신규가입 시 웰컴 5만원 할인 쿠폰 추가 증정

fastcampus.co.kr

 

 

https://fastcampus.co.kr/data_online_selfdriving

 

자율주행 로봇을 위한 ROS 2 & SLAM & Nav2 한번에 끝내기 | 패스트캠퍼스

로봇 입문 시작점 ROS 2부터 자율주행 로봇을 위한 SLAM & Navigation2 와 시뮬레이터를 활용한 자율주행 로봇 실습까지 한번에

fastcampus.co.kr

본 글은 위 강의를 참고하여 작성되었습니다

 

 

 

 

[강의시작 | 강의종료]

 

 

 

 

[완강 인증]

 

 

 

[학습 내용]

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

AMCL_normal

 

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

AMCL_error

 

 

 

[강의 후기]

AMCL에 대한 실습을 진행했습니다.

 

-AMCL-

: 로봇이 지도상에서 자신의 위치를 찾을 수 있도록 도와주는 확률적 접근 방식

 

-Launch 파일-

localization_launch.py 파일에서 지금가지 실습했던 bookstore 맵을 불러오기 위해 내용을 수정해줍니다.

my_nav_dir = get_package_share_directory('neuronbot2_nav')
my_map_dir = os.path.join(my_nav_dir, 'map')
my_map_file = 'bookstore.yaml'

...

 

-Rviz 툴 세팅-

rviz 툴을 실행합니다.

cd ~/nav2_ws/src/neuronbot2/neuronbot2_nav/rviz
rviz2 -d nav2_default_view.rviz

 

ParticleCloud를 추가합니다.

 

세부 설정을 아래와 같이 합니다.

Topic = /particle_cloud

Reliability Policy = Best Effort

 

 

-AMCL 실습-

실습 환경을 조성합니다.

ros2 launch neuronbot2_gazebo neuronbot2_world.launch.py
ros2 launch neuronbot2_nav localization_launch.py use_sim_time:=true
cd ~/nav2_ws/src/neuronbot2/neuronbot2_nav/rviz
rviz2 -d nav2_default_view.rviz

 

 

2D Pose Estimate 버튼을 클릭해 로봇의 실제 위치에 해당하는 위치와 방향을 클릭합니다.

 

ros2 run teleop_twist_keyboard teleop_twist_keyboard

teleop 키보드를 사용해 로봇을 움직이며 포인터들이 위치를 추정하는 것을 확인합니다.

 

 

-생각해 볼 점-

이번 강의에서는 AMCL을 사용한 Localization 실습을 진행했습니다. 이전 강의에서 다뤘던 AMCL의 개념에 맞게 포인터를 주변에 흩뿌리고 로봇의 위치를 확률적으로 계산에 위치를 특정하는 방법을 사용하는것을 확인할 수 있었습니다. AMCL_normal 영상을 봤을 때 로봇 위치 주변에 알맞은 방향으로 초기 값을 설정한 경우에는 주변에 분포한 점들이 점점 로봇 주변으로 모이며 결과값이 정상적으로 도출되었습니다. 반대로 AMCL_error 영상을 확인해보면, 현재 로봇의 위치와 차이가 많은 위치에 부적절한 방향으로 초기값을 설정한다면 점이 제대로 모여들지 않는 모습을 보이며 제대로 된 결과가 도출 되지 않았습니다. 이를 통해 확인해 볼 수 있었던 것은 AMCL이 제대로 동작하려면 현재 로봇의 위치와 이동 방향을 알고 초기값을 줘야 정상적인 값이 도출된다는 것입니다. 이때 로봇의 현재 위치는 map과 odom의 위치를 기반으로 base_link의 이동 거리와 방향을 추정해 계산할 수 있습니다. 따라서 AMCL을 사용해 Localization을 하려면 map과 odom, base_link 노드의 관련성을 알고 이를 사용해 로봇의 위치를 실시간으로 업데이트 할 수 있어야 하겠습니다. 실제 프로젝트를 진행 하며 사용할 수 있는 방법에 대해 구상해보았습니다. 처음 지도를 저장하고 로봇에게 학습 시킬 때 로봇은 스스로 초기 위치를 정확하게 확인하지 못합니다. 따라서 학습이 제대로 진행되지 않을 수 있습니다. 이때 AMCL을 사용해 초기 위치를 보다 정확히 알 수 있다면, 미리 저장된 지도의 오브젝트 위치와 전달받는 LiDAR 센서의 데이터를 비교해 정확한 로봇의 위치를 로봇 스스로 학습할 수 있을 것입니다. 실습 결과도 중요했지만, 노드들의 관련성과 AMCL의 개념을 아는것도 정말 중요했습니다. 실제 서비스 환경에서 로봇이 정확한 위치를 파악하고 임무를 수행할 수 있는 시스템을 구축할 수 있도록 목표를 잡고 공부하겠습니다.