General

You are here

Cooperative Automation Research Mobility Applications (CARMA) Open Platform

Figure 1. Photo. Four cars with the CARMA platform enabled demonstrate platooning ability. This image shows three vehicles on the right traveling in platoon formation along a roadway. A fourth car on the right is getting ready to join the three-car platoon.  Yellow circles on the floor under the vehicles show the cars have connectivity functions. The yellow dotted lines above the cars are connected between each vehicle to show the cars are sending messages to each other. The image has three words listed along a dotted line, innovation, collaborate, and open source mobility.

What Is CARMA?

Cooperative Automation Research Mobility Applications (CARMA) is an open source software platform initiated by the Federal Highway Administration (FHWA) to enable the testing and evaluation of cooperative automation concepts for improving safety and increasing infrastructure efficiency. CARMA facilitates the research and development of cooperative interactions by infrastructure owner-operators and the automotive industry. By informing vehicles about what’s ahead and what to expect, the CARMA software platform equips vehicles with the ability to interact and cooperate with infrastructure and other vehicles, enabling the safer and more efficient movement of goods and services.

CARMA started in 2014 for the development and implementation of the initial proof of concept CARMA software platform, CARMA1 . In 2018, the latest version of CARMA, CARMA2, migrated to a Robot Operating System (ROS) architecture. CARMA2 was recently completed and is now available on GitHub. The development of CARMA3 kicked off in August 2018 and will be developed in the open using agile software development. More information will be available soon.  

CARMA Evolution. Visual representation of the evolution of the CARMA platform, CARMA1, CARMA2, and CARMA3. The illustration is divided into three boxes each assigned a time frame from the CARMA evolution ranging between year 2014 and year 2020. Located above all boxes is an illustration of an automated vehicle. All vehicles have two yellow circles surrounding the car, a gray signal on top of the car, and blue waves. These symbols indicate the car is connected to other vehicles or infrastructure.  The leftmost box highlights achievements of CARMA1. From 2014 to 2016, the initial proof of concept of CARMA1 was created and individual applications were collected. At the time, Simulink/dSpace was running on MicroAutobox without the use of ROS. CARMA1 demonstrated several applications: a developed platooning algorithm, modified eco-approach and departure (EAD) algorithm, modified speed harmonization algorithm, and modified lane change and merge algorithm.  The middle box represents CARMA2 activities that took place from 2016 to 2018. During this time CARMA2 vehicles met the standards for the Society of Automotive Engineers (SAE) level 1 automation (speed control) and were level 2 capable. CARMA2 was built on top of an ROS and is flexible. It can be installed on several types or modes of vehicles and includes vehicle-specific device drivers for hardware connection and vehicle characteristics in a configuration file. The platform also accepts third-party plugins for research applications (guidance algorithms). CARMA2 includes the following simple applications: cruising with adaptive cruise control (ACC), cooperative lane change, mixed platoons, signalized intersections, and speed harmonization. The rightmost box represents CARMA3 activities that will take place from 2018 to 2020. CARMA3 is now live on Github and qualifies as SAE level 2 automation (speed and steering control) and as level 3 capable. The platform has a more sophisticated vocabulary of cooperation, V2V, and has enhanced lane change, merge, weave, and car and truck platooning. CARMA3 has an emphasis on infrastructure interactions for Transportation Systems Management and Operations (TSMO) including work zones, traffic incident management, weather events, etc. The platform is designed for emergency vehicle applications and interactions as well. The platform continues to evolve on GitHub through 2018 while welcoming additional third-party guidance plugins.
Source: FHWA.
Figure 1. CARMA Evolution

CARMA1

A proof-of-concept software package developed to enable multiple vehicles to communicate and coordinate their longitudinal movements.

Figure 2. CARMA Cooperative Vehicles Test. Five cars equipped with the CARMA platform performing a platoon test. Yellow circles to illustrate that all cars are connected to each other in this platoon.
Source: FHWA
Figure 2. CARMA Cooperative Vehicles Test

CARMA1 developed FHWA’s first cooperative automated vehicle fleet to demonstrate a 5-vehicle cooperative adaptive cruise control proof of concept. To learn more about the CARMA1 project, visit Transportation.gov.

CARMA2

A platform that was developed as open source software (OSS) to engage with the industry on cooperative automation.

Figure 3. CARMA Cooperative Vehicles Test on Highway. The image shows a live highway with lanes going in three directions. From left to right, the first lane has cars and trucks driving southbound. The middle lane shows three CARMA vehicles testing the platooning application at even distances, they are heading northbound. The farthest right lane shows cars traveling north.
Source: FHWA
Figure 3. CARMA Cooperative Vehicle Test on Highway.

