Software integration for the SkyScanner project
- Get ROS "Indigo" for your system following the instructions for Desktop-Full Install. (Newer versions should work but they haven't been tested) Don't forget to initialize rosdep and do the environment setup.
- Install the following python dependencies (not exhaustive list):
- numpy
- scipy
- matplotlib
- netCDF4 (MesoNH integration)
- Set up a SkyScanner ROS workspace:
mkdir -p skyscanner_ws/src cd skyscanner_ws/src git clone https://github.com/rafael1193/skyscanner-integration.git cd .. echo "source $(pwd)/devel/setup.bash" >> ~/.bashrc source ~/.bashrc - Build the ROS package:
catkin_make - Reload your bashrc and recompile again so ROS tools can detect the package properly:
source ~/.bashrc catkin_make
Depending on the simulation backends you want to run you may have to install and configure some other dependencies:
- Paparazzi
- Get Paparazzi UAV following the instructions on their website.
- Set the environment variable
PAPARAZZI_SRCwith the folder where Paparazzi is located.
- FlightGear
- Install FlightGear from your package manager (version >3.0.0 should work)
- Follow the instructions in scripts/README.md.
Beforehand, run roscore in a dedicated terminal window and leave it running.
Launch files define the nodes and parameters that have to be run to perform different tasks.
- Paparazzi
- Select your aircraft, nps target and build
- Launch a Simulation session adding
-f127.0.0.1 -P50501to the Simulator command line.-Pshould correspond with the port defined inlaunch/conf/pprz_ac*.yamlfiles and must be unique if several simulators are launched. - Run
roslaunch skyscanner pprz_planned.launch - To command several paparazzi aircrafts go to the
pprz_planned.launchfile
- FlightGear
- Start FlightGear with the
fly_malolo1.shscript. You can change the default UDP, Telnet and HTTP ports inside. - Run
roslaunch skyscanner fg_planned.launchif you want to launch the whole architecture. - Run
roslaunch skyscanner fg_guided.launchto start everything but the pathplanner so you can send tasks manually to the guidance node (by default it uses the VF alogrithm as guidance, but PLOS can be se too). In the following examplerostopicis used to send to ac_1 a TrajectorySequence composed of a circle of 200m radius and origin at (0, 0):
rostopic pub /ac_1/trajectory_sequence skyscanner/TrajectorySequence "header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: '' ac_id: 0 trajectories: - circle: true origin: {x: 0.0, y: 0.0, z: 0.0} destination: {x: 0.0, y: 0.0, z: 0.0} radius: 200.0 duration: 100.0 time_limit: 10000000000.0" -1 - Start FlightGear with the
- Additionally
roslaunch skyscanner supervision.launchwill show online stats using rqt_plot and rqt_plotxy (make sure you have them). - MesoNH
- By default realistic MesoNH wind is deactivated as you have to declare the path where the NetCDF files are stored in the parameter
mesonh_files_pathlocated inlaunch/conf/mesonh.yaml. - If wind data is available you can activate it switching
use_dummy_envtoFalseinlaunch/conf/mesonh.yaml.
- By default realistic MesoNH wind is deactivated as you have to declare the path where the NetCDF files are stored in the parameter
Other configuration parameters can be tuned in .yaml files or directly in the roslaunch files you are running.