diff --git a/rotors_gazebo/models/asphalt_plane/materials/scripts/asphalt.material b/rotors_gazebo/models/asphalt_plane/materials/scripts/asphalt.material
new file mode 100644
index 0000000..46af303
--- /dev/null
+++ b/rotors_gazebo/models/asphalt_plane/materials/scripts/asphalt.material
@@ -0,0 +1,20 @@
+material vrc/asphalt
+{
+ technique
+ {
+ pass
+ {
+ ambient 0.5 0.5 0.5 1.0
+ diffuse 0.5 0.5 0.5 1.0
+ specular 0.2 0.2 0.2 1.0 12.5
+
+ texture_unit
+ {
+ texture tarmac.png
+ filtering anistropic
+ max_anisotropy 16
+ scale 0.1 0.1
+ }
+ }
+ }
+}
diff --git a/rotors_gazebo/models/asphalt_plane/materials/textures/tarmac.png b/rotors_gazebo/models/asphalt_plane/materials/textures/tarmac.png
new file mode 100644
index 0000000..580d8a5
Binary files /dev/null and b/rotors_gazebo/models/asphalt_plane/materials/textures/tarmac.png differ
diff --git a/rotors_gazebo/models/asphalt_plane/model-1_4.sdf b/rotors_gazebo/models/asphalt_plane/model-1_4.sdf
new file mode 100644
index 0000000..63eb6ec
--- /dev/null
+++ b/rotors_gazebo/models/asphalt_plane/model-1_4.sdf
@@ -0,0 +1,30 @@
+
+
+
+ true
+
+
+
+
+ 20 20 .1
+
+
+
+
+ false
+
+
+ 20 20 .1
+
+
+
+
+
+
+
+
+
diff --git a/rotors_gazebo/models/asphalt_plane/model.config b/rotors_gazebo/models/asphalt_plane/model.config
new file mode 100644
index 0000000..cbc963a
--- /dev/null
+++ b/rotors_gazebo/models/asphalt_plane/model.config
@@ -0,0 +1,18 @@
+
+
+
+ Asphalt Plane
+ 1.0
+ model-1_4.sdf
+ model.sdf
+
+
+ Thomas Koletschka
+ thomas.koletschka@gmail.com
+
+
+
+ An asphalt textured plane.
+
+
+
diff --git a/rotors_gazebo/models/asphalt_plane/model.sdf b/rotors_gazebo/models/asphalt_plane/model.sdf
new file mode 100644
index 0000000..d563b9b
--- /dev/null
+++ b/rotors_gazebo/models/asphalt_plane/model.sdf
@@ -0,0 +1,30 @@
+
+
+
+ true
+
+
+
+
+ 20 20 .1
+
+
+
+
+ false
+
+
+ 20 20 .1
+
+
+
+
+
+
+
+
+
diff --git a/rotors_gazebo/models/ros_interface/model.config b/rotors_gazebo/models/ros_interface/model.config
new file mode 100644
index 0000000..d21b338
--- /dev/null
+++ b/rotors_gazebo/models/ros_interface/model.config
@@ -0,0 +1,18 @@
+
+
+
+ ROS Interface
+ 1.0
+
+ model.sdf
+
+
+ Geoffrey Hunter
+ gbmhunter@gmail.com
+
+
+
+ A model that purely exists to load the ROS interface plugin in Gazebo.
+
+
+
diff --git a/rotors_gazebo/models/ros_interface/model.sdf b/rotors_gazebo/models/ros_interface/model.sdf
new file mode 100644
index 0000000..76fbb17
--- /dev/null
+++ b/rotors_gazebo/models/ros_interface/model.sdf
@@ -0,0 +1,9 @@
+
+
+
+ true
+
+ firefly
+
+
+
\ No newline at end of file
diff --git a/rotors_gazebo/models/rotors_description/model.config b/rotors_gazebo/models/rotors_description/model.config
new file mode 100644
index 0000000..ca022be
--- /dev/null
+++ b/rotors_gazebo/models/rotors_description/model.config
@@ -0,0 +1,5 @@
+
+
+ rotors description
+ 1.0
+
diff --git a/rotors_gazebo/models/rotors_description/urdf/component_snippets.xacro b/rotors_gazebo/models/rotors_description/urdf/component_snippets.xacro
new file mode 100644
index 0000000..802eaa2
--- /dev/null
+++ b/rotors_gazebo/models/rotors_description/urdf/component_snippets.xacro
@@ -0,0 +1,554 @@
+
+
+
+
+
+
+
+
+ ${namespace}
+ ${bag_file}
+ base_link
+ base_link
+ command/attitude
+ command/attitude
+ ${rotor_velocity_slowdown_sim}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${frame_rate}
+
+ ${horizontal_fov}
+
+ ${image_width}
+ ${image_height}
+ ${image_format}
+
+
+ ${min_distance}
+ ${max_distance}
+
+
+ gaussian
+
+ ${noise_mean}
+ ${noise_stddev}
+
+
+
+ ${namespace}
+ true
+ ${frame_rate}
+ camera_${camera_suffix}
+ image_raw
+ camera_info
+ camera_${camera_suffix}_link
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+
+
+
+
+
+
+
+
+
+ ${namespace}
+ /command/attitude
+ /command/rate
+ /command/motor_speed
+ /${imu_sub_topic}
+ /gazebo/command/motor_speed
+
+
+
+
+
+
+
+
+ ${namespace}
+ ${imu_sub_topic}
+ $(arg mavlink_addr)
+ $(arg mavlink_udp_port)
+ /gazebo/command/motor_speed
+
+
+ 0
+ 0
+ 1000
+ 0
+ 100
+ velocity
+
+
+ 1
+ 0
+ 1000
+ 0
+ 100
+ velocity
+
+
+ 2
+ 0
+ 1000
+ 0
+ 100
+ velocity
+
+
+ 3
+ 0
+ 1000
+ 0
+ 100
+ velocity
+
+
+ 4
+ 1
+ 324.6
+ 0
+ 0
+ velocity
+
+ 0.1
+ 0
+ 0
+ 0.0
+ 0.0
+ 2
+ -2
+
+ zephyr_delta_wing::propeller_joint
+
+
+ 5
+ 0
+
+ 0.524
+ 0
+ 0
+ position
+ zephyr_delta_wing::flap_left_joint
+
+ 10.0
+ 0
+ 0
+ 0
+ 0
+ 20
+ -20
+
+
+
+ 6
+ 0
+
+ 0.524
+ 0
+ 0
+ position
+ zephyr_delta_wing::flap_right_joint
+
+ 10.0
+ 0
+ 0
+ 0
+ 0
+ 20
+ -20
+
+
+
+ 7
+ 0
+ 0.524
+ 0
+ 0
+ position
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${namespace}
+ ${namespace}/imu${imu_suffix}_link
+ ${imu_topic}
+ ${gyroscope_noise_density}
+ ${gyroscopoe_random_walk}
+ ${gyroscope_bias_correlation_time}
+ ${gyroscope_turn_on_bias_sigma}
+ ${accelerometer_noise_density}
+ ${accelerometer_random_walk}
+ ${accelerometer_bias_correlation_time}
+ ${accelerometer_turn_on_bias_sigma}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${namespace}/odometry_sensor${odometry_sensor_suffix}_link
+ ${namespace}
+ ${pose_topic}
+ ${pose_with_covariance_topic}
+ ${position_topic}
+ ${transform_topic}
+ ${odometry_topic}
+ ${parent_frame_id}
+ ${measurement_divisor}
+ ${measurement_delay}
+ ${unknown_delay}
+ ${noise_normal_position}
+ ${noise_normal_quaternion}
+ ${noise_normal_linear_velocity}
+ ${noise_normal_angular_velocity}
+ ${noise_uniform_position}
+ ${noise_uniform_quaternion}
+ ${noise_uniform_linear_velocity}
+ ${noise_uniform_angular_velocity}
+
+ package://rotors_gazebo/resource/${odometry_map}
+ ${image_scale}
+
+
+
+
+
+
+
+
+
+ base_link
+ base_link
+ ${namespace}
+ ${xyz_offset}
+ ${wind_direction}
+ ${wind_force_mean}
+ ${wind_gust_direction}
+ ${wind_gust_duration}
+ ${wind_gust_start}
+ ${wind_gust_force_mean}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ ${frame_rate}
+
+ 2
+
+ L8
+ 640
+ 480
+
+
+ 0.01
+ 100
+
+
+
+ ${namespace}
+ true
+ 0.11
+ ${frame_rate}
+ camera_${camera_suffix}
+ camera/image_raw
+ camera/camera_info
+ depth/disparity
+ depth/camera_info
+ depth/points
+ camera_${camera_suffix}_optical_center_link
+ 0.5
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rotors_gazebo/models/rotors_description/urdf/multirotor_base.xacro b/rotors_gazebo/models/rotors_description/urdf/multirotor_base.xacro
new file mode 100644
index 0000000..4ecb0e3
--- /dev/null
+++ b/rotors_gazebo/models/rotors_description/urdf/multirotor_base.xacro
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${robot_namespace}
+ base_link
+ ${rotor_velocity_slowdown_sim}
+
+
+
+ Gazebo/${color}
+
+
+
+
+ 0.001
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${robot_namespace}
+ rotor_${motor_number}_joint
+ rotor_${motor_number}
+ ${direction}
+ ${time_constant_up}
+ ${time_constant_down}
+ ${max_rot_velocity}
+ ${motor_constant}
+ ${moment_constant}
+ /gazebo/command/motor_speed
+ ${motor_number}
+ ${rotor_drag_coefficient}
+ ${rolling_moment_coefficient}
+ /motor_speed/${motor_number}
+ ${rotor_velocity_slowdown_sim}
+
+
+
+
+ Gazebo/${color}
+
+
+
diff --git a/rotors_gazebo/worlds/empty.world b/rotors_gazebo/worlds/empty.world
new file mode 100644
index 0000000..e362b5b
--- /dev/null
+++ b/rotors_gazebo/worlds/empty.world
@@ -0,0 +1,42 @@
+
+
+
+
+
+ model://sun
+
+
+
+ model://ground_plane
+
+
+ model://asphalt_plane
+
+
+
+
+
+
+ 0 0 -9.8066
+
+
+ quick
+ 10
+ 1.3
+ 0
+
+
+ 0
+ 0.2
+ 100
+ 0.001
+
+
+ 0.002
+ 1
+ 500
+ 6e-06 2.3e-05 -4.2e-05
+
+
+