When using ROS and Gazebo in robotics simulation what the roboticist want to avoid is the reinvention of the wheel. Therefore having these tools installed and working, the users could utilise packages that implement UAVs equipped with all the required features. Depending on the application, there are UAV implementations available which have many common characteristics but also differences that help us when decision making. For the needs of my project, I explored the following three packages:
This package contains the implementation of a Gazebo simulation for the Ardrone 2.0 (fig.1). It is a nice simple quad-rotor simulator developed at the Technical University of Munich. The simulator supports both Ardrone 1.0 and 2.0 versions but it is optimised for the latter. It has a built-in support for joystick manipulation, which means that the users can use it to fly the real drone as well as the simulator. The Tum-simulator is equipped with 2 cameras, one front and one bottom and a height sonar sensor.
Firstly,it is executable in ROS Fuerte released in 2012, four versions older compared to the current. After this version, ROS changed completely the low-level built system macros and infrastructure (catkin). Secondly, the provided sensors are not suitable for my project. This simulator is more focused on computer vision applications where the users capture video from the cameras and process data, using for example OpenCV, to make navigation decisions. There is always the choice of adding or developing custom sensors but it is safer to find a simulator that already integrates them.
This simulator developed by PX4 Autopilot Project for the software in the loop simulation. The ROS SITL setup allows the users to run certain PX4 Firmware modules, which use the multiplatform wrappers within ROS. These applications publish data in the related ROS topics. The PX4 simulator is compatible with ROS Indigo, which is a very recent ROS version. Likewise the previous, it allows joystick manipulation. It is noteworthy that includes two UAV simulators, one based on Ardrone and the other on Iris (fig.2).
The additional characteristic that this simulator includes, compared to the others, is the MAVROS (Micro Air Vehicle ROS) package. This package provides a communication driver for various autopilots with MAVLink communication protocol. In addition, it provides UDP MAVLink bridge for the ground control station. Using this protocol ROS can send specific commands to the UAV, which is essentially what this simulator is specialised for. To illustrate this, using ROS in a companion computer, navigation commands can be sent directly to the flight controller produced by a robotics algorithm via MAVROS. This is called off-board control. This simulation is intended for those cases where the users want to test the MAVROS commands before applying them to the real UAV.
Since it is actually a port of the PX4 flight stack in ROS, it is a high fidelity simulation coming with plenty of capabilities like real UAV. For example, in order to begin it is required to arm. Some of the available features provided are:
- Inertial measurement unit (IMU) which provides linear acceleration, angular velocity, atmospheric pressure and altitude
- Compass which provides heading
- GPS which provides longitude, latitude and altitude
- PX4flow optical flow sensor which is integrated to provide ground distance and ground speed
- Manual set of the motor speed for each individual motor
Firstly, it has some problems when I used it in combination with the RViz, the ROS visualization tool. This is the all-seeing ROS visualisation utility. This tool becomes very important when there is a need for customisation of the sensors since it visualises the laser scans and the ultrasonic lobes. Secondly, it did not include laser or ultrasonic sensors and my preference was to have them integrated to avoid misconfigurations because of my short experience. Thirdly, that fact that it is equipped with MAVROS and includes highly detailed UAV configuration, it introduces an unwanted complexity for performing behavioural analysis of navigation algorithms. As I already explained, from my perspective the PX4 SITL is focused on different tasks compared to my requirements.
The Hector quad-rotor simulator is a framework that implements the simulation of quad-rotor UAVs employing ROS and the Gazebo simulator (fig.3). It has been developed by the Research Training Group in Darmstadt Technical University (relevant paper). The dynamics model of the quad-rotor has been parameterized using wind tunnel tests and validated by a comparison of simulated and real flight data. It is available for all the latest ROS versions from 2012 and on (Fuerte, Groovy, Hydro and Indigo).
Hector quad-rotor comes with a wide range of available sensors. It is equipped with an Inertial Measurement Unit (IMU) measures the angular velocities and accelerations of the vehicle’s body in the inertial frame. It provides ultrasonic sensor to measure the distance from the ground in a specific range. In addition, it has a Magnetic Field sensor to measure the heading of the UAV. A GPS receiver is also installed to provide pseudo range measurements. Aside from the standard devices, it also offers additional and more sophisticated ones. More precisely, it provides the Hokuyo UTM-30LX as laser scanner, a depth camera like Kinect and a normal camera. Furthermore, like all the other simulators, it is possible to manipulate it using joystick (like x-box controller) as well as keyboard.
The Hector quad-rotor is delivered as a ROS stack, which means that is a collection of packages and not only a single one. So, aside from the packages that are responsible for the modelling, the control and the Gazebo simulation of the UAV, it also includes a visual SLAM (Simultaneous Localisation and Mapping) package to demonstrate the great potentials to build robotics applications.
Hector quad-rotor combines all the types of the sensors, which I wanted to employ in my simulation in a well-structured package, as complex as it is required for a comprehensive realistic simulation. Everything is located in the place where I expected to find it. This enabled me to customise the configuration and move it closer to my real setup. It is also well documented with many related questions in the ROS support forums. My working system is configured in ROS Hydro version with all the related tools working flawlessly like RViz. The same implies in the ROS Indigo as well. All in all, from my experience with working with it, it is a reliable and stable tool that helps to focus on the details of the developing robotics applications leaving away all the other distracting points.