Convert Figma logo to code with AI

autowarefoundation logoautoware

Autoware - the world's leading open-source software project for autonomous driving

8,918
2,984
8,918
56

Top Related Projects

24,996

An open autonomous driving platform

49,207

openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system in 275+ supported cars.

Autoware - the world's leading open-source software project for autonomous driving

11,096

Open-source simulator for autonomous driving research.

A ROS/ROS2 Multi-robot Simulator for Autonomous Vehicles

Quick Overview

Autoware is an open-source software platform for autonomous driving technology. It provides a complete stack of software components necessary for the development, testing, and deployment of self-driving vehicles, including perception, localization, planning, and control modules.

Pros

  • Comprehensive: Offers a full suite of autonomous driving components
  • Open-source: Allows for community contributions and customization
  • ROS2-based: Leverages the robust and widely-used Robot Operating System 2
  • Actively maintained: Regular updates and improvements from the community

Cons

  • Steep learning curve: Requires significant expertise in robotics and autonomous systems
  • Hardware-dependent: Optimal performance often requires specific sensor configurations
  • Resource-intensive: Can be computationally demanding, especially for real-time operations
  • Limited documentation: Some areas may lack detailed explanations or tutorials

Code Examples

  1. Launching Autoware:
ros2 launch autoware_launch autoware.launch.xml map_path:=/path/to/map_folder vehicle_model:=lexus sensor_model:=aip_xx1

This command launches the main Autoware stack with specified map, vehicle, and sensor configurations.

  1. Publishing a goal pose:
from geometry_msgs.msg import PoseStamped
from rclpy.node import Node
import rclpy

class GoalPublisher(Node):
    def __init__(self):
        super().__init__('goal_publisher')
        self.publisher = self.create_publisher(PoseStamped, '/planning/mission_planning/goal', 10)
        self.timer = self.create_timer(1.0, self.publish_goal)

    def publish_goal(self):
        goal = PoseStamped()
        goal.header.frame_id = 'map'
        goal.pose.position.x = 10.0
        goal.pose.position.y = 20.0
        goal.pose.orientation.w = 1.0
        self.publisher.publish(goal)

rclpy.init()
node = GoalPublisher()
rclpy.spin(node)

This Python script creates a ROS2 node that publishes a goal pose for the autonomous vehicle to navigate to.

  1. Subscribing to vehicle status:
#include <rclcpp/rclcpp.hpp>
#include <autoware_auto_vehicle_msgs/msg/vehicle_kinematic_state.hpp>

class VehicleStatusSubscriber : public rclcpp::Node
{
public:
  VehicleStatusSubscriber() : Node("vehicle_status_subscriber")
  {
    subscription_ = this->create_subscription<autoware_auto_vehicle_msgs::msg::VehicleKinematicState>(
      "/vehicle/status/kinematic_state", 10,
      std::bind(&VehicleStatusSubscriber::status_callback, this, std::placeholders::_1));
  }

private:
  void status_callback(const autoware_auto_vehicle_msgs::msg::VehicleKinematicState::SharedPtr msg)
  {
    RCLCPP_INFO(this->get_logger(), "Vehicle speed: %f m/s", msg->state.longitudinal_velocity_mps);
  }
  rclcpp::Subscription<autoware_auto_vehicle_msgs::msg::VehicleKinematicState>::SharedPtr subscription_;
};

int main(int argc, char * argv[])
{
  rclcpp::init(argc, argv);
  rclcpp::spin(std::make_shared<VehicleStatusSubscriber>());
  rclcpp::shutdown();
  return 0;
}

This C++ code creates a ROS2 node that subscribes to the vehicle's kinematic state and prints the current speed.

Getting Started

  1. Install ROS2 and Autoware dependencies
  2. Clone the Autoware repository:
    git clone https://github.com/autowarefoundation/autoware.git
    
  3. Build Autoware:
    cd autoware
    colcon build --symlink-install
    
  4. Source the setup file

Competitor Comparisons

24,996

An open autonomous driving platform

Pros of Apollo

  • More comprehensive simulation environment with advanced scenario generation
  • Stronger support for HD maps and localization
  • Extensive hardware integration capabilities, including LiDAR and radar

Cons of Apollo

  • Steeper learning curve due to complex architecture
  • Less modular design, making it harder to customize specific components
  • More resource-intensive, requiring higher-end hardware for optimal performance

Code Comparison

Apollo (C++):

void Planning::RunOnce(const LocalView& local_view,
                       ADCTrajectory* const trajectory_pb) {
  const double start_timestamp = Clock::NowInSeconds();
  // ... (planning logic)
  const double end_timestamp = Clock::NowInSeconds();
}

Autoware (C++):

bool PlanningNode::on_timer() {
  // ... (planning logic)
  auto trajectory = planner_->planTrajectory(current_pose_, goal_pose_);
  publishTrajectory(trajectory);
  return true;
}

Both repositories use C++ for core functionality, but Apollo's codebase tends to be more complex and tightly integrated. Autoware's modular design is reflected in its simpler function structure, making it easier for developers to understand and modify specific components.

49,207

openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system in 275+ supported cars.

Pros of openpilot

  • More user-friendly and accessible for consumer vehicles
  • Active community with frequent updates and contributions
  • Designed for real-world deployment on existing cars

