scenery_builder

Model-to-model transformation of floorplan models to execution artefacts (including ROS simulation)

https://github.com/secorolab/scenery_builder

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

gazebo-ros ros
Last synced: 6 months ago · JSON representation ·

Repository

Model-to-model transformation of floorplan models to execution artefacts (including ROS simulation)

Basic Info
Statistics
  • Stars: 1
  • Watchers: 4
  • Forks: 0
  • Open Issues: 5
  • Releases: 1
Topics
gazebo-ros ros
Created over 1 year ago · Last pushed 7 months ago
Metadata Files
Readme Citation

docs/README.md

scenery_builder

The scenery_builder is a tool that generates execution artefacts from the composable representation of the FloorPlan DSL models.

scenery builder pipeline

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

3D asset generated from the environment description

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

  1. 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).

drawing
drawing
drawing

Owner

  • Name: SECORO Group
  • Login: secorolab
  • Kind: organization
  • Location: Germany

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

pyproject.toml pypi
  • Jinja2 >=3.0.3
  • PyLD ==2.0.3
  • matplotlib >=3.7.2
  • numpy >=1.24.4,<2.0.0
  • rdflib ==6.2.0
.github/workflows/black.yaml actions
  • actions/checkout v3 composite
  • psf/black stable composite