CARMA2 runs on a Linux computer inside of a vehicle, and the computer interacts with the vehicle’s devices and microcontrollers via the vehicle’s Controller Area Network (CAN bus). The computer also interfaces with the onboard unit (OBU), which functions as a two-way radio for dedicated short-range communications (DSRC) with other vehicles and infrastructure. Additionally, the computer interacts with after-market sensors, such as radars. DSRC has been designed specifically for vehicles in motion, since there is a short time period to establish a connection and quickly exchange messages from vehicle-to-vehicle (V2V) or vehicle-to-infrastructure (V2I).

The CARMA software platform manages the following interactions:

  • Providing the CAN bus messages for the vehicle to speed up or slow down.
  • Gathers data from connected sensors to better understand the host vehicle’s environment.
  • Sending the OBU messages to transmit to other vehicles so that the other vehicles are aware of the host vehicle.
  • Processing incoming messages from other vehicles and infrastructure so that the vehicle can cooperate with them. 
Figure 4. Illustration of the CARMA2 Architecture. Visual representation of CARMA2’s architecture. The box on the left of the image represents the CARMA2 platform, which operates on a robot operating system. The yellow text box (top) describes the guidance component. This includes plug-ins (cruise and speed control, platooning, lane change and merge, approach and departure, etc.). Below the guidance text box is the vehicle environment text box (middle). This includes messages (V2V/V2I traffic, sensor fusion, roadway, and route). The device drivers text box is at the bottom left. Device drivers include controller software, communication, position (GPS), sensor, and CAN. Arrows indicate the flow of data from the guidance component, to the vehicle environment, to the device drivers, and from all three of these components to the HMI interface.
Source: FHWA
Abbreviations used: vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), global positioning satellite (GPS), and human machine interface (HMI)
Figure 4. Illustration of the CARMA2 Architecture.

The CARMA2 software platform was created to operate on ROS. CARMA is modular; individual components of CARMA can be replaced and functionality can be customized. The central ROS component is guidance, which provides an Application Programming Interface (API) that allows CARMA users to install any number of plug-ins beyond those preconfigured in the CARMA software platform package. Plug-ins are a way to add custom path planning and cooperative logic to the system. The guidance component is also responsible for determining which plug-in to use and for managing plug-in interactions. In addition, the CARMA software platform has adaptive cruise control (ACC) built in as a low-level guidance function.

Currently, the CARMA2 software platform has plug-ins that support the following cooperative driving tactics:

  • Cruising—Recognize and follow speed limit.
  • Yield—Slow down vehicle to avoid a collision.
  • Lane change and merge—Coordinate with vehicle in a lane to the left or right to make space to merge and change lanes.
  • Platooning—Enable collaboration between vehicles at close range in a single lane to save fuel and reduce roadway usage.
  • Speed harmonization—Follow dynamic speed commands from a cloud server that is measuring traffic and determining upstream speeds to minimize traffic jams and limit back-end congestion.

As the CARMA2 software platform currently operates, all plug-ins need to be written in Java (installed as a jar file). These plug-ins work strictly on CARMA2. To learn more about opportunities to collaborate with FHWA, please visit our Collaboration page.

CARMA3

A platform developed in the open using an agile software development process to collaborate with the stakeholder community.

Figure 5. Illustration of the CARMA3 Architecture. Visual representation of CARMA3’s architecture. The box on the left represents the CARMA3 platform. Labels indicate that CARMA3 operates on a robot operating system, and that its components make up a cooperative automated driving systems (CADS) platform. The yellow text box (top) describes the guidance component. This includes plug-ins (cruise and speed control, platooning, lane change and merge, approach and departure, etc.). Below the guidance text box is the vehicle environment text box (middle). This includes messages (V2V/V2I traffic, sensor fusion, roadway, and route). The device drivers text box is at the bottom left. Device drivers include controller software, communication, position (GPS), sensor, and CAN. Arrows indicate the flow of data from the guidance component, to the vehicle environment, to the device drivers, and from all three of these components to the HMI interface.
Source: FHWA
Abbreviations used: Cooperative Automated Driving System (CADS), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), global positioning satellite (GPS), light detection and ranging (LiDAR), human machine interface (HMI).
Figure 5. Illustration of CARMA3 Architecture.

CARMA3 is currently in development in the open. To learn more about CARMA, please visit the GitHub and Confluence sites.

Updated: Wednesday, January 23, 2019