Drone: 3D Cartography (Airsim, ROS, LSD-SLAM) - Student project Part 1/6

Hello PX4 community, we are a group of students and this is our first post.

This post resumes what we realized and it also contains tutorials to follow what we have done (AirSim, ROS…). This project can easily be improved so don’t hesitate to do so if you are interested. It will also be posted on Medium. Thank you : )

Project overview

This project has seen the light as the continuation of a project some of us participated in last year, and we saw fit to pursue the goal while bringing up interesting developments.

The main issue that emergency and rescue teams face nowadays is not to be able to know the environment in which they will have to intervene beforehands. When they arrive on scene, they have to adapt, and potentially lose time while doing so, when it could have been avoided. In order to bring a solution to this project, we have proposed an implementation of tools, such as 3D mapping and obstacle avoidance so that a drone can fly over a crash site for example, generate a map, and send it as valuable data to the rescue teams. That way, they will be able to prepare better for the environment they have to face, and optimize their intervention.

To provide the community with the best possible opensource solution with our precise list of material, we have decided to use the PixHawk Flight Controller, with a DIY Drone. Before experiencing it in real life, we used the Airsim simulator using PX4 software in HITL, in order to develop our solution as closely as possible to real on-chip conditions. To give the drone its flight mission, we used the QGroundControl software, which is a Ground Control Station, allowing us to program flights as well as many other parameters of the drone that will be stored on the flight controller. Lastly, we have tried to use the PX4 obstacle avoidance module without being able to implement it perfectly. In order to make it work for our final presentation, we used a C++ code, that takes advantage of a MavLink library named DroneShell in order to communicate its orders to the drone.

Concerning the 3D mapping part of our project we used LSD-SLAM on ROS, LSD-SLAM is a monocular SLAM technique using all the information of an image to create and obtain an accurate 3D map using a camera.

Global representation of project objectives

Tutorials for ROS, LSD SLAM and Airsim

Installation of ROS (Dual Boot)

There are several versions of ROS for Ubuntu but the one that you need is ROS-indigo.

To install it you have to click on the following link:


Follow all the instructions and you will be able to use ROS packages

To install a package you can use this command :

“sudo apt install ros--”

After downloading the indigo ROS, we will install the cv_camera package.this package allows us to read the stream from our camera. You can find more information about this package if you read this web site http://wiki.ros.org/cv_camera .

To run this node you can use the following orders:

  • rosrun cv_camera cv_camera_node

If this does not work then you will have to change the settings manually. To know all the parameters of my webcam we used the following commands

For example you can change the device_id of your camera with the following order :

  • rosparam set cv_camera/device_id 0

You can modify all the following parameters:

We created my own .launch file containing all the parameters of my camera.

To launch this file we use the command :

  • roslaunch cvcam.launch