Cons of openpilot

  • Limited to specific supported vehicle models
  • Less flexible for research and custom applications
  • Focused primarily on highway driving scenarios

Code Comparison

openpilot (Python):

def update(self):
  if self.sm.updated['carState']:
    self.v_cruise_kph = self.sm['carState'].cruiseState.speed * CV.MS_TO_KPH
    self.v_cruise_cluster_kph = self.sm['carState'].cruiseState.speedCluster * CV.MS_TO_KPH

Autoware (C++):

void update()
{
  if (current_velocity_ptr_->twist.linear.x < param_.stopping_velocity) {
    state_ = State::STOPPED;
  } else {
    state_ = State::DRIVING;
  }
}

Both projects aim to provide autonomous driving capabilities, but they target different use cases. openpilot focuses on enhancing existing consumer vehicles with driver assistance features, while Autoware is a more comprehensive platform for autonomous driving research and development across various vehicle types.

Autoware - the world's leading open-source software project for autonomous driving

Pros of Autoware

  • More established and mature project with a larger community
  • Broader range of features and functionalities for autonomous driving
  • Better documentation and support resources

Cons of Autoware

  • Higher complexity and steeper learning curve
  • Requires more computational resources
  • Less flexible for customization in specific use cases

Code Comparison

Autoware (C++):

void VehicleInterface::publishVehicleStatus(const ros::Time & stamp)
{
  autoware_vehicle_msgs::VehicleStatus status;
  status.header.stamp = stamp;
  status.twist.linear.x = current_velocity_;
  vehicle_status_pub_.publish(status);
}

Autoware.Auto (C++):

void VehicleInterface::publish_vehicle_state(const std::chrono::system_clock::time_point & stamp)
{
  auto msg = autoware_auto_msgs::msg::VehicleStateReport();
  msg.stamp = stamp;
  msg.velocity_mps = current_velocity_;
  vehicle_state_pub_->publish(msg);
}

The code comparison shows similar functionality but highlights differences in message types, naming conventions, and time handling between the two projects. Autoware.Auto uses more modern C++ features and follows a slightly different coding style.

11,096

Open-source simulator for autonomous driving research.

Pros of CARLA

  • More realistic and visually appealing simulation environment
  • Extensive sensor suite and weather conditions for diverse testing scenarios
  • Built-in Python API for easier integration and scripting

Cons of CARLA

  • Higher computational requirements due to advanced graphics
  • Limited focus on full autonomous driving stack compared to Autoware
  • Steeper learning curve for users new to Unreal Engine

Code Comparison

CARLA (Python API):

import carla

client = carla.Client('localhost', 2000)
world = client.get_world()
blueprint = world.get_blueprint_library().find('vehicle.tesla.model3')
spawn_point = world.get_map().get_spawn_points()[0]
vehicle = world.spawn_actor(blueprint, spawn_point)

Autoware (ROS2 launch file):

<launch>
  <include file="$(find-pkg-share autoware_launch)/launch/planning_simulator.launch.xml">
    <arg name="vehicle_model" value="lexus"/>
    <arg name="sensor_model" value="aip_xx1"/>
  </include>
</launch>

A ROS/ROS2 Multi-robot Simulator for Autonomous Vehicles

Pros of LGSVL Simulator

  • Focused on simulation, providing a more comprehensive virtual testing environment
  • Supports multiple autonomous driving platforms, not limited to Autoware
  • Offers a user-friendly interface for scenario creation and testing

Cons of LGSVL Simulator

  • Less integrated with real-world autonomous driving systems
  • Requires more setup and configuration for use with specific platforms
  • May have a steeper learning curve for users new to simulation environments

Code Comparison

Autoware (C++):

void VehicleInterface::publishVehicleStatus(const ros::Time& stamp)
{
  autoware_msgs::VehicleStatus msg;
  msg.header.frame_id = "base_link";
  msg.header.stamp = stamp;
  // ... (additional code)
}

LGSVL Simulator (Python):

def on_collision(agent, other, contact):
    print(f"{agent.name} collided with {other.name} at {contact}")
    if config.stop_on_collision:
        sim.stop()

The code snippets demonstrate the different focus areas of each project. Autoware's code relates to publishing vehicle status in a real-world scenario, while LGSVL Simulator's code handles collision events in a simulated environment.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Autoware - the world's leading open-source software project for autonomous driving

Autoware_RViz

Autoware Universe Contributors Autoware Contributors

Autoware Universe Activity Autoware Activity

License

health-check CI Code Coverage

Autoware Discord Autoware Twitter / X Autoware Linkedin

Autoware is an open-source software stack for self-driving vehicles, built on the Robot Operating System (ROS). It includes all of the necessary functions to drive an autonomous vehicles from localization and object detection to route planning and control, and was created with the aim of enabling as many individuals and organizations as possible to contribute to open innovations in autonomous driving technology.

Autoware architecture

Documentation

To learn more about using or developing Autoware, refer to the Autoware documentation site. You can find the source for the documentation in autowarefoundation/autoware-documentation.

Repository overview

Using Autoware.AI

If you wish to use Autoware.AI, the previous version of Autoware based on ROS 1, switch to autoware-ai repository. However, be aware that Autoware.AI has reached the end-of-life as of 2022, and we strongly recommend transitioning to Autoware Core/Universe for future use.

Contributing

Useful resources