All Projects → tum-gis → rtron

tum-gis / rtron

Licence: Apache-2.0 license
r:trån is a road space model transformer library for OpenDRIVE, CityGML and beyond

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to rtron

OpenMaterial
3D model exchange format with physical material properties for virtual development, test and validation of automated driving.
Stars: ✭ 23 (-11.54%)
Mutual labels:  autonomous-driving, automated-driving
ad-xolib
C++ library for Parsing OpenScenario (1.1.1) & OpenDrive files (1.7) ASAM Specifications
Stars: ✭ 56 (+115.38%)
Mutual labels:  autonomous-driving, opendrive
SelfDrivingRCCar
Autonomous RC Car using Neural Networks, Python and Open CV
Stars: ✭ 102 (+292.31%)
Mutual labels:  autonomous-driving
AutonomousDriving
Java Autonomous Driving Appplication. Real time video car,pedistrians detection
Stars: ✭ 51 (+96.15%)
Mutual labels:  autonomous-driving
awesome-citygml
The ultimate list of open data semantic city models
Stars: ✭ 57 (+119.23%)
Mutual labels:  citygml
3dcitydb-docker-postgis
3D City Database PostGIS Docker image
Stars: ✭ 37 (+42.31%)
Mutual labels:  citygml
carla-data-export
A simple tool for generating training data from the Carla driving simulator
Stars: ✭ 47 (+80.77%)
Mutual labels:  autonomous-driving
self-driving-ish computer vision system
This project generates images you've probably seen in autonomous driving demo. Object Detection, Lane Detection, Road Segmentation, Depth Estimation using TensorRT
Stars: ✭ 254 (+876.92%)
Mutual labels:  autonomous-driving
lane-detection
Lane detection MATLAB code for Kalman Filter book chapter: Lane Detection
Stars: ✭ 21 (-19.23%)
Mutual labels:  autonomous-driving
YOLOP
You Only Look Once for Panopitic Driving Perception.(https://arxiv.org/abs/2108.11250)
Stars: ✭ 1,228 (+4623.08%)
Mutual labels:  autonomous-driving
racing dreamer
Latent Imagination Facilitates Zero-Shot Transfer in Autonomous Racing
Stars: ✭ 31 (+19.23%)
Mutual labels:  autonomous-driving
MotionNet
CVPR 2020, "MotionNet: Joint Perception and Motion Prediction for Autonomous Driving Based on Bird's Eye View Maps"
Stars: ✭ 141 (+442.31%)
Mutual labels:  autonomous-driving
Carla-ppo
This repository hosts a customized PPO based agent for Carla. The goal of this project is to make it easier to interact with and experiment in Carla with reinforcement learning based agents -- this, by wrapping Carla in a gym like environment that can handle custom reward functions, custom debug output, etc.
Stars: ✭ 122 (+369.23%)
Mutual labels:  autonomous-driving
Autonomous-RC-Car
Self-driving RC Car ROS Software
Stars: ✭ 17 (-34.62%)
Mutual labels:  autonomous-driving
FLAT
[ICCV2021 Oral] Fooling LiDAR by Attacking GPS Trajectory
Stars: ✭ 52 (+100%)
Mutual labels:  autonomous-driving
Hybrid-A-Star-U-Turn-Solution
Autonomous driving trajectory planning solution for U-Turn scenario
Stars: ✭ 75 (+188.46%)
Mutual labels:  autonomous-driving
highway-path-planning
My path-planning pipeline to navigate a car safely around a virtual highway with other traffic.
Stars: ✭ 39 (+50%)
Mutual labels:  autonomous-driving
EviLOG
TensorFlow training pipeline and dataset for prediction of evidential occupancy grid maps from lidar point clouds.
Stars: ✭ 30 (+15.38%)
Mutual labels:  automated-driving
efficient online learning
Efficient Online Transfer Learning for 3D Object Detection in Autonomous Driving
Stars: ✭ 20 (-23.08%)
Mutual labels:  autonomous-driving
awesome-3d-multi-object-tracking-autonomous-driving
A summary and list of open source 3D multi object tracking and datasets at this stage.
Stars: ✭ 16 (-38.46%)
Mutual labels:  autonomous-driving

rtron logo

a road space model transformer library for OpenDRIVE, CityGML and beyond
View Demos · Report Bug · Request Feature

rtron preview

r:trån reads road network models in OpenDRIVE and transforms them to the virtual 3D city model standard CityGML.

This enables you to

📥 Datasets

Download some sample OpenDRIVE datasets of the city of Ingolstadt from the company 3D Mapping Solutions (initial registration required). Additionally, awesome-openx provides a list of further OpenDRIVE datasets.

🚀 Usage

There are three main variants of usage:

  • edit the behaviour and execute the run scripts
  • deploy the resulting run scripts (via kscript directly or docker)
  • use r:trån as a library for your own project

⚙️ Edit and execute the run scripts

Clone the repository:

git clone https://github.com/tum-gis/rtron.git

Actually, you can customize the run scripts of r:trån with all editors, but an IDE provides convenient suggestions and autocompletion. Thus, install the community edition of IntelliJ and open the cloned r:trån project. Navigate to the script rtron-main/src/main/resources/scripts/convert-opendrive-to-citygml2-simple.kts and execute it by hitting MenuRunRun… (or Alt+Shift+F10):

import io.rtron.main.project.processAllFiles
import io.rtron.readerwriter.citygml.CitygmlVersion

/**
 * This function iterates over all files contained in the input directory that have the
 * extension "xodr".
 */
processAllFiles(
    inInputDirectory = "/path/to/input-datasets", // TODO: adjust path
    withExtension = "xodr",
    toOutputDirectory = "/path/to/output-datasets" // TODO: adjust path
)
{
    // Within this block the transformations can be defined by the user. For example:

    // 1. Read the OpenDRIVE dataset into memory:
    val opendriveModel = readOpendriveModel(inputFilePath)

    // 2. Transform the OpenDRIVE model to an intermediary representation (the RoadSpaces model):
    val roadspacesModel = transformOpendrive2Roadspaces(opendriveModel) {
        // Within this blocks, the transformation is parametrized:

        // EPSG code of the coordinate reference system (needed by GIS applications)
        crsEpsg = 32632
    }

    // 3. Transform the RoadSpaces model to a CityGML model:
    val citygmlModel = transformRoadspaces2Citygml(roadspacesModel) {
        // true, if nested attribute lists shall be flattened out
        flattenGenericAttributeSets = true

        // distance between each discretization step for curves and surfaces
        discretizationStepSize = 0.5
    }

    // 4. Write the CityGML model to the output directory:
    writeCitygmlModel(citygmlModel) {

        // set the CityGML versions for writing
        versions = setOf(CitygmlVersion.V2_0)
    }
}

After the execution is completed, the directory /path/to/output-datasets should contain the converted CityGML2 datasets. For more details, visit the website.

📦 Deploy the run scripts via kscript

In order to run the r:trån scripts in deployment environments, kscript needs to be installed. kscript provides enhanced scripting support for Kotlin and is capable of executing the *.kts scripts contained in this directory.

sdkman is a tool for managing software development kits and conveniently installs kotlin and kscript:

curl -s "https://get.sdkman.io" | bash     # install sdkman
source "$HOME/.sdkman/bin/sdkman-init.sh"  # add sdkman to PATH

sdk install java 11.0.12-zulu # install java
sdk install kotlin # install Kotlin
sdk install kscript # install kscript

If you are on Windows, the deployment via docker is recommended.

Once the environment is ready, the r:trån scripts can be executed:

# download the script ...
curl https://raw.githubusercontent.com/tum-gis/rtron/main/rtron-main/src/main/resources/scripts/convert-opendrive-to-citygml2-simple.kts \ 
    --output convert-opendrive-to-citygml2-simple.kts

# and simply execute it (dependencies are resolved automatically)
kscript ./convert-opendrive-to-citygml2-simple.kts

🐳 Deploy the run scripts via docker

With a docker installation, the run scripts can be executed using the r:trån container. First, download the example script:

curl https://raw.githubusercontent.com/tum-gis/rtron/main/rtron-main/src/main/resources/scripts/convert-opendrive-to-citygml2-simple.kts \
    --output convert-opendrive-to-citygml2-simple.kts

Then, adapt /adjust/path/... to your host system's paths and run the execution:

docker run -i --name rtron --rm \
           -v /adjust/path/to/input-datasets:/project/input \
           -v /adjust/path/to/output-datasets:/project/output \
           rtron/rtron - < /adjust/path/to/convert-opendrive-to-citygml2-simple.kts

Also note that the script must now reference paths in the container file system (/project/input, /project/output).

To cancel the process, run this command in another terminal:

docker rm -f rtron

♻️ Use r:trån as library (experimental)

r:trån is a collection of software components for spatio-semantic road space models, as described in the architecture. To use its functionality in another Kotlin or Java project, add the dependency to the respective component using Gradle:

dependencies {
  implementation("io.rtron:rtron-main:1.2.2")
  implementation("io.rtron:rtron-readerwriter:1.2.2")
}

To add a dependency using Maven:

<dependency>
    <groupId>io.rtron</groupId>
    <artifactId>rtron-main</artifactId>
    <version>1.2.2</version>
</dependency>

🛠️ Contributing

r:trån was developed so that everyone can benefit from spatio-semantic road space models. Therefore, bug fixes, issue reports and contributions are greatly appreciated.

🎓 Research

If you are interested in the concepts and a first application of r:trån, have a look at our paper. Based on the consistent models now available in OpenDRIVE and CityGML, we generate several target formats for setting up a distributed environment simulation.

@article{SchwabBeilKolbe2020,
  title = {Spatio-Semantic Road Space Modeling for Vehicle{\textendash}Pedestrian Simulation to Test Automated Driving Systems},
  author = {Benedikt Schwab and Christof Beil and Thomas H. Kolbe},
  journal = {Sustainability},
  year = {2020},
  month = may,
  volume = {12},
  number = {9},
  pages = {3799},
  publisher = {MDPI},
  doi = {10.3390/su12093799},
  url = {https://doi.org/10.3390/su12093799}
}

Moreover, these papers may also be of interest:

📝 License

r:trån is distributed under the Apache License 2.0. See LICENSE for more information.

🤝 Thanks

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].