-
Notifications
You must be signed in to change notification settings - Fork 14
Building a world
11111111111111111
가제보는 모델들을 프로그램이나 GUI를 통해 시뮬레이션에 로드 할 수 있다. 모델은 다운로드 하거나 사용자가 만들어서 사용자 컴퓨터에 저장 시킬 수 있다. 이번 튜토리얼은 가제보 모델의 폴더 구조와 모델 폴더 내에 필요한 파일에 대해 설명한다.
가제보의 모델들은 동역학, 기구학, 시각적 요소들의 물리적인 정보를 정의한다. 게다가 모델은 하나 혹은 그 이상의 플러그인들을 포함한다. 이런 플러그인들은 모델의 행동에 영향을 준다. 모델은 단순한 형태에서 복잡한 로봇까지 어떤 것들이나 표현 할 수 있다. 심지어 지면까지 모델이다.
가제보는 시뮬레이션 내에 사용할 수 있는 모델을 저장하거나 유지하기 위해 데이터베이스에 의존한다. 모델 데이터베이스는 공동자원이다. 따라서 사용자가 만든 모델을 업로드하거나 유지해주기를 바란다.
모델의 데이터베이스는 https://bitbucket.org/osrf/gazebo_models 에서 찾을 수 있다.
$ hg clone https://bitbucket.org/osrf/gazebo_models
모델의 데이터베이스는 특정 폴더와 파일 구조에 따라야 한다. 모델 데이터베이스의 root는 각 모델에 대한 하나의 폴더와 모델 데이터베이스의 관련된 정보를 가진 database.config파일을 포함한다. 각 모델의 폴더는 모델에 관련된 meta data를 포함하는 model.config 파일을 가지고 있다. 모델의 폴더는 모델의 대한 SDF와 물질, 메시, 플러그인들을 포함한다.
구조는 아래와 같다.(이번 예제에서 데이터베이스는 model_1이라 불리는 단 하나의 모델만 가진다)
Database
database.config : Meta data about the database. This is now populated automatically from CMakeLists.txt
model_1 : A directory for model_1
model.config : Meta-data about model_1
model.sdf : SDF description of the model
model.sdf.erb : Ruby embedded SDF model description
meshes : A directory for all COLLADA and STL files
materials : A directory which should only contain the textures and scripts subdirectories
textures : A directory for image files (jpg, png, etc).
scripts : A directory for OGRE material scripts
plugins: A directory for plugin source and header files
이 폴더는 선택적인 폴더이며 모델에 대한 모든 플러그인들을 포함한다.
이 폴더는 선택적인 폴더이며 모델에 대한 COLLADA, STL 파일들을 포함한다.
이 폴더는 선택적인 폴더이며 모델에 대한 texture, image, OGRE script들을 포함한다. Texture image들은 반드시 textures의 하위 폴더에 있어야하며, OGRE scripts 파일들은 scripts 폴더에 위치해야 한다.
모델 데이터베이스 root에 있는 database.config 파일이다. 이 파일은 모델에 대한 라이센스 정보, 데이터베이스의 이름, 유요한 모델의 리스트 정보를 포함한다.
Note: database.config 파일은 오직 online repositories를 위해 필요하다. 사용자의 local 컴퓨터에 전체 모델의 폴더는 database.config 파일을 필요로 하지 않는다.
database.config의 포맷은 아래와 같다.
<?xml version='1.0'?>
<database>
<name>name_of_this_database</name>
<license>Creative Commons Attribution 3.0 Unported</license>
<models
<uri>file://model_directory</uri>
</models>
</database>
Tag | Description |
---|---|
<name> | 데이터베이스의 이름, 이것은 GUI와 다른 툴에 의해 사용된다. |
<license> | 데이터베이스 내에 있는 모델의 라이센스, 우리는 Creative Commons Atrribution 3.0 Unported 라이센스를 강력히 추천 |
<model> | 데이터베이스 내의 모든 모델들의 URI들의 리스트 |
<uri> | 모델에 대한 URI, file://model_directory_name |
각 모델은 반드시 모델의 대한 메타 정보를 포함하는 root 폴더내에 model.config 파일을 포함해야 한다. model.config의 포맷은 아래와 같다.
<?xml version="1.0"?>
<model>
<name>My Model Name</name>
<version>1.0</version>
<sdf version='1.5'>model.sdf</sdf>
<author>
<name>My name</name>
<email>[email protected]</email>
</author>
<description>
A description of the model
</description>
</model>
Tag | Description |
---|---|
<name> | 모델의 이름 |
<version> | 모델의 버전을 필요로 한다. Note:이것은 모델이 사용하는 sdf의 버전이 아니라 model.sdf파일 내에 유지되는 정보이다. |
<sdf> | 이 모델을 나타내는 SDF, URDF파일의 이름을 필요로 한다. version atrribute는 파일이 사용하는 SDF 버전이 무엇인지를 나타내며 URDF의 버전은 필요로 하지 않는다. 다양한 sdf 버전을 사용하기 위해 다양한 sdf 요소 또한 사용되어 질 수 있다. |
<author> | 모델의 작가 이름을 필요로 하는 <name>과 작가의 이메일을 필요로 하는 <email>을 필요로 한다. |
<description> | 모델이 무엇인지(robot, table, cup...), 플러그인이 무엇을 하는지(모델의 기능)를 포함해야 한다. |
<depend> | 옵션이며 이 모델의 모든 의존성들이다. 이것은 보통 다른 모델들이다. |
<model> | 옵션이며 <uri>는 종속모델의 URI를 필요로 하며 <version>은 모델의 버전을 필요로 한다. |
각 모델은 모델의 Simulator Description Format을 포함하는 model.sdf파일을 필요로 한다. SDF 관련 정보는 http://sdformat.org 에서 찾을 수 있다.
Standard SDF 파일은 ruby code를 포함 할 수 있다. 이 옵션은 Embedded ruby code templese를 사용하여 프로그램적으로 sdf 파일을 생성하는데 사용될 수 있다. ruby conversion은 수동으로 행해져야 한다.(erb model.sdf.erb > model.sdf) 그리고 최종적으로 model.sdf 파일은 model.sdf.efr와 함께 업로드 되어야 된다.
sdf.efr 파일의 예들은 gazebo_models repository에서 이용할 수 있고, 쉬운 ERB file은 flocking.world.erb이며 이는 단순한 루프를 사용한다.
-
Robot Simulators
-
Build a Robot
- Model structure and requirements
- How to contribute a model
- Make a model
- Make a Mobile Robot
- The relationship among Link, Joint and Axis
- Import Meshes
- Attach Meshes
- Add a Sensor to a Robot
- Make a Simple Gripper
- Attach Gripper to Robot
- Nested model
- Model Editor
- Animated Box
- Make an animated model(actor)
- Inertial parameters of triangle meshes
- Visibility layers
-
Model Editor
-
Build a World
-
Tools and utilities
-
Write a plugin
-
Plugins
-
Sensors
-
User input
-
Transport Library
-
Rendering Library
-
Connect to ROS
-
Ros Control - Advanced
-
DRCSIM for ROS Kinetic (Ubuntu16.04)
-
DRCSIM
- DRC Simulator installation
- Launchfile options
- Spawn Atlas into a custom world
- Animate joints
- Atlas Keyboard Teleoperation over ROS
- Teleoperate atlas with a music mixer
- Visualization and logging
- Atlas MultiSense SL head
- How to use the Atlas Sim Interface
- Atlas fake walking
- Grasp with Sandia hands
- DRC vehicle tele-operation
- DRC vehicle tele operation with Atlas
- Sending joint commands with ROS
- Atlas control over ROS with python
- Modify environment
- Atlas switching control modes
- Atlas Controller Synchronization over ROS Topics
- Changing Viscous Damping Coefficients Over ROS Service
- Running BDI controller demo
- Using the RobotiQ 3 Finger Adaptive Robot Gripper
- BDI Atlas Robot Interface 3.0.0 Stand In Example
-
HAPTIX
- HAPTIX software install and update
- HAPTIX C API
- HAPTIX Matlab and Octave API
- HAPTIX Simulation World API
- HAPTIX Teleoperation
- HAPTIX environment setup
- HAPTIX Optitrack Control
- HAPTIX Tactor Glove
- HAPTIX Simulation World API with Custom World Example
- HAPTIX logging
- HAPTIX DEKA Luke hand installation
- HAPTIX Simulation Scoring Plugin Example
-
MoveIt!
-
Rviz & rqt & ROSBAG
- Control Theory
- TroubleShooting
- Solidworks model to URDF
- ROS-Gazebo with MATLab
- MATLab installation in Linux
- [Gazebo simulation with MATLab]