9. Fenswood Scenario Repository Layout

This document briefly explains the files and folders within this repository.

9.1 Overview

At a high level, this repository generates the starling-sim-iris-ap-fenswood simulation docker container which will start up a gazebo simulation of Fenswood Farm with an Iris quadcopter with an attached payload and a dynamically generated volcano caldera.

It contains the following:

  • Contains the world file which describes the fenswood farm environment (fenswood.world)
  • Contains the script (spawn_targets.py) which dynamically generates the volcano caldera at runtime.
  • Contains the gazebo ros2 plugin which allows for the attachment and detachment of a payload
  • Contains the Dockerfile which compiles all of these into the starling-sim-iris-ap docker container
  • Contains a docker-compose file which will automatically build the simulator without needing to build the container yourself manually
  • Contains the documentation for https://starlinguas.github.io/FenswoodScenario
  • Contains the .github to enable automated builds on github actions.
  • Contains the example controller in example_controller_python_ap.

9.2 World file

In the fenswood/worlds directory, there exist the .world sdf files which specify the layout and objects in the world. This specifyies all of the objects, as well as the GPS coordinates of the origin of the world.

To enable attach/detach, there is a second world which includes the attach_vehicles plugin fenswood_with_payload.world. This is enabled by default.

The models used are all in the fenswood/models folder.

The models which are not included may be in the upstream simulation containers such as starling-sim-iris-ap (e.g. the iris model (iris_demo))

The fenswood/setup.bash file copies all of the models in.

9.3 Launching and target spawning

The fenswood/iris.launch.xml configuration determins what is being launched.

This calls the target spawning script is in fenswood/spawn_targets.py with an example target configuration in fenswood/target.

9.4 Attaching/detaching payload

The simulation/attach_vehicles_plugin contains the Rosnode source for the global gazebo plugin which manages the attaching and detaching of sensor payloads.

The payload itself is defined in fenswood/models/sensor_payload/model.sdf and edts should be made there to change it.

The fenswood/iris.launch.xml launch file launches both the drone and the payload and attempts to automatically join them on statup.

9.5 Building

There exists a Makefile which should provide automated commands for building and testing the Dockerfile simulator for this repository.

9.6 Example controller

The example controller is in the example_controller_python_ap folder. This is a Python rosnode put into a local Docker container. The docker-compose.example_drone_controller.yaml docker-compose file is used to build and run this controller against the simulator run by docker-compose.yml