In this section, we will discuss the different sensors and how these are mounted on the MAVs. Any sensor can be attached to the vehicle in the corresponding Xacro file. In our example, the mav_hoverin_example.launch file loads the robot description from the firefly_generic_odometry_sensor.gazebo file, which adds an odometry sensor to the Firefly, by calling the following:
<xacro:odometry_plugin_macro (here go the macro properties )> <inertia (with i t s properties ) /> <origin (with i t s properties ) /> </ xacro:odometry_plugin_macro>
The macro properties are explained in the component_snippets.xacro file. Properties present in all of RotorS sensor macros are:
- namespace: ROS namespace assigned to given sensor
- parent_link: The sensor gets attached to this link
- some_topic: The name of the topic on which the sensor publishes messages
An overview of the sensors currently used in RotorS, for which Xacros are provided in Table 1:
Sensor |
Description |
Xacro-name Gazebo plugins |
Camera |
A standard ROS camera |
camera_macro libgazebo_ros_camera.so |
IMU |
An IMU implementation, with zero mean white Gaussian noise |
imu_plugin_macro librotors_gazebo_imu_plugin.so |
Odometry |
Simulated odometry sensors |
odometry_plugin_macro librotors_gazebo_odometry_plugin.so |
VI-Sensor |
This is a stereo camera with an IMU, featuring embedded synchronization and time-stamping developed at Autonomous Systems Lab (ASL) |
vi_sensor_macro libgazebo_ros_camera.so librotors_gazebo_odometry_plugin.so librotors_gazebo_imu_plugin.so libgazebo_ros_openni_kinetic.so |
The Firefly hexacopter has a VI-sensor mounted on it, pointing to the front and slightly downwards, as shown in the following photograph. For more information about the VI-sensor visit http://www.skybotix.com/: