# OpenCDA [![Build Status](https://travis-ci.com/ucla-mobility/OpenCDA.svg?branch=develop)](https://travis-ci.com/ucla-mobility/OpenCDA) [![Coverage Status](https://coveralls.io/repos/github/ucla-mobility/OpenCDA/badge.svg?branch=feature/readme_revise)](https://coveralls.io/github/ucla-mobility/OpenCDA?branch=feature/readme_revise) [![Documentation Status](https://readthedocs.org/projects/opencda-documentation/badge/?version=latest)](https://opencda-documentation.readthedocs.io/en/latest/?badge=latest) OpenCDA is a SIMULATION tool integrated with a prototype cooperative driving automation (CDA; see [SAE J3216](https://www.sae.org/standards/content/j3216_202005/)) pipeline as well as regular automated driving components (e.g., perception, localization, planning, control). The tool integrates automated driving simulation (CARLA), traffic simulation (SUMO), and Co-simulation (CARLA + SUMO). OpenCDA is all in Python. In collaboration with [U.S.DOT CDA Research](https://its.dot.gov/cda/) and the [FHWA CARMA Program](https://highways.dot.gov/research/operations/CARMA), OpenCDA, as an open-source project, is designed and built to support initial algorithmic testing for CDA Features. Through collaboration with CARMA Collaborative, this tool provides a unique capability to the CDA research community and will interface with the [CARMA XiL tools](https://github.com/usdot-fhwa-stol/carma-simulation) being developed by U.S.DOT to support more advanced simulation testing of CDA Features. The key features of OpenCDA are: * Integration: OpenCDA utilizes CARLA and SUMO separately, as well as integrates them together. * Full-stack Simulation: OpenCDA provides a simple prototype automated driving and cooperative driving platform, all in Python, that contains perception, localization, planning, control, and V2X communication modules. * Modularity: OpenCDA is highly modularized. * Benchmark: OpenCDA offers benchmark testing scenarios, benchmark baseline maps, state-of-the-art benchmark algorithms, and benchmark evaluation metrics. * Connectivity and Cooperation: OpenCDA supports various levels and categories of cooperation between CAVs in simulation. This differentiates OpenCDA from other single vehicle simulation tools. Users could refer to [OpenCDA documentation](https://opencda-documentation.readthedocs.io/en/latest/) for more details. ## Major Components ![teaser](docs/md_files/images/OpenCDA_diagrams.png ) OpenCDA consists of three major component: Cooperative Driving System, Co-Simulation Tools, and Scenario Manager. Check the [OpenCDA Introduction](https://opencda-documentation.readthedocs.io/en/latest/md_files/introduction.html) for more details. ## Get Started ![teaser](docs/md_files/images/platoon_joining_2lanefree_complete.gif) ### Users Guide * [Overview](https://opencda-documentation.readthedocs.io/en/latest/md_files/introduction.html) * [Installation](https://opencda-documentation.readthedocs.io/en/latest/md_files/installation.html) * [Quick Start](https://opencda-documentation.readthedocs.io/en/latest/md_files/getstarted.html) * [Logic Flow](https://opencda-documentation.readthedocs.io/en/latest/md_files/logic_flow.html) * [Traffic Generation](https://opencda-documentation.readthedocs.io/en/latest/md_files/traffic_generation.html) Note: We continuously improve the performance of OpenCDA. Currently, it is mainly tested in our customized maps and Carla town06 map; therefore, we DO NOT guarantee the same level of robustness in other maps. ### Developer Guide * [Class Design](https://opencda-documentation.readthedocs.io/en/latest/md_files/developer_tutorial.html) * [Customize Your Algorithms](https://opencda-documentation.readthedocs.io/en/latest/md_files/customization.html) * [API Reference](https://opencda-documentation.readthedocs.io/en/latest/modules.html)
### Contribution Rule We welcome your contributions. - Please report bugs and improvements by submitting issues. - Submit your contributions using [pull requests](https://github.com/ucla-mobility/OpenCDA/pulls). Please use [this template](.github/PR_TEMPLATE.md) for your pull requests. ## What's New ### Oct 2021 * Offline Cooperative Perception(data dumping) is supported. The paper [*OPV2V: An Open Benchmark Dataset and Fusion Pipeline for Perception with Vehicle-to-Vehicle Communication*](https://arxiv.org/abs/2109.07644) comes out from this feature. * CARLA 0.9.12 now supported; Different weather conditions are supported. * Better traffic management supported: users now can set a customized range to background cars. ## Citation If you are using our OpenCDA framework or codes for your development, please cite the following paper: ```bibtex @inproceedings{xu2021opencda, title={OpenCDA: An Open Cooperative Driving Automation Framework Integrated with Co-Simulation}, author={Runsheng Xu, Yi Guo, Xu Han, Xin Xia, Hao Xiang, Jiaqi Ma}, booktitle={2021 IEEE Intelligent Transportation Systems Conference (ITSC)}, year={2021} } ``` The arxiv link to the paper: https://arxiv.org/abs/2107.06260 Also, under this LICENSE, OpenCDA is for non-commercial research only. Researchers can modify the source code for their own research only. Contracted work that generates corporate revenues and other general commercial use are prohibited under this LICENSE. See the LICENSE file for details and possible opportunities for commercial use. ## Contributors OpenCDA is supported by the [UCLA Mobility Lab](https://mobility-lab.seas.ucla.edu/).
### Lab Principal Investigator: - Dr. Jiaqi Ma ([linkedin](https://www.linkedin.com/in/jiaqi-ma-17037838/), [UCLA Samueli](https://samueli.ucla.edu/people/jiaqi-ma/)) ### Project Lead:
- Runsheng Xu ([linkedin](https://www.linkedin.com/in/runsheng-xu/), [github](https://github.com/DerrickXuNu))
### Team Members: - Xu Han ([linkedin](https://linkedin.com/in/xu-han-12851a64), [github](https://github.com/xuhan417)) - Hao Xiang ([linkedin](https://www.linkedin.com/in/hao-xiang-42bb5a1b2/), [github](https://github.com/XHwind)) - Dr. Yi Guo ([linkedin](https://www.linkedin.com/in/yi-guo-4008baaa/)) - Dr. Xin Xia ([linkedin](https://www.linkedin.com/in/yi-guo-4008baaa/))