SLAM
동시적 위치 추정 및 지도 작성 & 차량 자동 항법 장치
길 찾기에 필요한 것
1. 위치: 로봇의 위치 계측/추정하는 기능
▪︎ GPS
▪︎ Indoor Positioning Seneor
▪︎ 데드레커닝 계산
▪︎ Runge-Kutta 공식 이용
2. 센싱: 벽, 물체 등의 장애물의 계측하는 기능
▪︎ 거리센서 : LRF, 초음파센서, 적외선 거리센서(PSD)
▪︎ 비전센서 : 스테레오 카메라, 모노 카메라, 전 방향 옴니 카메라
▪︎ Depth camera : SwissRanger, Kinect-2, RealSense, Kinect, Xtion, Carmine(PrimeSense), Astra
3. 지도: 길과 장애물 정보가 담긴 지도
▪︎ 로봇은 길을 찾아가기 위해 지도가 필요하다.
▪︎ SLAM(Simultaneous Localization And Mapping)
4. 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능
▪︎ 내비게이션(Navigation)
▪︎ 위치 추정(Localication / Pose estimation)
▪︎ 경로 탐색/계획(Path search and planning
▪︎ Dynamic Window Approach(DWA)
▪︎ A* 알고리즘(A star)
▪︎ 포텐셜 장(Potential Field)
▪︎ 파티클 필터(Particle Filter)
▪︎ 그래프(Graph)
①②③④는 전부 ROS의 메시지이다.
Gmapping
▪︎ OpenSLAM에서 공개된 SLAM의 한 종류, ROS에서 패키지로 제공
▪︎ 특징: Rao-Blackwellized 파티클 필터, 파티클 수 감소, 그리드 맵
▪︎ 하드웨어 제약 사항
- X, Y, Theta 속도 이동 방향 : 차동 구동형 모바일 로봇, 전 방향 이동 로봇
- 주행기록계
- 계측 센서: 2차 평면 계측 가능 센서(LRF, LIDAR, Kinect, Xtion 등)
- 직사각형 및 원형의 로봇
지도작성: Gmappig + TurtleBot3
▪︎ 마스터 실행 (Remote PC)
roscore
▪︎ 터틀봇 및 센서 구동 (SBC)
export TURTLEBOT3_MODEL=burger (또는 waffle)
roslaunch turtlebot3_bringup turtlebot3_robot.launch
turtlebot3_bringup 패키지를 구동하게 되면 openCR(임베디드 시스템)을 구동시켜 모터를 제어할 수 있는 세팅을 한다.
▪︎ RViz, 터틀봇 원격 조종, 지동 작성 (Remote PC)
export TURTLEBOT3_MODEL=burger (또는 waffle)
roslaunch turtlebot3_slam turtlebot3_slam.launch
rosrun rviz rviz-d'rospack find turtlebot3_slam'/rviz/turtlebot3_slam.rviz
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
rosrun map_server map_saver-f ~/map
로봇에는 임베디드 시스템과 싱글 보드 컴퓨터가 함께 장착돼있는데, 그러한 정보를 모두 싱글 보드 컴퓨터 쪽으로 전송하게 된다. 싱글 보드 컴퓨터에선 라이다가 USB로 연결돼있어, 라이다로부터의 정보(2차원 평면의 거리 정보)를 전부 다 취득하여 메시지로 보내게 된다. 실질적으로 로봇에선 모터를 제어하고, 모터값을 읽어 현재 위치를 수정하고, IMU센서로 값을 보정하며 센서값을 받는 역할까지만 한다. 실질적으로 지도를 작성하는 부분은 메시지를 받은 laptop/desktop에서 처리를 하여 지도 작성을 하는 것이다.
'Autonomous Driving > ROS' 카테고리의 다른 글
[ROS] ROS 기본 프로그래밍 (0) | 2023.01.29 |
---|---|
ROS 명령어 (0) | 2023.01.21 |
ROS의 중요 컨셉 (0) | 2023.01.21 |
ROS에 대해 알아보자 (0) | 2023.01.15 |