printf("ho_tari\n");

[주행] SLAM 모델 기반 다중이용시설 로봇 주행 환경 장애물 인식 모델 개발 4일차 본문

두산 로보틱스 부트캠프 ROKEY/실무 프로젝트

[주행] SLAM 모델 기반 다중이용시설 로봇 주행 환경 장애물 인식 모델 개발 4일차

호타리 2024. 12. 1. 23:46

2024.11.29

 

4일차부터는 본격적으로 터틀봇4를 이용하여 미리 제작해놓은 map 안에서 터틀봇4가 자율 이동을 하며 동시에 자동으로 mapping을 해야하는 프로젝트를 진행하였다.

 

 

ros2 launch turtlebot4_viz view_robot.launch.py

이 명령어를 통해 rviz 프로그램을 실행시키고

 

ros2 launch turtlebot4_navigation slam.launch.py params:='/home/parkseongho/slam.yaml'

이 명령어를 통해 slam을 기반으로 주행을 하며 라이다 센서의 데이터를 가지고 mapping을 할 수 있도록 하였다. slam.yaml 파일의 경로를 넣어 직접 수정한 파라미터 값들이 설정되어 있는 slam.yaml 파일을 가지고 slam이 실행될 수 있도록 하였다.

 

ros2 launch turtlebot4_navigation nav2.launch.py params_file:='/home/parkseongho/nav2.yaml'

이 명령어를 통해 터틀봇4가 자율 주행을 할 수 있도록 하였다. nav2.yaml 파일의 경로를 넣어 직접 수정한 파라미터 값들이 설정되어 있는 nav2.yaml 파일을 가지고 자율 주행을 할 수 있도록 하였다.

 

이제 터틀봇4가 slam과 nav2를 이용하여 자율 주행과 mapping을 자동으로 하기 위해 이 두 기능을 사이에서 연결시켜주는 노드의 파이썬 파일을 만들어야 한다.

 

 

 

https://youtube.com/shorts/JcfV0yIJ8PM

 

 

기본적으로 사용한 로직은 다음과 같다.

 

1. Occupancy Grid 맵 (/map) 구독: 맵 데이터를 처리하여 프론티어(알려진 영역과 미지의 영역 사이의 경계)를 식별합니다.
2. 프론티어 식별: 프론티어 셀을 감지하고 이를 클러스터링하여 탐색 목표 지점을 결정합니다.
3. 네비게이션 목표 전송: 액션 클라이언트를 사용하여 NavigateToPose 액션 서버에 목표를 전송하고, 로봇을 미탐색 영역으로 안내합니다.
4. 탐색 진행 모니터링: 프론티어 셀의 비율을 기반으로 탐색이 완료되었는지 평가합니다.
5. 맵 저장: 탐색이 완료되면 맵을 저장하고 로봇을 정지시킵니다.

 

이제 코드의 디테일과 nav2.yaml, slam.yaml 파일들의 파라미터 값을 수정해가며 터틀봇4의 자율 주행과 mapping의 정확도를 높여가야 한다.