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:
-
rqt_drone_teleop
Package containing the GUI for all drone exercises. This is to be distributed as a ros package from the build farm asjderobot-rqt-drone-teleop
-
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 asjderobot-drone-wrapper
- 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.
- 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
- models
- gazebo
- 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.
- follow_road
- exercises
Proposed Usage
Assuming ROS and Gazebo is installed and source is added,
sudo apt-get install ros-kinetic-jderobot-drones
(This automatically installs the assets)git clone git@github.com:JdeRobot/RoboticsAcademy.git
Now that everything is installed, from the follow_road directory,
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.
drone_wrapper
This is the base package for all drone exercises and contains:
- The DroneWrapper class (to be imported into my_solution.py)
- The launch file for MAVROS, PX4 SITL and Gazebo (iris is expected to be present in the world file)
- 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)
rqt_follow_road
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)*
my_solution.py
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.