|
Package Summary
Tags | No category tags. |
Version | 1.2.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/autowarefoundation/autoware_utils.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-03-07 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jian Kang
- Ryohsuke Mitsudome
- Esteve Fernandez
- Yutaka Kondo
- Takagi, Isamu
Authors
autoware_utils Library
Overview
The autoware_utils library is a comprehensive toolkit designed to facilitate the development of autonomous driving applications. This library provides essential utilities for geometry, mathematics, ROS (Robot Operating System) expansions, diagnostics, and more. It is extensively used in the Autoware project to handle common tasks such as geometric calculations, data normalization, message conversions, performance monitoring, and point cloud transformations.
Design
Geometry Module
The geometry module provides classes and functions for handling 2D and 3D points, vectors, polygons, and performing geometric operations:
-
boost_geometry.hpp
: Integrates Boost.Geometry for advanced geometric computations, defining point, segment, box, linestring, ring, and polygon types. -
alt_geometry.hpp
: Implements alternative geometric types and operations for 2D vectors and polygons, including vector arithmetic, polygon creation, and various geometric predicates. -
ear_clipping.hpp
: Provides algorithms for triangulating polygons using the ear clipping method. -
gjk_2d.hpp
: Implements the GJK algorithm for fast intersection detection between convex polygons. -
sat_2d.hpp
: Implements the SAT (Separating Axis Theorem) algorithm for detecting intersections between convex polygons. -
random_concave_polygon.hpp
andrandom_convex_polygon.hpp
: Generate random concave and convex polygons for testing purposes. -
pose_deviation.hpp
: Calculates deviations between poses in terms of lateral, longitudinal, and yaw angles. -
boost_polygon_utils.hpp
: Utility functions for manipulating polygons, including:- Checking if a polygon is clockwise.
- Rotating polygons around the origin.
- Converting poses and shapes to polygons.
- Expanding polygons by an offset.
-
geometry.hpp
: Comprehensive geometric operations, including:- Distance calculations between points and segments.
- Curvature computation.
- Pose transformations and interpolations.
- Intersection checks for convex polygons using GJK.
- Conversion between different coordinate systems.
ROS Module
The ROS module provides utilities for working with ROS messages and nodes:
-
msg_covariance.hpp
: Indices for accessing covariance matrices in ROS messages. -
msg_operation.hpp
: Overloaded operators for quaternion messages. -
self_pose_listener.hpp
: Listens to the self-pose of the vehicle.
Usage
Including Headers
To use the Autoware Utils library in your project, include the necessary headers at the top of your source files:
#include "autoware_utils/geometry/boost_geometry.hpp"
#include "autoware_utils/math/accumulator.hpp"
#include "autoware_utils/ros/debug_publisher.hpp"
or you can include autoware_utils/autoware_utils.hpp
for all features:
#include "autoware_utils/autoware_utils.hpp"
Example Code Snippets
Using Vector2d from alt_geometry.hpp
#include "autoware_utils/geometry/alt_geometry.hpp"
using namespace autoware_utils::alt;
int main() {
Vector2d vec1(3.0, 4.0);
Vector2d vec2(1.0, 2.0);
// Compute the dot product
double dot_product = vec1.dot(vec2);
// Compute the norm
double norm = vec1.norm();
return 0;
}
Detailed Usage Examples
Manipulating Polygons with boost_polygon_utils.hpp
#include "autoware_utils/geometry/boost_polygon_utils.hpp"
#include "autoware_utils/geometry/boost_geometry.hpp"
#include <rclcpp/rclcpp.hpp>
int main(int argc, char * argv[]) {
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("polygon_node");
// Create a polygon
autoware_utils::Polygon2d polygon;
// Assume polygon is populated with points
// Rotate the polygon by 90 degrees
autoware_utils::Polygon2d rotated_polygon = autoware_utils::rotate_polygon(polygon, M_PI / 2);
// Expand the polygon by an offset
autoware_utils::Polygon2d expanded_polygon = autoware_utils::expand_polygon(polygon, 1.0);
// Check if the polygon is clockwise
bool is_clockwise = autoware_utils::is_clockwise(polygon);
rclcpp::shutdown();
return 0;
}
Changelog for package autoware_utils
1.2.0 (2025-02-26)
- feat(autoware_utils): porting from universe to core (#30) feat(autoware_utils):replace autoware_universe_utils dependency with autoware_utils for all the packages under universe/planning folder, autoware_utils, solve build conflict: v0.0
- Contributors: 心刚
1.1.0 (2025-01-27)
- feat(autoware_utils): porting from autoware_universe_utils (#23) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]\@users.noreply.github.com> Co-authored-by: NorahXiong <<norah.xiong@autocore.ai>>
- chore: sync files (#17)
- fix(autoware_utils): fix links to issues in CHANGELOG.rst files (#15)
- Contributors: Esteve Fernandez, JianKangEgon, awf-autoware-bot[bot]
1.0.0 (2024-05-02)
- Merge pull request #2 from youtalk/import-from-autoware-common feat: import from autoware_common
- add maintainer
- move to autoware_utils
- Contributors: Yutaka Kondo
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
libboost-system-dev |
Dependant Packages
Name | Deps |
---|---|
autoware_lanelet2_extension |
Launch files
Messages
Services
Plugins
Recent questions tagged autoware_utils at Robotics Stack Exchange
|
Package Summary
Tags | No category tags. |
Version | 1.2.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/autowarefoundation/autoware_utils.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-03-07 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jian Kang
- Ryohsuke Mitsudome
- Esteve Fernandez
- Yutaka Kondo
- Takagi, Isamu
Authors
autoware_utils Library
Overview
The autoware_utils library is a comprehensive toolkit designed to facilitate the development of autonomous driving applications. This library provides essential utilities for geometry, mathematics, ROS (Robot Operating System) expansions, diagnostics, and more. It is extensively used in the Autoware project to handle common tasks such as geometric calculations, data normalization, message conversions, performance monitoring, and point cloud transformations.
Design
Geometry Module
The geometry module provides classes and functions for handling 2D and 3D points, vectors, polygons, and performing geometric operations:
-
boost_geometry.hpp
: Integrates Boost.Geometry for advanced geometric computations, defining point, segment, box, linestring, ring, and polygon types. -
alt_geometry.hpp
: Implements alternative geometric types and operations for 2D vectors and polygons, including vector arithmetic, polygon creation, and various geometric predicates. -
ear_clipping.hpp
: Provides algorithms for triangulating polygons using the ear clipping method. -
gjk_2d.hpp
: Implements the GJK algorithm for fast intersection detection between convex polygons. -
sat_2d.hpp
: Implements the SAT (Separating Axis Theorem) algorithm for detecting intersections between convex polygons. -
random_concave_polygon.hpp
andrandom_convex_polygon.hpp
: Generate random concave and convex polygons for testing purposes. -
pose_deviation.hpp
: Calculates deviations between poses in terms of lateral, longitudinal, and yaw angles. -
boost_polygon_utils.hpp
: Utility functions for manipulating polygons, including:- Checking if a polygon is clockwise.
- Rotating polygons around the origin.
- Converting poses and shapes to polygons.
- Expanding polygons by an offset.
-
geometry.hpp
: Comprehensive geometric operations, including:- Distance calculations between points and segments.
- Curvature computation.
- Pose transformations and interpolations.
- Intersection checks for convex polygons using GJK.
- Conversion between different coordinate systems.
ROS Module
The ROS module provides utilities for working with ROS messages and nodes:
-
msg_covariance.hpp
: Indices for accessing covariance matrices in ROS messages. -
msg_operation.hpp
: Overloaded operators for quaternion messages. -
self_pose_listener.hpp
: Listens to the self-pose of the vehicle.
Usage
Including Headers
To use the Autoware Utils library in your project, include the necessary headers at the top of your source files:
#include "autoware_utils/geometry/boost_geometry.hpp"
#include "autoware_utils/math/accumulator.hpp"
#include "autoware_utils/ros/debug_publisher.hpp"
or you can include autoware_utils/autoware_utils.hpp
for all features:
#include "autoware_utils/autoware_utils.hpp"
Example Code Snippets
Using Vector2d from alt_geometry.hpp
#include "autoware_utils/geometry/alt_geometry.hpp"
using namespace autoware_utils::alt;
int main() {
Vector2d vec1(3.0, 4.0);
Vector2d vec2(1.0, 2.0);
// Compute the dot product
double dot_product = vec1.dot(vec2);
// Compute the norm
double norm = vec1.norm();
return 0;
}
Detailed Usage Examples
Manipulating Polygons with boost_polygon_utils.hpp
#include "autoware_utils/geometry/boost_polygon_utils.hpp"
#include "autoware_utils/geometry/boost_geometry.hpp"
#include <rclcpp/rclcpp.hpp>
int main(int argc, char * argv[]) {
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("polygon_node");
// Create a polygon
autoware_utils::Polygon2d polygon;
// Assume polygon is populated with points
// Rotate the polygon by 90 degrees
autoware_utils::Polygon2d rotated_polygon = autoware_utils::rotate_polygon(polygon, M_PI / 2);
// Expand the polygon by an offset
autoware_utils::Polygon2d expanded_polygon = autoware_utils::expand_polygon(polygon, 1.0);
// Check if the polygon is clockwise
bool is_clockwise = autoware_utils::is_clockwise(polygon);
rclcpp::shutdown();
return 0;
}
Changelog for package autoware_utils
1.2.0 (2025-02-26)
- feat(autoware_utils): porting from universe to core (#30) feat(autoware_utils):replace autoware_universe_utils dependency with autoware_utils for all the packages under universe/planning folder, autoware_utils, solve build conflict: v0.0
- Contributors: 心刚
1.1.0 (2025-01-27)
- feat(autoware_utils): porting from autoware_universe_utils (#23) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]\@users.noreply.github.com> Co-authored-by: NorahXiong <<norah.xiong@autocore.ai>>
- chore: sync files (#17)
- fix(autoware_utils): fix links to issues in CHANGELOG.rst files (#15)
- Contributors: Esteve Fernandez, JianKangEgon, awf-autoware-bot[bot]
1.0.0 (2024-05-02)
- Merge pull request #2 from youtalk/import-from-autoware-common feat: import from autoware_common
- add maintainer
- move to autoware_utils
- Contributors: Yutaka Kondo
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
libboost-system-dev |
Dependant Packages
Name | Deps |
---|---|
autoware_lanelet2_extension |