You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

486 lines
15 KiB

<?xml version="1.0" encoding="UTF-8"?>
<sdf version='1.9'>
<model name='px4vision'>
<pose>0 0 .24 0 0 0</pose>
<self_collide>false</self_collide>
<static>false</static>
<link name='base_link'>
<pose>0 0 0 0 0 0</pose>
<inertial>
<pose>0 0 0 0 0 0</pose>
<mass>1.5</mass>
<inertia>
<ixx>0.029125</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>0.029125</iyy>
<iyz>0</iyz>
<izz>0.055225</izz>
</inertia>
</inertial>
<gravity>1</gravity>
<velocity_decay />
<collision name='base_link_inertia_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.47 0.47 0.11</size>
</box>
</geometry>
<surface>
<contact>
<ode>
<min_depth>0.001</min_depth>
<max_vel>0</max_vel>
</ode>
</contact>
<friction>
<ode />
</friction>
</surface>
</collision>
<visual name='base_link_inertia_visual'>
<pose>0 0 0 1.5707 0 0.01</pose>
<geometry>
<mesh>
<scale>0.001 0.001 0.001</scale>
<uri>model://px4vision/meshes/body.dae</uri>
</mesh>
</geometry>
<material> <!-- DarkGrey-->
<ambient>0.175 0.175 0.175 1.0</ambient>
<diffuse>0.175 0.175 0.175 1.0</diffuse>
<specular>0.175 0.175 0.175 1.0</specular>
</material>
</visual>
<sensor name="air_pressure_sensor" type="air_pressure">
<gz_frame_id>base_link</gz_frame_id>
<always_on>1</always_on>
<update_rate>50</update_rate>
<air_pressure>
<pressure>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.01</stddev>
</noise>
</pressure>
</air_pressure>
</sensor>
<sensor name="magnetometer_sensor" type="magnetometer">
<gz_frame_id>base_link</gz_frame_id>
<always_on>1</always_on>
<update_rate>100</update_rate>
<magnetometer>
<!-- TODO: update to fix units and coordinate system when we move past Harmonic -->
<!-- See https://github.com/gazebosim/gz-sim/pull/2460 -->
<!-- 3mgauss RMS: NOTE: noise is in tesla but sensor reports data in gauss -->
<!-- Noise modeled after IIS2MDC -->
<x>
<noise type="gaussian">
<stddev>0.0001</stddev>
</noise>
</x>
<y>
<noise type="gaussian">
<stddev>0.0001</stddev>
</noise>
</y>
<z>
<noise type="gaussian">
<stddev>0.0001</stddev>
</noise>
</z>
</magnetometer>
</sensor>
<sensor name="navsat_sensor" type="navsat">
<gz_frame_id>base_link</gz_frame_id>
<always_on>1</always_on>
<update_rate>30</update_rate>
</sensor>
<sensor name="imu_sensor" type="imu">
<gz_frame_id>base_link</gz_frame_id>
<always_on>1</always_on>
<update_rate>250</update_rate>
<imu>
<angular_velocity>
<x>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.00018665</stddev>
<dynamic_bias_stddev>3.8785e-05</dynamic_bias_stddev>
<dynamic_bias_correlation_time>1000</dynamic_bias_correlation_time>
</noise>
</x>
<y>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.00018665</stddev>
<dynamic_bias_stddev>3.8785e-05</dynamic_bias_stddev>
<dynamic_bias_correlation_time>1000</dynamic_bias_correlation_time>
</noise>
</y>
<z>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.00018665</stddev>
<dynamic_bias_stddev>3.8785e-05</dynamic_bias_stddev>
<dynamic_bias_correlation_time>1000</dynamic_bias_correlation_time>
</noise>
</z>
</angular_velocity>
<linear_acceleration>
<x>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.00186</stddev>
<dynamic_bias_stddev>0.006</dynamic_bias_stddev>
<dynamic_bias_correlation_time>300</dynamic_bias_correlation_time>
</noise>
</x>
<y>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.00186</stddev>
<dynamic_bias_stddev>0.006</dynamic_bias_stddev>
<dynamic_bias_correlation_time>300</dynamic_bias_correlation_time>
</noise>
</y>
<z>
<noise type="gaussian">
<mean>0</mean>
<stddev>0.00186</stddev>
<dynamic_bias_stddev>0.006</dynamic_bias_stddev>
<dynamic_bias_correlation_time>300</dynamic_bias_correlation_time>
</noise>
</z>
</linear_acceleration>
</imu>
</sensor>
</link>
<link name='rotor_0'>
<pose>0.0935 -0.107 0.03 0 0 0</pose>
<inertial>
<pose>0 0 0 0 0 0</pose>
<mass>0.005</mass>
<inertia>
<ixx>9.75e-07</ixx>
<iyy>0.000273104</iyy>
<izz>0.000274004</izz>
</inertia>
</inertial>
<collision name='rotor_0_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<cylinder>
<length>0.005</length>
<radius>0.128</radius>
</cylinder>
</geometry>
<surface>
<contact>
<ode>
<min_depth>0.001</min_depth>
<max_vel>0</max_vel>
</ode>
</contact>
<friction>
<ode />
</friction>
</surface>
</collision>
<visual name='rotor_0_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>0.6 0.6 0.6</scale>
<uri>model://px4vision/meshes/iris_prop_ccw.dae</uri>
</mesh>
</geometry>
<material> <!-- Blue -->
<ambient>0 0 1</ambient>
<diffuse>0 0 1</diffuse>
<specular>0.1 0.1 0.1 1</specular>
</material>
</visual>
<gravity>1</gravity>
<velocity_decay />
</link>
<joint name='rotor_0_joint' type='revolute'>
<child>rotor_0</child>
<parent>base_link</parent>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-1e+16</lower>
<upper>1e+16</upper>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
<!-- <use_parent_model_frame>1</use_parent_model_frame> -->
</axis>
</joint>
<link name='rotor_1'>
<pose>-0.0935 0.107 0.03 0 0 0</pose>
<inertial>
<pose>0 0 0 0 0 0</pose>
<mass>0.005</mass>
<inertia>
<ixx>9.75e-07</ixx>
<iyy>0.000273104</iyy>
<izz>0.000274004</izz>
</inertia>
</inertial>
<collision name='rotor_1_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<cylinder>
<length>0.005</length>
<radius>0.128</radius>
</cylinder>
</geometry>
<surface>
<contact>
<ode>
<min_depth>0.001</min_depth>
<max_vel>0</max_vel>
</ode>
</contact>
<friction>
<ode />
</friction>
</surface>
</collision>
<visual name='rotor_1_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>0.6 0.6 0.6</scale>
<uri>model://px4vision/meshes/iris_prop_ccw.dae</uri>
</mesh>
</geometry>
<material> <!-- DarkGrey -->
<ambient>0.175 0.175 0.175 1.0</ambient>
<diffuse>0.175 0.175 0.175 1.0</diffuse>
<specular>0.175 0.175 0.175 1.0</specular>
</material>
</visual>
<gravity>1</gravity>
<velocity_decay />
</link>
<joint name='rotor_1_joint' type='revolute'>
<child>rotor_1</child>
<parent>base_link</parent>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-1e+16</lower>
<upper>1e+16</upper>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
<!-- <use_parent_model_frame>1</use_parent_model_frame> -->
</axis>
</joint>
<link name='rotor_2'>
<pose>0.0935 0.107 0.03 0 0 0</pose>
<inertial>
<pose>0 0 0 0 0 0</pose>
<mass>0.005</mass>
<inertia>
<ixx>9.75e-07</ixx>
<iyy>0.000273104</iyy>
<izz>0.000274004</izz>
</inertia>
</inertial>
<collision name='rotor_2_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<cylinder>
<length>0.005</length>
<radius>0.128</radius>
</cylinder>
</geometry>
<surface>
<contact>
<ode>
<min_depth>0.001</min_depth>
<max_vel>0</max_vel>
</ode>
</contact>
<friction>
<ode />
</friction>
</surface>
</collision>
<visual name='rotor_2_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>0.6 0.6 0.6</scale>
<uri>model://px4vision/meshes/iris_prop_cw.dae</uri>
</mesh>
</geometry>
<material> <!-- Blue -->
<ambient>0 0 1</ambient>
<diffuse>0 0 1</diffuse>
<specular>0.1 0.1 0.1 1</specular>
</material>
</visual>
<gravity>1</gravity>
<velocity_decay />
</link>
<joint name='rotor_2_joint' type='revolute'>
<child>rotor_2</child>
<parent>base_link</parent>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-1e+16</lower>
<upper>1e+16</upper>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
<!-- <use_parent_model_frame>1</use_parent_model_frame> -->
</axis>
</joint>
<link name='rotor_3'>
<pose>-0.0935 -0.107 0.03 0 0 0</pose>
<inertial>
<pose>0 0 0 0 0 0</pose>
<mass>0.005</mass>
<inertia>
<ixx>9.75e-07</ixx>
<iyy>0.000273104</iyy>
<izz>0.000274004</izz>
</inertia>
</inertial>
<collision name='rotor_3_collision'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<cylinder>
<length>0.005</length>
<radius>0.128</radius>
</cylinder>
</geometry>
<surface>
<contact>
<ode>
<min_depth>0.001</min_depth>
<max_vel>0</max_vel>
</ode>
</contact>
<friction>
<ode />
</friction>
</surface>
</collision>
<visual name='rotor_3_visual'>
<pose>0 0 0 0 0 0</pose>
<geometry>
<mesh>
<scale>0.6 0.6 0.6</scale>
<uri>model://px4vision/meshes/iris_prop_cw.dae</uri>
</mesh>
</geometry>
<material> <!-- DarkGrey -->
<ambient>0.175 0.175 0.175 1.0</ambient>
<diffuse>0.175 0.175 0.175 1.0</diffuse>
<specular>0.175 0.175 0.175 1.0</specular>
</material>
</visual>
<gravity>1</gravity>
<velocity_decay />
</link>
<joint name='rotor_3_joint' type='revolute'>
<child>rotor_3</child>
<parent>base_link</parent>
<axis>
<xyz>0 0 1</xyz>
<limit>
<lower>-1e+16</lower>
<upper>1e+16</upper>
</limit>
<dynamics>
<spring_reference>0</spring_reference>
<spring_stiffness>0</spring_stiffness>
</dynamics>
<!-- <use_parent_model_frame>1</use_parent_model_frame> -->
</axis>
</joint>
<!-- TODO: add GPS plugin -->
<plugin filename="gz-sim-multicopter-motor-model-system"
name="gz::sim::systems::MulticopterMotorModel">
<jointName>rotor_0_joint</jointName>
<linkName>rotor_0</linkName>
<turningDirection>ccw</turningDirection>
<timeConstantUp>0.0125</timeConstantUp>
<timeConstantDown>0.025</timeConstantDown>
<maxRotVelocity>1000</maxRotVelocity>
<motorConstant>8.54858e-06</motorConstant>
<momentConstant>0.06</momentConstant>
<commandSubTopic>command/motor_speed</commandSubTopic>
<motorNumber>0</motorNumber>
<rotorDragCoefficient>0.000806428</rotorDragCoefficient>
<rollingMomentCoefficient>1e-06</rollingMomentCoefficient>
<rotorVelocitySlowdownSim>10</rotorVelocitySlowdownSim>
<motorType>velocity</motorType>
</plugin>
<plugin filename="gz-sim-multicopter-motor-model-system"
name="gz::sim::systems::MulticopterMotorModel">
<jointName>rotor_1_joint</jointName>
<linkName>rotor_1</linkName>
<turningDirection>ccw</turningDirection>
<timeConstantUp>0.0125</timeConstantUp>
<timeConstantDown>0.025</timeConstantDown>
<maxRotVelocity>1000</maxRotVelocity>
<motorConstant>8.54858e-06</motorConstant>
<momentConstant>0.06</momentConstant>
<commandSubTopic>command/motor_speed</commandSubTopic>
<motorNumber>1</motorNumber>
<rotorDragCoefficient>0.000806428</rotorDragCoefficient>
<rollingMomentCoefficient>1e-06</rollingMomentCoefficient>
<rotorVelocitySlowdownSim>10</rotorVelocitySlowdownSim>
<motorType>velocity</motorType>
</plugin>
<plugin filename="gz-sim-multicopter-motor-model-system"
name="gz::sim::systems::MulticopterMotorModel">
<jointName>rotor_2_joint</jointName>
<linkName>rotor_2</linkName>
<turningDirection>cw</turningDirection>
<timeConstantUp>0.0125</timeConstantUp>
<timeConstantDown>0.025</timeConstantDown>
<maxRotVelocity>1000</maxRotVelocity>
<motorConstant>8.54858e-06</motorConstant>
<momentConstant>0.06</momentConstant>
<commandSubTopic>command/motor_speed</commandSubTopic>
<motorNumber>2</motorNumber>
<rotorDragCoefficient>0.000806428</rotorDragCoefficient>
<rollingMomentCoefficient>1e-06</rollingMomentCoefficient>
<rotorVelocitySlowdownSim>10</rotorVelocitySlowdownSim>
<motorType>velocity</motorType>
</plugin>
<plugin filename="gz-sim-multicopter-motor-model-system"
name="gz::sim::systems::MulticopterMotorModel">
<jointName>rotor_3_joint</jointName>
<linkName>rotor_3</linkName>
<turningDirection>cw</turningDirection>
<timeConstantUp>0.0125</timeConstantUp>
<timeConstantDown>0.025</timeConstantDown>
<maxRotVelocity>1000</maxRotVelocity>
<motorConstant>8.54858e-06</motorConstant>
<momentConstant>0.06</momentConstant>
<commandSubTopic>command/motor_speed</commandSubTopic>
<motorNumber>3</motorNumber>
<rotorDragCoefficient>0.000806428</rotorDragCoefficient>
<rollingMomentCoefficient>1e-06</rollingMomentCoefficient>
<rotorVelocitySlowdownSim>10</rotorVelocitySlowdownSim>
<motorType>velocity</motorType>
</plugin>
</model>
</sdf>