1: The proposal

As we all know, the easiest method for installing some software in Ubuntu is through apt-get. This is utilised to a great extent by the packages available through the ROS build farm. These packages, with the standard of ros-<distro>-<packagename> are easy to install and use. These are also managed through a continuous integration service called Jenkins.

What I propose (atleast for the drone exercises) is that the GUI is made as one package in rqt, the required assets (models and worlds) are available in the JdeRobot-assets repository, drone_wrapper is distributed as a seperate ROS package and lastly, only the my_solution.py file is available in the JdeRobot-RoboticsAcademy.

An example:

  1. rqt_drone_teleop Package containing the GUI for all drone exercises. This is to be distributed as a ros package from the build farm as jderobot-rqt-drone-teleop

  2. drone_wrapper Package containing the helper class that abstracts MAVROS and PX4 for simplicity in usage. This is to be distributed as a ros package from the build farm as jderobot-drone-wrapper

  3. JdeRobot/assets
    • gazebo
      • models
        • iris_dual_cam/
        • rotors_descriptions/
      • worlds
        • follow_road.world The particular files and folders specified here are all that matter for the follow road exercise. Similar to it, all exercises shall have their own world file and launch file and will use the same iris_dual_cam model. This directory shall also be distributed as a ros package.
  4. JdeRobot/RoboticsAcademy
    • exercises
      • follow_road
        • my_solution.py
        • README.MD
        • follow_road.launch The my_solution.py shall contain the students code that is envisioned to be run. The readme provides instructions for the exercise which is launched by the launch file.

Proposed Usage

Assuming ROS and Gazebo is installed and source is added,

  1. sudo apt-get install ros-kinetic-jderobot-drones (This automatically installs the assets)
  2. git clone git@github.com:JdeRobot/RoboticsAcademy.git

Now that everything is installed, from the follow_road directory,

  1. roslaunch follow_road.launch

And thats it. This shall fire up Gazebo, MAVROS, PX4, rqt GUI and the code.

The same can also be extended to the other exercises not involving drones i.e. A package for the GUI, a package for the interfacing, the appropriately named assets and the my_solution.py in the RoboticsAcademy.

Note: So as it turns out, it is not possible to integrate the rqt_image_view into the a python plugin without significant efforts of rewriting stuff. Thank the developers for Pixmap!!

2: The Prototype

We have a prototype!! Thats exactly what it is. A prototype.


This is the base package for all drone exercises and contains:

  1. The DroneWrapper class (to be imported into my_solution.py)
  2. The launch file for MAVROS, PX4 SITL and Gazebo (iris is expected to be present in the world file)
  3. A simple bash script to run the my_solution.py file wherever it is (when its complete path is given as a parameter to the launch file)


This package is the logic for the GUI of the exercise and also contains the launch file.

Note: *The launch file is to be moved to the assets directory as soon as I figure out how to roslaunch it safely from there.

Note: I am trying to implement the 2D slider as is but incase that does not work out, I shall use two sliders instead (as is suggested in rqt_robot_steering)*



This file is expected to be distributed in the Robotics Academy. This instantiates a Drone and provides the student a simple method to call the requisite functions.

A demo of the above

Demo Video