3D Gazebo SITL ROS Simulator
As the team has higher ambition, a 2D simulation does not provide us with enough overview as to how a drone works especially when it comes to the implementation of higher level functions such as obstacle avoidance and indoor flying. It is imperative for us to test the algorithm extensively in a 3D environment before testing the real code in the field.
The architecture of the simulation is as shown:
Hence, the Gazebo ROS is set up with the sole purpose of testing the programming code. Despite the steep learning curve, the simulation has brought values in the development process and has proven to be useful especially in testing out the algorithm for obstacle avoidance.
The Gazebo ROS/SITL is set up in a MacOS, with parallel desktop which has a Ubuntu LTS 14.04 running ROS Indigo in it. It is capable of simulating DroneKit-Python platforms, Ardupilot, PX4 Flight Stacks and even MAVROS. However, the team codes extensively in DroneKit-Python for the control of drones, while the peripherals are programmed with the use of ROS interface. Hence, it is convenient to have a 3D simulation capable of supporting multiple platforms.
With the use of ardupilot plugin, the Gazebo ROS is set up and has a basic visualization as such:
The simulation is governed by a Ground Control Station known as the MAVProxy. It is capable of manually sending autonomous commands from a ground station. It will be very powerful if the drone is connected to the ground station with several methods available in the market such as attaching an LTE module to the drone.
For example, to initiate a take-off command via MAVProxy, the drone must in the right functioning mode. By using mavproxy, first:
$ mode guided
$ arm throttle
$ takeoff x
where x represents the target altitude
The MAVProxy will then forward the MAVink messages in the Gazebo:
Other useful features: