CicleCI Build Status | Sonar Code Quality |
---|---|
CARMASM advances research and development to accelerate market readiness and deployment of cooperative driving automation, while advancing automated driving technology safety, security, data, and artificial intelligence. Encourages collaboration and participation for a community of engineers and researchers to advance understanding of cooperative driving automation using open source software (OSS) and agile project management practices.
CARMA is a reusable, extensible platform for controlling SAE level 1 connected, automated vehicles (CAVs). It provides a rich, generic API for third party plugins that implement vehicle guidance algorithms. It is written in Java and C++ and runs in a Robot Operating System (ROS) environment. It offers a rich application programming interface (API) for third party authors to develop guidance plugins that can plan vehicle trajectories under certain conditions. The platform can be reused on a variety of properly equipped vehicles.
Managing automated vehicle motion involves three aspects. The first is navigation, also known as localization, which is the act of determining where the vehicle currently is with respect to the earth and with respect to the desired path of travel (its planned route). The second is guidance, also known as path planning, which includes the processes of determining how the vehicle is to move from its current location to its destination. The destination and route will be handed to the guidance algorithms, and they then determine how the vehicle’s motion needs to be adjusted at any time in order to follow the route. The third aspect of automated vehicle motion is control, which covers the actuation of the vehicle’s physical devices to induce changes in motion (for land vehicles these are typically causing the wheels to rotate faster or slower and turning the steering wheel). Therefore, the navigation solution becomes an input to the guidance function, and the guidance solution becomes an input to the control function. As the vehicle moves, obviously its location changes so that the navigation function constantly needs to update its solution and the cycle iterates as quickly as necessary to produce a smooth and accurate vehicle motion. The rate of iteration is largely determined by the expected speed of the vehicle.
CARMA provides the navigation and guidance functions for its host vehicle, as well as some of the control functions. It depends on low level controller hardware to provide the rest of the control function. The current version of CARMA is limited to longitudinal (speed) control, so a human operator needs to control the steering wheel. The next major update to CARMA will include lateral (steering) control as well, for full SAE level 2 autonomy.
The platform's performance requirements are specified to conform the following performance requirements. Performance requirements shall only be applicable to the platform being developed, including Android tablets and GUIs; computers, software, positioning units, and processors that are not part of the OEM vehicle. The functional requirements are specified to confirm the following functional requirements. Functional requirements shall be applicable to the platform being developed, including the vehicle's control, MAP and SPAT messages, etc. CAV Platform Requirements
The current version and release history of the CARMA software platform: CARMA Release Notes
Repo Structure Note: The master branch of this repo relfects the second generation of CARMA code and documentation, called CARMA2, which was used by FHWA extensively during 2018. However, the team is actively working on the next generation, CARMA3, that is using Autoware to provide SAE level 2 and 3 automation capability. The develop branch now reflects CARMA3 work, and may not be suitable for use outside the development team for a while. Third party users are encouraged to continue modifying CARMA2 code (through the contribution process outlined below); please make branches off of the CARMA2-integration branch. Updates on this branch will be merged into develop at an appropriate future date.
The current CARMA development direction and release plans. CARMA Roadmap
The documentation describes the architecture of a single CARMA vehicle. There may be several of these vehicles operating in concert, communicating with each other via DSRC or cellular means. They can also communicate with roadside infrastructure using DSRC or cellular. The communication among software components within a single vehicle, however, is mostly done via the Robot Operating System (ROS) framework. There are no ROS communications between neighboring vehicles. CARMA Architecture Guide
Please see the Detail Design document page for detailed design specification for CARMA and other additional information. Detail Design Page
This guide describes the overall approach to develop a plug-in. Developers Guide
The User Guide describes the complete functionality specific to the Cadillac SRX. Some vehicle IPs/power procedures may change when using other vehicles. CARMA User Guide
This guide describes the vehicle and developer PC configuration, build, deployment and testing steps necessary to install and run the CARMA platform. Administrator Guide
CARMA PlatformSM is a downloadable, open source software (OSS) platform architected to be extensible and reusable for a wide variety of research purposes to advance innovation for cooperative driving automation. Enables communication between vehicles, road users such as pedestrians, bicyclists, and scooters, and infrastructure devices capable of communication. Promotes collaboration between a community of engineers and researchers to accelerate the development, testing, and evaluation of cooperative driving automation while advancing the safety, security, data, and use of artificial intelligence in automated driving technology.
The CARMA Platform is distributed as a set of multiple independent packages hosted in separate Github repositories. These packages facilitate operation of the CARMA platform with different hardware configurations or allow it to support different modes of operation. To include one of these packages in your build of the CARMAPlatform system please clone the Github repository into the same Catkin workspace src/
folder as this repository. The Catkin build system will verify that dependencies are resolved appropriately and build the newly included package when you next run catkin_make
. An incomplete listing of available packages includes:
- CARMACadillacSrx2013ControllerDriver
- CARMAFreightliner2012ControllerDriver
- CARMATorcXgvControllerDriver
A full list of available packages may be found at in the USDOT FHWA STOL Github organization.
CARMA CloudSM is a downloadable, cloud-based open source software (OSS) service that provides information to support and enable cooperative driving automation. Enables communication with cloud services and vehicles, road users such as pedestrians, bicyclists, and scooters, and infrastructure devices capable of communication. Promotes collaboration between a community of engineers and researchers to accelerate the development, testing, and evaluation of cooperative driving automation while advancing the safety, security, data, and use of artificial intelligence in automated driving technology.
Welcome to the CARMA contributing guide. Please read this guide to learn about our development process, how to propose pull requests and improvements, and how to build and test your changes to this project. CARMA Contributing Guide
Please read our CARMA Code of Conduct which outlines our expectations for participants within the CARMA community, as well as steps to reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all and expect our code of conduct to be honored. Anyone who violates this code of conduct may be banned from the community.
The development team would like to acknowledge the people who have made direct contributions to the design and code in this repository. CARMA Attribution
By contributing to the Federal Highway Administration (FHWA) Connected Automated Research Mobility Applications (CARMA), you agree that your contributions will be licensed under its Apache License 2.0 license. CARMA License
Please click on the CARMA logo below to visit the Federal Highway Adminstration(FHWA) CARMA website. For more information, contact CARMA@dot.gov.