scenery_builder
Model-to-model transformation of floorplan models to execution artefacts (including ROS simulation)
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: frontiersin.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.9%) to scientific vocabulary
Keywords
Repository
Model-to-model transformation of floorplan models to execution artefacts (including ROS simulation)
Basic Info
- Host: GitHub
- Owner: secorolab
- Language: Python
- Default Branch: devel
- Homepage: https://secorolab.github.io/scenery_builder/
- Size: 2.81 MB
Statistics
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 5
- Releases: 1
Topics
Metadata Files
docs/README.md
scenery_builder
The scenery_builder is a tool that generates execution artefacts from the composable representation of the FloorPlan DSL models.

Installation
Install all the requirements:
shell
sudo apt-get install blender python3-pip python3-venv -y
First, create a virtual environment and activate it:
shell
python -m venv .venv
source .venv/bin/activate
For Blender to regonize the virtual environment, add it to your PYTHONPATH:
shell
export PYTHONPATH=<Path to .venv directory>/lib/python3.11/site-packages
From the root directory of the repo, install the python packages by running:
shell
pip install -e .
Usage
This module adds floorplan as a command line interface. You can use the generate command as shown below:
shell
floorplan generate -i <path to input folder>
Where the input folder(s) must contain:
- the composable models generated from the FloorPlan DSL
- coordinate.json
- floorplan.json
- polyhedron.json
- shape.json
- skeleton.json
- spatial_relations.json
- the door object models (optional)
- object-door.json
- object-door-states.json
- any object instance models (optional), e.g. object-door-instance-X.json where X is a unique numeric ID.
For more information on the parameters that can be used to customize the generation simply call
bash
floorplan generate --help
The command above currently generates the following artefacts:
- 3D mesh in .stl format
- Gazebo models and worlds (.sdf, .config)
- Launch files for ROS1 and/or ROS2 (.launch)
- Occupancy grid map for the ROS map_server (.pgm and .yaml)
- Tasks with a list of waypoints in .yaml
- A 3D polyline representation for the SOPRANO project (.poly)
Docker
To use the scenery_builder via Docker, simply mount the input and output paths as volumes and run the container. This will run the floorplan generate command with the default values defined in the entrypoint.
bash
docker run -v <local input path>:/usr/src/app/models -v <local output path>:/usr/src/app/output scenery_builder:latest
If you want to change the path of the volumes inside the Docker container (i.e., /usr/src/app/models or /usr/src/app/output) or want to customize the arguments, use the following:
bash
docker run -v <local input path>:/usr/src/app/models -v <local output path>:/usr/src/app/output scenery_builder:latest -i /usr/src/app/models -o /usr/src/app/output <optional arguments>
Example

An example model for a building is available here. After transforming the floorplan model into its composable representation, generate the artefacts by passing the folder with the JSON-LD models as inputs:
sh
floorplan generate -i hospital/json-ld -o gen/hospital mesh gazebo occ-grid door-keyframes polyline tasks
That should generate the following files:
gen/hospital
├── 3d-mesh
│ └── hospital.stl
├── doors
│ └── behaviours
│ └── keyframes
│ ├── door-instance-1.json
│ ├── ...
│ └── door-instance-n.json
├── gazebo
│ ├── models
│ │ ├── hospital
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ └── door
│ │ ├── model.config
│ │ └── model.sdf
│ └── worlds
│ └── hospital.sdf
├── maps
│ ├── hospital.jpg
│ ├── hospital.pgm
│ └── hospital.yaml
├── polyline
│ └── hospital.poly
├── ros
│ └── launch
│ └── hospital.ros2.launch
└── tasks
└── disinfection
├── hallway_route.yaml
├── ...
└── room_B_route.yaml
Task generator
It uses the FloorPlan corners to generate a task specification to visit all corners in a space.
The option --dist-to-corner is a float value representing the distance between the corner of a space and its center.
Object placing
This tool places objects (e.g. doors) in indoor environments. By using the composable modelling approach, a scenery can compose the static FloorPlan models with objects such as doors.

