• 터틀봇3 SLAM
    ROS 2020. 12. 27. 16:39

     

    로보티즈에서 제공하는 e-매뉴얼을 따라 진행했다.

    emanual.robotis.com/docs/en/platform/turtlebot3/slam/#run-slam-node

     

    ROBOTIS e-Manual

     

    emanual.robotis.com

     

    SLAM과 Navigation을 진행하기 위해서는 반드시 터틀봇 Bring up 과정을 먼저 수행해야 한다.

     

     

    터틀봇3 가져오기 (Bring up)

    PC에서 roscore 명령어를 실행한다.

    roscore

     

    새 터미널을 열어서 라즈베리파이와 연결해준다. {IP_ADDRESS_OF_RASPBERRY_PI} 자리에 라즈베리파이 IP를 입력한다.

    ssh pi@{IP_ADDRESS_OF_RASPBERRY_PI}

     

    라즈베리파이와 연결된 상태에서 다음 명령어를 입력하여 터틀봇 기본 패키지를 가져온다.

    roslaunch turtlebot3_bringup turtlebot3_robot.launch

     

    RViz로 불러오기

    새 터미널을 열고 다음 명령어를 입력하여 Robot state publisher를 시작한다.

    roslaunch turtlebot3_bringup turtlebot3_remote.launch

     

    새 터미널을 열고 다음 명령어를 입력하여 RViz를 실행한다.

    'rospack find {package_name}' 명령을 통해 패키지 경로를 반환받고 해당 위치에 있는 rviz를 실행한다.

    rospack = ros + pack(age)

    rosrun rviz rviz -d `rospack find turtlebot3_description`/rviz/model.rviz

     

    RViz에 로드된 터틀봇3

     

    파라미터 사전 정의하기

    먼저 bashrc 파일에 TURTLEBOT3_MODEL 파라미터를 사전 정의해두는 것이 좋다.

    이 과정을 생략할 경우 SLAM, Navigation 등 노드를 시작할 때마다 'export TURTLEBOT3_MODEL=burger' 명령어를 입력해줘야 한다.

    (사용하는 터틀봇 모델이 Waffle Pi일 경우 'burger' 자리에 'waffle_pi'를 입력한다.)

    echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc

     

    수정한 내용을 반영한다.

    source ~/.bashrc

     

    SLAM(Simultaneous Localization and Mapping)

    : 임의의 공간에서 현재 위치를 추정하여 지도를 그리는 기술

     

    Bring up 단계를 수행한 상태에서 진행해야 한다.

     

    PC에서 새 터미널을 열고 다음 명령어를 입력해서 SLAM 노드를 시작한다. (RViz가 실행된다.)

    roslaunch turtlebot3_bringup turtlebot3_robot.launch

     

    새 터미널을 열고 Teleoperation (원격 조작) 노드를 시작한다.

    roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

    이제 터미널 창에서 w, a, s, d, x키를 눌러서 터틀봇을 이동할 수 있다.

    w(앞으로 = 선속도), a(왼쪽으로 회전 = 각속도), s(멈춤), d(오른쪽으로 회전 = 각속도)

    키는 여러 번 누를 수록 속도가 빨라진다.

     

    키를 누를 때마다 터틀봇이 움직여서 지도를 그려낸다.

     

    터틀봇을 움직일 때마다 SLAM 터미널 창에 위와 같은 정보들이 기록된다.

     

    지도를 다 그린 후에는 map_saver 노드를 통해 map 파일을 저장한다.

    map 파일은 map_saver 노드가 시작된 위치(보통 Home 디렉토리)에 map.yaml 파일과 map.pgm 파일로 저장된다.

    rosrun map_server map_saver -f ~/map

    '-f' 옵션을 통해 map 파일을 저장할 경로와 파일 이름을 지정할 수도 있다.

     

    완성된 지도는 점유 격자 지도(OGM, Occupancy Grid Map) 형태로 저장된다.

    흰색 : 자유롭게 움직일 수 있는 자유 영역

    검은색 : 접근할 수 없는 영역 (벽 등)

    회색 : 알지 못하는 미지의 영역

    댓글

ABOUT ME

공부한 것을 기록하기 위해 블로그를 개설했습니다. 관심 분야는 ROS와 머신러닝입니다.

VISIT

/