하지만 본인이 이번에 사용하고자 하는 SLAM 방법은 Hector SLAM 이므로,
Hector SLAM을 진행해보자.
작업환경
OS : Ubuntu 16.04
ROS : Kinetic
1. Install Hector SLAM
필자의 게시글 중 하나인 [SLAM] #11. How to 2D LRF SLAM with erle-copter/ 에서 Hector SLAM 설치에 대한 내용을 참조하여, 다음 명령어를 통해 Hector SLAM Package 설치를 진행하자.
$ cd ~/catkin_ws/src
$ git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam
$ cd ~/catkin_ws && catkin_make
2. Launch Hector SLAM with Turtlebot3 simulation
다음 Turtlebot3 simulation 링크를 참조하여 Hector SLAM을 진행해보자.
# Termianl_1
$ export TURTLEBOT3_MODEL=waffle_pi
$
roslaunch turtlebot3_gazebo turtlebot3_house.launch
# Termianl_2
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=hector
# Termianl_3
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
제대로 실행 되었다면 다음과 같은 결과를 볼 수 있다.
3. Download all Gazebo Model
simulation 과정에서 기본적으로 제공된 환경이 아닌 내가 원하는 환경을 만들 필요가 있다.
이를 위해서 먼저 모든 Gazebo Model 들을 다운받아보자.
다음 링크를 참조하자.
( http://machineawakening.blogspot.com/2015/05/how-to-download-all-gazebo-models.html )
명령어는 다음과 같다.
# Making Shell Script for Download All Gazebo model
$ cd ~
$ nano download_gazebo_model.sh
# copy and paste codes below
==================================================================#!/bin/sh # Download all model archive files wget -l 2 -nc -r "http://models.gazebosim.org/" --accept gz # This is the folder into which wget downloads the model archives cd "models.gazebosim.org" # Extract all model archives for i in * do tar -zvxf "$i/model.tar.gz" done # Copy extracted files to the local model folder cp -vfR * "$HOME/.gazebo/models/"
# give authority to script file==================================================================
$ chmod +x download_gazebo_model.sh
# execute script
$ ./download_gazebo_model.sh
다음과 같이 model들이 생성된 것을 확인할 수 있다.
4. Making Gazebo World
world를 만들기 위해서 Gazebo를 켜보자.
# Open Gazebo
$ gazebo
그리고 원하는 Model 들을 가져와 world를 만든 뒤
File -> Save as
를 눌러 name_of_your_world.world 로 이름을 정한 뒤 파일을 저장한다.
그리고 저장된 파일을 열어본다.
# Open saved gazebo world
$ gazebo path_of_your_file/name_of_your_world.world
다음과 같이 저장된 world를 확인할 수 있다.
5. Making Launch file
이제 우리가 만든 world에 turtlebot3를 불러오기 위해 launch 파일을 만들어보자.
~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch
위 경로에 "turtlebot3_caffe.launch" 라는 이름의 새로운 파일을 만든다.
그리고 우리가 만든 world에 turtlebot3를 넣기위한 launch 파일을 만든다.
$ cd ~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch
$ nano turtlebot3_caffe.launch
다음 내용을 기입한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<launch>
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
<arg name="x_pos" default="-3.0"/>
<arg name="y_pos" default="1.0"/>
<arg name="z_pos" default="0.0"/>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_caffe.world"/>
<arg name="paused" value="false"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
<param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model turtlebot3 -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
</launch>
| cs |
저장 후 실행해보자.
$ export TURTLEBOT3_MODEL=waffle_pi
$
roslaunch turtlebot3_gazebo turtlebot3_.launch
다음과 같은 모습을 볼 수 있다.
turtlebot3가 world에 추가된 것을 확인할 수 있다.
6. SLAM with created World
이제 우리가 만든 world를 이용해 SLAM을 진행해보자.
# Termianl_1
$ export TURTLEBOT3_MODEL=waffle_pi
$
roslaunch turtlebot3_gazebo turtlebot3_caffe.launch
# Termianl_2
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=hector
# Termianl_3
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
댓글 없음:
댓글 쓰기