Coder Social home page Coder Social logo

autowarefoundation / autoware.universe Goto Github PK

View Code? Open in Web Editor NEW
890.0 44.0 577.0 1.84 GB

Home Page: https://autowarefoundation.github.io/autoware.universe/

License: Apache License 2.0

CMake 1.64% C++ 92.42% Python 5.00% Cuda 0.59% Shell 0.04% C 0.06% Jupyter Notebook 0.25%
ros ros2 autoware autonomous-vehicles autonomous-driving calibration 3d-map planner self-driving-car

autoware.universe's Introduction

Autoware Universe

Welcome to Autoware Universe

Autoware Universe serves as a foundational pillar within the Autoware ecosystem, playing a critical role in enhancing the core functionalities of autonomous driving technologies. This repository is a pivotal element of the Autoware Core/Universe concept, managing a wide array of packages that significantly extend the capabilities of autonomous vehicles.

autoware_universe_front

Getting Started

To dive into the vast world of Autoware and understand how Autoware Universe fits into the bigger picture, we recommend starting with the Autoware Documentation. This resource provides a thorough overview of the Autoware ecosystem, guiding you through its components, functionalities, and how to get started with development.

Explore Autoware Universe documentation

For those looking to explore the specifics of Autoware Universe components, the Autoware Universe Documentation, deployed with MKDocs, offers detailed insights.

autoware.universe's People

Contributors

awf-autoware-bot[bot] avatar badai-nguyen avatar danielsanchezaran avatar esteve avatar h-ohta avatar isamu-takagi avatar kenji-miyake avatar kminoda avatar kosuke55 avatar kyoichi-sugahara avatar maxime-clem avatar purewater0901 avatar rej55 avatar sakodashintaro avatar satoshi-ota avatar scepter914 avatar soblin avatar taikitanaka3 avatar takahoribe avatar takayuki5168 avatar technolojin avatar tkimura4 avatar tomohitoando avatar veqcc avatar wep21 avatar xmfcx avatar yamatoando avatar yoshiri avatar yuki-takagi-66 avatar zulfaqar-azmi-t4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

autoware.universe's Issues

Fix calcuation of angle difference

In the function of angle difference calculation, NaN value is returned when the absolute value of inner product is larger than 1.

double getAngleDifference(const double angle1, const double angle2)
{
Eigen::Vector2d vec1, vec2;
vec1 << std::cos(angle1), std::sin(angle1);
vec2 << std::cos(angle2), std::sin(angle2);
const double diff_angle = std::acos(vec1.dot(vec2));
return std::fabs(diff_angle);
}

This is because arg of atd::acos shouldn't be outside the range [-1.0, 1.0] expalined here.
Numerical error happens in some cases so gurad needs to be added.

Remove unnecessary messages from Tier IV's proposal messages

Check the dependency and remove unnecessary messages that are replaced by autoware_auto_msgs from messages.

  • autoware_control_msgs
  • autoware_vehicle_msgs
  • autoware_perception_msgs
  • autoware_planning_msgs
  • autoware_system_msgs
  • autoware_lanelet2_msgs

Add planning_evaluator package to evaluate planning module performance.

problem

The evaluation infrastructure for planning development is not in place, and degradation checking and performance evaluation depend on humans. This process should be automated and some quantitative indicators need to be defined and the results visualized.
This allows for efficient evaluation of development and comparison between different planners.

suggestion

Using the trajectory generated by the planning module as input, create a node that can evaluate the smoothness of the trajectory, etc.
This node can be activated separately from autoware when you want to evaluate the trajectory.
If you want to evaluate different property, you can add functions to planning_evaluator.

pros and cons

By defining a reasonable index, quantitative evaluation of the trajectory becomes possible, but there is a possibility that the performance of autoware itself will deteriorate if the processing load of the planning_evaluator itself increases.

transition plan

Since there is currently no function that utilizes the output of this node, there is no need to consider it.

Consider using Composite Actions instead of Reusable Workflows in GitHub Actions

Reusable Workflows are very useful, so I introduced here.