Models that can be composed into a scenery
- Model objects with movement constraits: composition of objects with revolute, prismatic, or fixed joints into a scenery.
- Model object states: composition of objects with motion constraints defined as finite state machines, and their intial state in the scene.
Gazebo world generation
The tool generates SDF format world files for Gazebo. The initial state plugin sets up the scene as determined by the initial state for each object included in the world file.
Tutorials
Tutorials on how to model objects with movement constraints, and how to place them in floor plan models is available here.
Publications
- A. Ortega Sainz, S. Parra, S. Schneider, and N. Hochgeschwender, ‘Composable and executable scenarios for simulation-based testing of mobile robots’, Frontiers in Robotics and AI, vol. 11, 2024, doi: 10.3389/frobt.2024.1363281.
bib
bib
@ARTICLE{ortega2024frontiers,
AUTHOR={Ortega, Argentina and Parra, Samuel and Schneider, Sven and Hochgeschwender, Nico },
TITLE={Composable and executable scenarios for simulation-based testing of mobile robots},
JOURNAL={Frontiers in Robotics and AI},
VOLUME={Volume 11 - 2024},
YEAR={2024},
URL={https://www.frontiersin.org/journals/robotics-and-ai/articles/10.3389/frobt.2024.1363281},
DOI={10.3389/frobt.2024.1363281},
ISSN={2296-9144},
}
</details>
Acknowledgments
This work has been partly supported by the European Union's Horizon 2020 projects SESAME (Grant No. 101017258) and SOPRANO (Grant No. 101120990).
Owner
- Name: SECORO Group
- Login: secorolab
- Kind: organization
- Location: Germany
- Repositories: 1
- Profile: https://github.com/secorolab
The Software Engineering for Cognitive Robots and Systems Group at the University of Bremen
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Ortega
given-names: Argentina
orcid: "https://orcid.org/0000-0002-3873-4435"
- family-names: Parra
given-names: Samuel
title: "Scenery builder: A composition tool to generate execution artefacts for composable representations of FloorPlan models"
version: 0.1.0
date-released: 2024-06-01
url: "https://github.com/secorolab/scenery_builder"
preferred-citation:
type: article
authors:
- family-names: Ortega
given-names: Argentina
orcid: "https://orcid.org/0000-0002-3873-4435"
- family-names: Parra
given-names: Samuel
- family-names: Schneider
given-names: Sven
orcid: "https://orcid.org/0000-0002-1916-5222"
- family-names: "Hochgeschwender"
given-names: Nico
orcid: "https://orcid.org/0000-0003-1306-7880"
doi: "10.3389/frobt.2024.1363281"
journal: "Frontiers in Robotics and AI"
month: 8
title: "Composable and executable scenarios for simulation-based testing of mobile robots"
volume: 11
year: 2024
GitHub Events
Total
- Create event: 14
- Issues event: 4
- Watch event: 1
- Delete event: 9
- Member event: 1
- Issue comment event: 8
- Push event: 51
- Pull request review event: 20
- Pull request review comment event: 16
- Pull request event: 22
Last Year
- Create event: 14
- Issues event: 4
- Watch event: 1
- Delete event: 9
- Member event: 1
- Issue comment event: 8
- Push event: 51
- Pull request review event: 20
- Pull request review comment event: 16
- Pull request event: 22
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 3
- Total pull requests: 13
- Average time to close issues: 12 days
- Average time to close pull requests: 15 days
- Total issue authors: 2
- Total pull request authors: 3
- Average comments per issue: 0.0
- Average comments per pull request: 0.46
- Merged pull requests: 11
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 3
- Pull requests: 13
- Average time to close issues: 12 days
- Average time to close pull requests: 15 days
- Issue authors: 2
- Pull request authors: 3
- Average comments per issue: 0.0
- Average comments per pull request: 0.46
- Merged pull requests: 11
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- argenos (3)
- Samuel-Wiest (2)
Pull Request Authors
- argenos (17)
- LucaKro (2)
- leonschwa (1)
- KishanSawant (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- Jinja2 >=3.0.3
- PyLD ==2.0.3
- matplotlib >=3.7.2
- numpy >=1.24.4,<2.0.0
- rdflib ==6.2.0
- actions/checkout v3 composite
- psf/black stable composite