This repository contains a collection of common functionality used in various modules of the software stack of TUM Autonomous Motorsport.
This repository contains several packages that can be built. Below is a list of the available packages along with a brief description of their contents.
| Package Name | Description |
|---|---|
can_comms_cpp |
C++ library for CAN communication |
limit_handler_cpp |
C++ library for handling acceleration limits |
limit_handler_py |
Python binding for limit_handler_cpp |
network_communication |
UDP/ROS Bride for communication between Non-ROS and ROS Modules via given msg Definitions |
ros2_watchdog_cpp |
C++ library for monitoring ROS2 topics and nodes |
ros2_watchdog_py |
Python binding for ros2_watchdog_cpp |
track_handler_cpp |
C++ library for handling and processing race track files |
track_handler_py |
Python binding for track_handler_cpp |
tum_helpers_cpp |
Various helper and conversion functions for C++ applications |
tum_helpers_py |
Python binding of tum_helpers_cpp |
tum_ros_helpers_cpp |
C++ library for providing helper functions for ROS2 applications |
tum_type_conversions_ros_cpp |
Various message type conversions for C++ applications |
tum_type_conversions_ros_py |
Python binding for tum_type_conversions_ros_cpp |
tum_types_cpp |
C++ library containing common struct definitions for data handling |
tum_types_py |
Python binding for tum_types_cpp |
vehicle_handler_cpp |
C++ library for handling vehicle parameter and vehcile specific calculations |
vehicle_handler_py |
Python binding for vehicle_handler_cpp |
dynamic_node_composition |
Library for dynamically loading ROS2 nodes as rclcpp components from shared libraries. Includes CLI argument parsing and executables for component loading. |
logging |
More performant ROS2 bag recorder than the builtin ros2 one. |
boost_sml |
Vendor Package for the Open Source State Machine Library for C++ |
matplotlib_cpp |
Vendor Package for the Open Source Plotting library for C++ applications |
| Package Name | Description |
|---|---|
parameter_management |
Parameter Management Library of TUM Autonmous Motorsport |
time_series_logging |
The time series logging library of TUM Autonomous Motorsport |
boost_sml |
State Machine Library for C++ |
matplotlib_cpp |
Plotting functionality for C++ applications |
Attention: The repository contains submodules so please clone with the --recursive option
We are using Ubuntu 22.04 and ROS 2 Humble for building the project. We expect later releases of Ubuntu and ROS 2 to work as well, but we haven't tested it so far.
Additionally, the following packages have to be installed:
sudo apt install libboost-dev
sudo apt install ros-${ROS_DISTRO}-can-msgs
sudo apt install ros-${ROS_DISTRO}-ros2-socketcan
sudo apt install ros-${ROS_DISTRO}-geographic-msgs # Required for autoware msgsAfter installing the required dependencies, all packages should compile using colcon.
colcon buildAt this point, we cannot guarantee API stability since we are continuously developing and improving our software stack. While we always try to avoid these, breaking changes could happen in future updates of the message definitions.
Implementation of segment.cpp, segment.hpp, curvilinear_cosy.cpp, curvilinear_cosy.hpp adapted from:
- https://ieeexplore.ieee.org/abstract/document/6856487
- https://gitlab.lrz.de/tum-cps/commonroad-drivability-checker/-/tree/master/cpp/geometry
- see License
The main contributors of the Project are:
- Simon Sagmeister
- Simon Hoffmann
- Phillip Pitschi - Mainly contributing to the message conversion library
- Maximilian Leitenstern - Mainly developing and implementing the vehicle handler
- Dominic Ebner
- Daniel Esser
- Marcel Weinmann
- Ann-Kathrin Schwehn
- Sascha Büttner
- Frederik Werner
We also want to thank all other members of TUM Autonomous Motorsport for actively developing this library.