However, I found it has a few disadvantages in some use cases.
https://github.community/t/ref-head-in-reusable-workflows/203690/17

Therefore, I'll replace some of the Reusable Workflows with Composite Actions.

[Composite Actions]

  • To reuse some steps, not the entire job
  • To refer to local actions or files

[Reusable Workflows]

  • To reuse the entire job
  • To make the task's environment clean or separated

Unit test for daily health check is unstable

100% tests passed, 0 tests failed out of 6

Label Time Summary:
copyright = 11.92 secproc (1 test)
cppcheck = 1.07 sec
proc (1 test)
gtest = 1.04 secproc (2 tests)
lint_cmake = 0.71 sec
proc (1 test)
linter = 15.99 secproc (4 tests)
xmllint = 2.28 sec
proc (1 test)

Total Test time (real) = 17.04 sec
Finished <<< behavior_velocity_planner [18.3s]

Summary: 1 package finished [19.5s]

usually test passes with 100% CPU stress but it's not in daily Test

Add implementation to arm_cpu_monitor

I fixed a build error on aarch64 (#263), but that only suppressed warnings.
To support aarch64 systems with system_monitor, we need to add an implementation to arm_cpu_monitor.
Now, the following function is unimplemented.
https://github.com/autowarefoundation/autoware.universe/blob/tier4/proposal/system/system_monitor/src/cpu_monitor/arm_cpu_monitor.cpp#L33

I would like to contribute to this feature, but I don't have an aarch64 machine, so implementation is difficult. Therefore, I created an issue.

NOTE: Among the aarch64 machines, Raspberry Pi and Tegra are implemented differently.

Simple planning simulator does not consider vehicle/engage result.

simple planning simulator dropped some features during .universe porting

  • /vehicle/engage result is not considered for simulating (Ideally, simulating only when /vehicle/engage result is true)
  • default parameter for /vehicle/engage result (current_engage_ variable) was removed and set false by default.

Consider using global_parameter_loader

With our current plan, there will be multiple default_common.param.yaml, but it might increase the maintenance cost, for example when the common parameter gets a new variable.

To avoid this, we can consider global_parameter_loader.

<include file="$(find-pkg-share autoware_global_parameter_loader)/launch/global_params.launch.py"/>

https://github.com/autowarefoundation/autoware.universe/blob/c2e79c3a56956f867030b2cbc9675e2e7c7c1339/common/autoware_global_parameter_loader

Without global_parameter_loader

launch.xml:

// planning.launch.xml
<launch>
  <include file="behavior_planner.launch.xml">
    <arg name="common_param_path" value="{path_to_file}" />
    <arg name="vehicle_param_path" value="{path_to_file}" />
  </include>
</launch>


// behavior_planner.launch.xml
<launch>
  // Don't consider the default values here because you can't use them when you debug in the real environment.
  <arg name="common_param_path" />
  <arg name="vehicle_param_path" />

  <node ...>
  </node>
</launch>

How to launch:

// autoware.launch.xml
ros2 launch autoware_launch autoware.launch.xml vehicle_model:={vehicle_name}

// behavior_planner.launch.xml
ros2 launch planning_launch behavior_planner.launch.xml common_param_path:={path_to_file} vehicle_info_param_path:={path_to_file}

With global_parameter_loader

launch.xml:

// planning.launch.xml
<launch>
  <include file="behavior_planner.launch.xml">
    // No arg
  </include>
</launch>

// behavior_planner.launch.xml
<launch>
  <include file="$(find-pkg-share autoware_global_parameter_loader)/launch/global_params.launch.py"/>

  <node ...>
  </node>
</launch>

How to launch:

// autoware.launch.xml
ros2 launch autoware_launch autoware.launch.xml vehicle_model:={vehicle_name}

// behavior_planner.launch.xml
ros2 launch planning_launch behavior_planner.launch.xml vehicle_model:={vehicle_name}

Merge packages from autoware.auto repo

This issue aims to merge packages from autoware repo in gitlab. Prefix 'auto' will be added to packages from gitlab to distinguish with those in universe. The current plan is to add most packages except for the ones under src/tools. Please feel free to make any comment or suggestion.

Fix behavior_velocity_planner

Port https://github.com/tier4/autoware.iv/pull/2413 .

  • Add margin to isBeforeStopLine #228
  • Common parameter with isNearAnyEndLine and isNearAnyEndLine. #228
  • Fixed the bool value of isStateTimeout. #228
  • Check timeout even after the stop_line by default #228
  • Fix findForwardOffsetSegment of detection_area #305
  • Fix virtual_traffic_light findBackwardOffsetSegment index #306
  • Consider pose for overlapping lanes #306
  • Fix virtual_traffic_light state #306
  • Add instrument information to logger #328

Add common packages and tool packages of autoware.auto

Add common packages and tool packages of autoware.auto for the dependencies of the autoware.auto package.

  • autoware_auto_cmake
  • autoware_auto_common
  • autoware_auto_geometry
  • autoware_auto_tf2
  • autoware_testing
  • fake_test_node
  • had_map_utils
  • motion_common
  • motion_testing
  • time_utils
  • vehicle_constants_manager

occlusion spot: remaining TODOs

below is remaing TODOs

  1. better interpolation using original path behind ego #290
  2. consider using lanelet info to filter unnecessary possible collision.
  3. fix velocity of spline interpolation #290
  4. consider safe margin before collision point #344
  5. consider detection area of passable/impassable collisiopn. #354

below is bug fix
#351

Diagnostics with no corresponding node

How much should we adjust "Autoware.auto packages" to the "Tier4" acceptance criteria?

So far some packages area back porting from autoware.auto so we should change as minimal as possible, so we don't apply these changes.

  • pre-commit (ignore for temporary)
  • add sample launch file (each packages should have sample launch file)
  • pass Gtest
  • readme.md

below should be added?

  • add sample launch file (each packages should have sample launch file)

Display labeled code coverage in pull requests

Related to autowarefoundation/autoware-documentation#2, I would like to add the feature to measure and display code coverage for pull requests to improve review process.

Considerations

  • About the reporter, whether to use CodeCov or to create a function to measure and report in GitHub Actions.
  • How to specify labels for coverage by label, whether to automatically collect all labels or to specify the labels we want to set.

consider case when autoware overshoot internally or externally

There are some modules which doesn't define case for overshooting stop line without fulfilling stop condition by internal control error or external manual input that causes "Stop forever until manual override is applied". For example stop line defines stop state as 2 [sec] velocity below of 0.1[m/s] at 2[m] around stop line however if there is manual override or control error occur and over stop line stop line without notice then it will never meet stop line condition and stop velocity insert forever. So we should clear dead line margin (margin after stop line) which "we don't consider distance to stop line as a stop condition". So my suggestion is if overshoot happens "stop anyway for 2 sec at any place, then GO".

overshoot: mostly caused by manual override by human who thinks already stopped and stop condition was met in autoware but actually not.

Add missing current pose topic for simple planning simulator

This line is unsed so far so it would be better to remove this line and assume pose from simulator is coming from odometry message.

pub_current_pose_ = create_publisher<PoseStamped>("/current_pose", QoS{1});

or
add /current_pose topic like autoware.iv
The same information is in odometry message but ,It seem no package refer to pose from odometry message

i think it's better to publish PoseStamped message from simulator for better compatibility.

cc : @isamu-takagi

Fix typos

I think procs can be added to the dictionary or be replaced by processes (or processors?).

image

Add delay model of velocity and steering

Adding delay model of velocity and steering which reads velocity command as DELAY_STEER_VEL.
This model was used in autoware.iv as DELAY_STEER. And this model was not ported from autoware.iv.

/* vehicle model */
enum class VehicleModelType
{
IDEAL_STEER_ACC = 0,
IDEAL_STEER_ACC_GEARED = 1,
DELAY_STEER_ACC = 2,
DELAY_STEER_ACC_GEARED = 3,
IDEAL_STEER_VEL = 4,
DELAY_STEER_VEL = 5
} vehicle_model_type_; //!< @brief vehicle model type to decide the model dynamics

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.