- SCOUT MINI와 CAN 연결 완료
- Velodyne VLP-32C 연결 완료
아래 명령 예시는 워크스페이스 루트 ~/capstone/scout_ws에서 실행한다고 가정한다.
sudo ip link set can0 up type can bitrate 500000
ros2 launch scout_base scout_mini_base.launch.pyros2 launch scout_description scout_base_description.launch.pyros2 launch scout_description scout_base_description.launch.py설명:
- SCOUT MINI base driver 실행
/odompublishodom -> base_linkTF publish
base_link -> velodyne
ros2 run tf2_ros static_transform_publisher 0 0 0.6 0 0 0 base_link velodyneros2 launch velodyne velodyne-all-nodes-VLP32C-composed-launch.py설명:
- Velodyne 드라이버 실행
- PointCloud 관련 노드 실행
맵 작성 단계에서는 slam_toolbox를 사용한다.
ros2 launch scout_mini_bringup scout_slam.launch.py설명:
/scan기반으로 맵 생성- SLAM 중에는
slam_toolbox가map -> odom을 publish
맵이 충분히 생성되면 다른 터미널에서 저장:
ros2 run nav2_map_server map_saver_cli -f src/scout_mini_bringup/maps/scout_mini_map저장 결과:
src/scout_mini_bringup/maps/scout_mini_map.pgmsrc/scout_mini_bringup/maps/scout_mini_map.yaml
맵 저장 후 SLAM은 종료하고, 저장된 맵을 사용해 Nav2를 실행한다.
ros2 launch scout_mini_bringup scout_nav2.launch.py map:=src/scout_mini_bringup/maps/scout_mini_map.yaml설명:
- 저장된 맵 로드
map_server,amcl,navigation실행
- RViz2 실행
Fixed Frame을map으로 설정2D Pose Estimate로 현재 위치와 방향 지정- 위치 추정이 안정되면
Nav2 Goal또는2D Goal Pose로 목표 지정
주의:
map -> odom은 static TF로 직접 고정하지 않는다.- Nav2 단계에서는
AMCL이map -> odom을 publish해야 한다.
정상 동작 기준 TF 구조:
map -> odom -> base_link -> velodyne
역할:
map -> odom: SLAM 또는 AMCLodom -> base_link: scout_basebase_link -> velodyne: static TF