205 lines
9.8 KiB
XML
205 lines
9.8 KiB
XML
<?xml version="1.0" ?>
|
|
<sdf version="1.10">
|
|
<world name="kaptan_sitl">
|
|
<gravity>0 0 -9.80665</gravity>
|
|
<physics name="dart" type="dart">
|
|
<max_step_size>0.0025</max_step_size>
|
|
<real_time_factor>1.0</real_time_factor>
|
|
<real_time_update_rate>400</real_time_update_rate>
|
|
</physics>
|
|
|
|
<plugin filename="gz-sim-physics-system" name="gz::sim::systems::Physics"/>
|
|
<plugin filename="gz-sim-user-commands-system" name="gz::sim::systems::UserCommands"/>
|
|
<plugin filename="gz-sim-scene-broadcaster-system" name="gz::sim::systems::SceneBroadcaster"/>
|
|
<plugin filename="gz-sim-sensors-system" name="gz::sim::systems::Sensors">
|
|
<render_engine>ogre2</render_engine>
|
|
</plugin>
|
|
<plugin filename="gz-sim-imu-system" name="gz::sim::systems::Imu"/>
|
|
<plugin filename="gz-sim-websocket-server-system" name="gz::sim::systems::WebsocketServer">
|
|
<port>9002</port>
|
|
<publication_hz>30</publication_hz>
|
|
</plugin>
|
|
|
|
<light type="directional" name="sun">
|
|
<cast_shadows>true</cast_shadows>
|
|
<pose>0 0 10 0 0 0</pose>
|
|
<diffuse>0.8 0.8 0.8 1</diffuse>
|
|
<specular>0.2 0.2 0.2 1</specular>
|
|
<direction>-0.5 0.1 -0.9</direction>
|
|
</light>
|
|
<scene>
|
|
<ambient>0.35 0.38 0.42 1</ambient>
|
|
<background>0.08 0.11 0.16 1</background>
|
|
<shadows>true</shadows>
|
|
</scene>
|
|
|
|
<!-- Visual-only launch-local reference map. It deliberately has no
|
|
collision geometry: the closed-loop model receives IMU plus a direct
|
|
noisy local-state sensor, not vision, terrain, range, or flow. The
|
|
pad makes the landing point legible without claiming a terrain or
|
|
obstacle model that the estimator does not observe. -->
|
|
<model name="sitl_reference_map">
|
|
<static>true</static>
|
|
<link name="reference_link">
|
|
<visual name="landing_pad">
|
|
<pose>0 0 0.002 0 0 0</pose>
|
|
<geometry><cylinder><radius>1.25</radius><length>0.004</length></cylinder></geometry>
|
|
<material>
|
|
<ambient>0.03 0.20 0.36 1</ambient><diffuse>0.05 0.36 0.65 1</diffuse>
|
|
<emissive>0.01 0.08 0.14 1</emissive>
|
|
</material>
|
|
</visual>
|
|
</link>
|
|
</model>
|
|
|
|
<model name="ground">
|
|
<static>true</static>
|
|
<link name="ground_link">
|
|
<collision name="ground_collision">
|
|
<geometry><plane><normal>0 0 1</normal><size>100 100</size></plane></geometry>
|
|
</collision>
|
|
<visual name="ground_visual">
|
|
<geometry><plane><normal>0 0 1</normal><size>100 100</size></plane></geometry>
|
|
<material><ambient>0.2 0.2 0.2 1</ambient><diffuse>0.4 0.4 0.4 1</diffuse></material>
|
|
</visual>
|
|
</link>
|
|
</model>
|
|
|
|
<!-- This is a fixed simulated vehicle. Its M1-M4 mapping is defined in
|
|
the plugin, not inferred from any board timer. Parameters below are a
|
|
declared SITL model and require vehicle-specific validation before a
|
|
physical-flight claim.
|
|
|
|
TODO(configuration): replace these fixed values with a reviewed,
|
|
versioned vehicle profile selected by the ground configuration flow.
|
|
Until then this world is only the declared Kaptan test vehicle. -->
|
|
<model name="kaptan_sitl_quad">
|
|
<!-- ENU/FLU Gazebo is yawed once so Kaptan's FRD body axes align with
|
|
its NED local frame at the stationary-initializer origin. -->
|
|
<!-- Four 80 mm landing feet support the base_link at z=0.14 m. The
|
|
launch-local NED origin is captured only after this physical rest
|
|
pose is established; it is not a hidden airborne hover point. -->
|
|
<pose>0 0 0.14 0 0 1.5707963268</pose>
|
|
<link name="base_link">
|
|
<inertial>
|
|
<mass>1.2</mass>
|
|
<inertia>
|
|
<ixx>0.021</ixx><iyy>0.021</iyy><izz>0.039</izz>
|
|
<ixy>0</ixy><ixz>0</ixz><iyz>0</iyz>
|
|
</inertia>
|
|
</inertial>
|
|
<collision name="body_collision">
|
|
<geometry><box><size>0.30 0.30 0.08</size></box></geometry>
|
|
</collision>
|
|
<visual name="body_visual">
|
|
<geometry><box><size>0.30 0.30 0.08</size></box></geometry>
|
|
<material><ambient>0.05 0.1 0.2 1</ambient><diffuse>0.1 0.2 0.5 1</diffuse></material>
|
|
</visual>
|
|
<collision name="landing_foot_front_right_collision">
|
|
<pose>0.12 -0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
</collision>
|
|
<visual name="landing_foot_front_right_visual">
|
|
<pose>0.12 -0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
<material><ambient>0.07 0.07 0.08 1</ambient><diffuse>0.12 0.12 0.14 1</diffuse></material>
|
|
</visual>
|
|
<collision name="landing_foot_rear_right_collision">
|
|
<pose>-0.12 -0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
</collision>
|
|
<visual name="landing_foot_rear_right_visual">
|
|
<pose>-0.12 -0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
<material><ambient>0.07 0.07 0.08 1</ambient><diffuse>0.12 0.12 0.14 1</diffuse></material>
|
|
</visual>
|
|
<collision name="landing_foot_rear_left_collision">
|
|
<pose>-0.12 0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
</collision>
|
|
<visual name="landing_foot_rear_left_visual">
|
|
<pose>-0.12 0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
<material><ambient>0.07 0.07 0.08 1</ambient><diffuse>0.12 0.12 0.14 1</diffuse></material>
|
|
</visual>
|
|
<collision name="landing_foot_front_left_collision">
|
|
<pose>0.12 0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
</collision>
|
|
<visual name="landing_foot_front_left_visual">
|
|
<pose>0.12 0.12 -0.10 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.022</radius><length>0.08</length></cylinder></geometry>
|
|
<material><ambient>0.07 0.07 0.08 1</ambient><diffuse>0.12 0.12 0.14 1</diffuse></material>
|
|
</visual>
|
|
<visual name="arm_front_right">
|
|
<pose>0.085 -0.085 0 0 0 -0.7853981634</pose>
|
|
<geometry><box><size>0.30 0.025 0.02</size></box></geometry>
|
|
</visual>
|
|
<visual name="arm_rear_right">
|
|
<pose>-0.085 -0.085 0 0 0 0.7853981634</pose>
|
|
<geometry><box><size>0.30 0.025 0.02</size></box></geometry>
|
|
</visual>
|
|
<visual name="arm_rear_left">
|
|
<pose>-0.085 0.085 0 0 0 -0.7853981634</pose>
|
|
<geometry><box><size>0.30 0.025 0.02</size></box></geometry>
|
|
</visual>
|
|
<visual name="arm_front_left">
|
|
<pose>0.085 0.085 0 0 0 0.7853981634</pose>
|
|
<geometry><box><size>0.30 0.025 0.02</size></box></geometry>
|
|
</visual>
|
|
<visual name="m1">
|
|
<pose>0.17 -0.17 0.05 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.10</radius><length>0.01</length></cylinder></geometry>
|
|
<material><ambient>0.7 0.1 0.1 1</ambient><diffuse>0.7 0.1 0.1 1</diffuse></material>
|
|
</visual>
|
|
<visual name="m2">
|
|
<pose>-0.17 -0.17 0.05 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.10</radius><length>0.01</length></cylinder></geometry>
|
|
<material><ambient>0.1 0.7 0.1 1</ambient><diffuse>0.1 0.7 0.1 1</diffuse></material>
|
|
</visual>
|
|
<visual name="m3">
|
|
<pose>-0.17 0.17 0.05 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.10</radius><length>0.01</length></cylinder></geometry>
|
|
<material><ambient>0.1 0.1 0.7 1</ambient><diffuse>0.1 0.1 0.7 1</diffuse></material>
|
|
</visual>
|
|
<visual name="m4">
|
|
<pose>0.17 0.17 0.05 0 0 0</pose>
|
|
<geometry><cylinder><radius>0.10</radius><length>0.01</length></cylinder></geometry>
|
|
<material><ambient>0.7 0.7 0.1 1</ambient><diffuse>0.7 0.7 0.1 1</diffuse></material>
|
|
</visual>
|
|
<sensor name="imu" type="imu">
|
|
<always_on>true</always_on>
|
|
<update_rate>100</update_rate>
|
|
<topic>/kaptan/sitl/imu</topic>
|
|
<imu>
|
|
<angular_velocity>
|
|
<x><noise type="gaussian"><mean>0</mean><stddev>0.002</stddev></noise></x>
|
|
<y><noise type="gaussian"><mean>0</mean><stddev>0.002</stddev></noise></y>
|
|
<z><noise type="gaussian"><mean>0</mean><stddev>0.002</stddev></noise></z>
|
|
</angular_velocity>
|
|
<linear_acceleration>
|
|
<x><noise type="gaussian"><mean>0</mean><stddev>0.03</stddev></noise></x>
|
|
<y><noise type="gaussian"><mean>0</mean><stddev>0.03</stddev></noise></y>
|
|
<z><noise type="gaussian"><mean>0</mean><stddev>0.03</stddev></noise></z>
|
|
</linear_acceleration>
|
|
</imu>
|
|
</sensor>
|
|
</link>
|
|
<plugin filename="libkaptan_sitl_quad.so" name="kaptan::sitl::Quad">
|
|
<imu_topic>/kaptan/sitl/imu</imu_topic>
|
|
<sensor_udp_port>14660</sensor_udp_port>
|
|
<actuator_udp_port>14661</actuator_udp_port>
|
|
<truth_udp_port>14663</truth_udp_port>
|
|
<user_clock_udp_port>14664</user_clock_udp_port>
|
|
<actuator_timeout_usec>25000</actuator_timeout_usec>
|
|
<maximum_motor_thrust_newtons>4.5</maximum_motor_thrust_newtons>
|
|
<motor_time_constant_seconds>0.03</motor_time_constant_seconds>
|
|
<local_position_noise_stddev_m>0.10</local_position_noise_stddev_m>
|
|
<local_velocity_noise_stddev_mps>0.05</local_velocity_noise_stddev_mps>
|
|
<local_state_noise_seed>18181</local_state_noise_seed>
|
|
<reaction_torque_per_newton_metre>0.012</reaction_torque_per_newton_metre>
|
|
</plugin>
|
|
</model>
|
|
</world>
|
|
</sdf>
|