{"id":22745952,"url":"https://github.com/tumftm/open-car-dynamics","last_synced_at":"2025-09-07T01:35:55.240Z","repository":{"id":240200722,"uuid":"749388475","full_name":"TUMFTM/Open-Car-Dynamics","owner":"TUMFTM","description":"C++ Implementation of a Multibody Vehicle Dynamics Simulation","archived":false,"fork":false,"pushed_at":"2024-07-19T14:50:37.000Z","size":123,"stargazers_count":53,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-14T10:07:52.299Z","etag":null,"topics":["cpp","race-car-dynamics","racing","vehicle-dynamics"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TUMFTM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-28T12:51:40.000Z","updated_at":"2025-04-09T13:34:29.000Z","dependencies_parsed_at":"2025-04-14T10:07:53.306Z","dependency_job_id":"d7ce4fe3-d6bb-4b60-95ba-a806ae2c2e5e","html_url":"https://github.com/TUMFTM/Open-Car-Dynamics","commit_stats":null,"previous_names":["tumftm/open-car-dynamics"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/TUMFTM/Open-Car-Dynamics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FOpen-Car-Dynamics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FOpen-Car-Dynamics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FOpen-Car-Dynamics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FOpen-Car-Dynamics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TUMFTM","download_url":"https://codeload.github.com/TUMFTM/Open-Car-Dynamics/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FOpen-Car-Dynamics/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273986613,"owners_count":25202704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","race-car-dynamics","racing","vehicle-dynamics"],"created_at":"2024-12-11T02:09:32.156Z","updated_at":"2025-09-07T01:35:55.198Z","avatar_url":"https://github.com/TUMFTM.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Open Car Dynamics\n\nThe Open Car Dynamics library aims to provide a comprehensive, simple, and easy-to-use implementation of a vehicle's dynamic behavior.\nThe project's primary focus is to enable closed-loop simulation of trajectory following controllers in autonomous driving.\nConsidering this goal, the core philosophy behind this implementation is to model the vehicle's behavior in as much detail as necessary but as simply as possible. Keeping the model concise and relatively simple drastically simplifies parametrization and reduces the effort of adapting the model to one's requirements.\n\nThe model is designed to be an ordinary differential equation in state-space formulation. We use the Dormand Prince Scheme with a constant integration step size to solve the differential equation and to enable real-time execution.\n\nTo further simplify integration into different control-related simulation architectures, we implemented the model in C++, intending to provide a Python and Matlab binding in the following months.\nAn [Autoware](https://autoware.org/) compatible ROS2 Node is offered additionally, but the **model itself is entirely independent of ROS2**.\n\nThe model has been validated with data recorded with the AV21 autonomous racecar used in the [Indy Autonomous Challenge](https://www.indyautonomouschallenge.com/).\n\n## Overview\n\nThe current version of the model combines different models to accurately reproduce the dynamic behavior of an autonomous vehicle:\n- Vehicle Dynamics\n- Drivetrain\n- Steering Actuator\n- Aerodynamics\n- Communication Delays\n\nThe interfaces connecting the different models, are shown in the following figure:\n\n![Model composition](doc/Model_Composition.drawio.svg)\n\nThe ROS2 Node running the abovementioned model subscribes and publishes the following topics:\n\n![Vehicle Model Node](doc/vehicle_model_node.svg)\n\n\n## Compiling and Running the Model\n\nFirst clone the repository using the command:\n\n```\ngit clone --recursive https://github.com/TUMFTM/Open-Car-Dynamics.git\n```\n\n### Having a ROS2 installed\n \nIf you have an existing ROS2 installation you can just build the project using colcon, in the repository root:\n```\ncolcon build --packages-up-to vehicle_model_nodes\n```\n\nAfter building the source code, the node can be started with the ros2 run command:\n```\nsource ./install/setup.bash \u0026\u0026 ros2 run vehicle_model_nodes vehicle_model_double_track_cpp_node --ros-args --params-file ./config/example_config.yml\n```\n\n### Only having Docker installed\n\nHowever, if you don't have an existing ROS2 installation, we provide a Dockerfile in order to build and run the model within a docker container. This is also useful for debugging if problems arise when debugging locally.\nTo build the needed docker image just run the bash script:\n```\nbash build_container.sh\n```\n\nAfter the container has been built, the ros2 node running the provided model can be started inside the container using the provided script:\n```\nbash run_in_container.sh\n```\nTo stop the container:\n```\nbash stop_container.sh\n```\n\n## Parameters\n\nAll vehicle parameters can be adapted via the config file `./config/example_config.yml`.\nFurthermore, most of the parameters are adaptable at runtime via the `ros2 param set` command.\n\nUnfortunately, significant parts of the parametrization resembling the AV21 racecar are confidential.\nTherefore, we can only provide a parametrization that resembles a generic single-seater race car equipped with a conventional on-road tire.\n\n\n## Roadmap\n\nIn the next months, we aim to release the following improvements:\n\n- [ ] Adding detailed documentation of all equations contained inside the model\n- [ ] Adding a Python binding for the vehicle dynamics model. Increasing usability without ROS2. \n- [ ] Significant code refactoring using C++20 Concepts and Templates. This allows for dynamically composing a vehicle model using various drivetrains, vehicle dynamics, and steering actuation models.\n- [ ] Improve parameter naming, especially in the vehicle dynamics model.\n- [ ] Add Matlab binding. Increasing usability without ROS2. **Hoping for community contribution.**\n\n\n## Related Projects\n\nWhen building this vehicle model, we initially took inspiration from the [CommonRoad Vehicle Models](https://gitlab.lrz.de/tum-cps/commonroad-vehicle-models) Project. \nHowever, we needed a real-time capable, modularized model for an autonomous race-car which is why this project was started.\n\n\n## References\n\nIf you use Open Car Dynamics in your work please consider citing our paper [Analyzing the Impact of Simulation Fidelity on the Evaluation of Autonomous Driving Motion Control](https://ieeexplore.ieee.org/document/10588858/).\n```\n@INPROCEEDINGS{10588858,\n  author={Sagmeister, Simon and Kounatidis, Panagiotis and Goblirsch, Sven and Lienkamp, Markus},\n  booktitle={2024 IEEE Intelligent Vehicles Symposium (IV)}, \n  title={Analyzing the Impact of Simulation Fidelity on the Evaluation of Autonomous Driving Motion Control}, \n  year={2024},\n  volume={},\n  number={},\n  pages={230-237},\n  keywords={Measurement;Analytical models;Heuristic algorithms;Software algorithms;Approximation algorithms;Data models;Vehicle dynamics},\n  doi={10.1109/IV55156.2024.10588858}}\n\n```\n\n### Core Developers\n - [Simon Sagmeister](mailto:simon.sagmeister@tum.de)\n - Simon Hoffmann | Implementation of parts of the ROS2 and some of the dependency functions\n\n### Acknowledgments\n\nSeveral students contributed to the success of the project during their Bachelor's, Master's or Project Thesis.\n - Panagiotis Kounatidis | *Development of an initial version of this model as well as implementation of the tire model.*\n\n\nSpecial thanks to my colleagues for the regular technical feedback and talks during the development phase of this model:\n- Sven Goblirsch\n- Frederik Werner\n\n\nWe gratefully acknowledge financial support by:\n - Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) | Project Number - 469341384\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftumftm%2Fopen-car-dynamics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftumftm%2Fopen-car-dynamics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftumftm%2Fopen-car-dynamics/lists"}