-
Notifications
You must be signed in to change notification settings - Fork 0
[Gazebo] Editing Gazebo files
크게 model, world file로 나뉜다. file 형식은 sdf file이고 문법은 xml을 사용한다.
world.sdf에서 시뮬레이션 환경을 만들고 그 내에 model.sdf가 생성되는 방식이다.
현재 쓰고있는 Gazebo garden의 model, world file의 위치는 아래와 같다.
~/PX4-Autopilot/Tools/simulation/gz/models
~/PX4-Autopilot/Tools/simulation/gz/worlds
각 파일을 누르면 model.sdf 혹은 world.sdf 파일이 나타난다. 이 코드가 시뮬레이션 환경을 정의하는 코드이다.
model 파일에 원하는 기체를 만든 후 ~/PX4-Autopilot/ROMFS/init.d-posix/airframes 에 모델의 할당 번호를 넣어준다.(중복X)
그 후 ~/PX4-Autopilot/ROMFS/init.d-posix/airframes/CMakeLists.txt 에 모델을 추가하여 컴파일을 가능케 한다.
model file 구조
~/PX4-Autopilot/Tools/simulation/gz/models/standard_vtol
위의 경로로 들어가면\
- meshes
- model.config
- model.sdf
3개의 파일이 있다. meshes는 모델의 외형에 대한 코드가 담긴 directory, model.config는 모델에 대한 간단한 설명, model.sdf는 모델의 특성에 대한 코드이다.
model's parameter 수정하기
XML 문법
XML문법에 의거하여 model.sdf 파일 내에서 inertia matrix, mass, etc 를 설정해준다.
원하는 sensor도 link해 준다.
model's visual 수정하기
model의 외형은 .dae 확장자의 파일을 link함을 통해 꾸밀 수 있다.
<visual name='base_link_visual'>
<pose>0.53 -1.072 -0.1 1.5707963268 0 3.1415926536</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
<uri>model://standard_vtol/meshes/x8_wing.dae</uri>
</mesh>
</geometry>
<material>
<ambient>.175 .175 .175 1.0</ambient>
<diffuse>.175 .175 .175 1.0</diffuse>
</material>
</visual>위 처럼 <url> </url> 에서 dae file의 파일 주소를 import하여 외형을 설정해준다.
CAD에서 dae file 만들기
위의 방법으로 자신이 원하는 외형을 만들어 model.sdf에서 import해준다.
#Gazebo world file 수정하기
PX4에서 제공하는 Gazebo simulation 환경은 world.sdf에 거의 모든 plugin을 import한다.
즉 world.sdf는 simulation환경에 넣을 물체들, 광원등을 설정해줄 수 있다.
Importing Gazebo plugins
<plugin name='gz::sim::systems::Physics' filename='gz-sim-physics-system'/>
<plugin name='gz::sim::systems::UserCommands' filename='gz-sim-user-commands-system'/>
<plugin name='gz::sim::systems::SceneBroadcaster' filename='gz-sim-scene-broadcaster-system'/>
<plugin name='gz::sim::systems::Contact' filename='gz-sim-contact-system'/>
<plugin name='gz::sim::systems::Imu' filename='gz-sim-imu-system'/>
<plugin name='gz::sim::systems::AirPressure' filename='gz-sim-air-pressure-system'/>
<plugin name='gz::sim::systems::Altimeter' filename='gz-sim-altimeter-system'/>
<plugin name='gz::sim::systems::Magnetometer' filename='gz-sim-magnetometer-system'/>
<plugin name='gz::sim::systems::NavSat' filename='gz-sim-navsat-system'/>
<plugin name='gz::sim::systems::ApplyLinkWrench' filename='gz-sim-apply-link-wrench-system'/>
<plugin name='gz::sim::systems::Sensors' filename='gz-sim-sensors-system'>이번에 가장 골치아팠던 plugin importing이다.
우선 plugin은 API를 통해 Gazebo측에서 src를 가져오는 방식으로 user가 src를 변경할 수 없다.
import할때에도 정해진 plugin name, plugin filename을 통해 가져와야 한다.
reference : Gazebo Ignition tutorial
If you want to ask something,
Please Contact to email or MACH Club
< E-Mail >
giromi@cau.ac.kr (기계 17 김민수)
hansusu1411@gmail.com (전전 20 김한수)
jhwoo200@naver.com (기계 19 우종현)
chc2001@cau.ac.kr (기계 19 정해찬)