본문 바로가기

drok/drok2 패키지

gazebo에서 3D맵 만들기

gazebo에서 벽, 계단 등으로 이루어진 3D맵을 만들고 drok2로봇 모델을 맵 상에서 움직여보자

 

3D 맵 만들기

먼저 가제보를 실행한다.

~$ gazebo

gazebo

위와 같은 Gazebo화면에서 왼쪽 상단에 File, Edit, Camera, View.. 등 메뉴바가 있는 것을 볼 수 있다.

Edit 메뉴에서 building editor 를 클릭한다.

그러면 다음과 같은 building editor화면이 나타난다.

 

building editor

화면에서 왼쪽에는 벽, 문, 계단 등을 만들수 있는 항목들이 있고, 모눈종이처럼 생긴 구역에서 위에서 내려다보는 평면도 관점의 맵을 볼 수 있다. 이 모눈종이 구역에서 벽, 계단 등을 생성, 배치할 수 있다 아래쪽 구역은 실제 gazebo 공간상에 생성된 3차원 맵을 보여준다. 

 

간단한 벽과 계단을 만들어보자.

 

왼쪽의 Create Walls의 Wall을 클릭하고 모눈종이 영역에서 직선을 그려주면, 벽이 생성된다.  직선의 길이, 위치 등을 변경하면 벽의 길이, 위치를 변경할수 있다.

 

다음으로 계단을 생성해보자.

왼쪽에서 Stairs 를 클릭하고, 모눈종이 영역을 클릭해주면 계단이 생성된다.

계단

계단을 클릭하면 위와 같이 바뀌는데, 이 상태에서 작은 사각형을 마우스로 잡고 끌면, 계단의 길이와 폭을 변화시킬수 있다.

또한 작은 사각형에 연결되어 있는 작은 동그라미를 마우스로 잡고 움직이면 계단의 방향을 바꿀수 있다.

stairs inspector

계단을 클릭한 후 우클릭을 하면 stairs inspector와 delete 매뉴가 나오는데  stairs inpector를 열면 위와 같은 창이 열린다.

여기서 계단의 위치를 정밀하게 지정해줄 수 있고, 폭, 깊이, 높이, 칸수 등을 설정할 수 있다.

 

사이즈 변경한 계단

위는 계단의 높이를 0.5m, Step 수를 6칸으로 변경한 결과이다.

 

 

Add Texture 기능

Add texture 기능으로 물체의 표면 질감?을 바꿔줄수 있다.

 

building editor 에서 맵을 다 만들었다면 왼쪽 상단의 File 탭에서 Save as..를 클릭하고 

이름을 바꿔준 뒤, 저장한다.

저장한 뒤 File -> exit building editor 를 눌러 buildig editor 화면에서 나간다.

 

저장한 뒤 building editor에서 나가면, 가제보 공간에, 우리가 만든 구조물들이 나타나있다.

위 사진은 building editor에서 간단한 계단, 벽 등으로 만든 구조물이다.

 

이제 이 3D 맵을 *.world 파일로 저장하자.

왼쪽 상단의 File -> save world as 를 클릭한다.

위와 같이 저장 경로와 이름을 정하는 창이 열린다.

이때 저장경로를 결정하고 *.world 형식으로 파일 이름을 정한다.

(예를 들어 example_map.world )

 

 

 

지정한 경로에 world파일이 생성되었다.

 

 


Drok2  로봇모델을 3D맵에서 움직이기

 

~$ roslaunch drok2_simulator drok2_gazebo.launch

위 명령으로 가제보에서 drok2 로봇 모델을 움직일 수 있었다.

정확히는 drok2로봇 모델이 포함된 world를 불러오는 것이다.

drok2_simulator 패키지의 drok2_gazebo.launch 파일을 보자.

 

<launch>
 <include file="$(find gazebo_ros)/launch/empty_world.launch">
 <arg name="paused" default="true"/>
 <arg name="world_name" value="$(find drok2_simulator)/worlds/drok2_empty.world"/>

 </include>
</launch>

여기서

<arg name="world_name" value="$(find drok2_simulator)/worlds/drok2_empty.world"/>

이것은 가제보에서 drok2_empty.world 를 불러온다는 것이다.

 

drok2_empty.world파일은 //world부분//drok2 로봇 모델부분//플러그인 부분// 으로 구분할 수 있다.

 

여기서 world부분을 지우고, 앞서 building editor를 이용해 만든 3D맵의 world파일의 내용을 붙여넣기 하면

우리가 만든 3d맵과 Drok2 로봇 모델을 같이 gazebo에서 불러올 수 있다.

 

3D맵의 world파일에서

----------------------------------------------------------------------------

<sdf version='1.x'>

  <world name='default'>

(........)

  </world>

<sdf>

-----------------------------------------------------------------------------

(.......)에 해당하는 부분을 복사한다.

 

 

그 후 drok2_empty.world 파일에서 world부분에 해당하는

-------------------------------------------------------------------------------

<?xml version="1.x" ?>

<sdf version="1.x">

  <world name="drok2_empty.world">

 

(.........)

 

  <modle name='DROK2'>

------------------------------------------------------------------------------------

(.........) 부분을 지우고 붙여넣기 한다.

 

 

이제 아래 명령으로 drok2_simulator를 실행해보자.

~$ roslaunch drok2_simulator drok2_gazebo.launch

3D 맵과 drok2 로봇 모델이 모두 불러와진 것을 확인 할 수 있다.

 

cmd_vel 토픽을 보내면 로봇을 움직일 수 있다.

 

참고

https://www.youtube.com/watch?v=7McYSJFAqlU

 

'drok > drok2 패키지' 카테고리의 다른 글

depth camera 센서 plugin  (0) 2020.03.30
Drok2 3D 모델을 gazebo와 연동하기  (0) 2020.03.19