GithubHelp home page GithubHelp logo

majiaqi / carmaplatform Goto Github PK

View Code? Open in Web Editor NEW

This project forked from usdot-fhwa-stol/carma-platform

0.0 0.0 0.0 34.92 MB

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.

Dockerfile 0.24% CMake 2.22% C++ 11.59% Shell 2.28% C 2.27% Java 79.55% MATLAB 0.38% Python 1.47%

carmaplatform's Introduction

CicleCI Build Status Sonar Code Quality
CircleCI Quality Gate Status

CARMA

CARMA Arch

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.

What Is CARMA

CARMA Arch

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.

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

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:

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.

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.

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. For more information, contact [email protected]. CARMA Image

carmaplatform's People

Contributors

adkissonj avatar aphelyon avatar darrelld05 avatar imp314 avatar jenctyler avatar kjrush avatar maefromm avatar mrzeekster avatar qswawrq avatar tonyscousin avatar watters-torc avatar zeekster28 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.