Skip to content

The newest inception of CARMA is now live on Github and open for collaborating. The CARMAPlatform is created on a robot operating system (ROS) and utilizes open source software (OSS) that enables cooperative automated driving plug-ins.

Notifications You must be signed in to change notification settings

mgoli-cav/CARMAPlatform

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CicleCI Build Status Sonar Code Quality
CircleCI Quality Gate Status

CARMA

CARMA Arch

Cooperative Automated Research Mobility Applications (CARMA), 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.

What Is CARMA

CARMA Arch

Managing automated vehicle motion involves three aspects. The first is navigation, also know 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 know 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.

Documentation

CARMA Demo

System Specifications

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

Release Notes

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.

Roadmap

The current CARMA development direction and release plans. CARMA Roadmap

Architecture Guide

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

Detailed Design Documents

Please see the Detail Design document page for detailed design specification for CARMA and other additional information. Detail Design Page

Developers Guide

This guide describes the overall approach to develop a plug-in. Developers Guide

Users 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

Administrator 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

Other CARMA Packages

The CARMAPlatform 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:

Vehicle Controller Interface Drivers

Sensor Drivers

General System Utilites

A full list of available packages may be found at in the USDOT FHWA STOL Github organization.

Contribution

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

Code of Conduct

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.

Attribution

The development team would like to acknowledge the people who have made direct contributions to the design and code in this repository. CARMA Attribution

License

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

Contact

Please click on the CARMA logo below to visit the Federal Highway Adminstration(FHWA) CARMA website.

CARMA Image

About

The newest inception of CARMA is now live on Github and open for collaborating. The CARMAPlatform is created on a robot operating system (ROS) and utilizes open source software (OSS) that enables cooperative automated driving plug-ins.

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 83.6%
  • C++ 7.0%
  • Shell 2.7%
  • C 2.4%
  • Python 1.5%
  • CMake 1.3%
  • Other 1.5%