diff --git a/README.md b/README.md index ae407b62..a8916361 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Arbitration Graphs -![Latest Release](https://img.shields.io/github/v/release/KIT-MRT/arbitration_graphs?color=green) -![License](https://img.shields.io/github/license/KIT-MRT/arbitration_graphs) -![Unit Test Status](https://img.shields.io/github/actions/workflow/status/KIT-MRT/arbitration_graphs/run-unit-tests.yaml?branch=main&label=tests) +[![Latest Release](https://img.shields.io/github/v/release/KIT-MRT/arbitration_graphs?color=green)](https://github.com/KIT-MRT/arbitration_graphs/releases) +[![License](https://img.shields.io/github/license/KIT-MRT/arbitration_graphs)](./LICENSE) +[![Unit Test Status](https://img.shields.io/github/actions/workflow/status/KIT-MRT/arbitration_graphs/run-unit-tests.yaml?branch=main&label=tests)](https://github.com/KIT-MRT/arbitration_graphs/actions/workflows/run-unit-tests.yaml?query=branch%3Amain) **Hierarchical behavior models for complex decision-making and behavior generation in robotics!** @@ -32,6 +32,10 @@ TODO: add example arbitration graph from robotics (with POMDP, RL methods) Use tightly integrated verifiers to ensure that only safe and valid behavior commands are executed. - 🪂 **Graceful Degradation** Your behavior is unreliable or unsafe? Arbitrators will gracefully fall back to the next-best option. +- 📦 **Header-Only** + Simple integration – just include this header-only C++ library! +- 📜 **Permissive License** + Published under MIT license to ensure maximum flexibility for your projects. ## Demo @@ -73,18 +77,27 @@ We will shortly add a [tutorial](https://github.com/KIT-MRT/arbitration_graphs/p ## Installation -### Prerequisites +The `arbitration_graphs` library consists of two parts +- **Core** + This is what it's all about – base classes for arbitrators and behavior components, implementations of various arbitration schemes, behavior verification, … +- **GUI** *optional* + Draws a live visual representation of the arbitration state (full graph, currently active behavior, current costs of behaviors, …) in a WebApp GUI. Supports SVG export as the one above (great for publications). + +
+Prerequisites First make sure all dependencies are installed: - [glog](https://github.com/google/glog) -- [Googletest](https://github.com/google/googletest) (optional, if you want to build unit tests) -- [yaml-cpp](https://github.com/jbeder/yaml-cpp) - [util_caching](https://github.com/KIT-MRT/util_caching) +- [yaml-cpp](https://github.com/jbeder/yaml-cpp) +- [Googletest](https://github.com/google/googletest) (optional, if you want to build unit tests) - [Crow](https://crowcpp.org) (optional, needed for GUI only) See also the [`Dockerfile`](./Dockerfile) for how to install these packages under Debian or Ubuntu. +
-### Installation using Debian package (recommended) +
+Installation using Debian package (recommended) We provide a Debian package for easy installation on Debian-based distributions. Download the latest `.deb` packages for the [core library](https://github.com/KIT-MRT/arbitration_graphs/releases/latest/download/libarbitration-graphs-core-dev.deb) @@ -94,8 +107,26 @@ and optionally for [the gui](https://github.com/KIT-MRT/arbitration_graphs/relea sudo dpkg -i libarbitration-graphs-core-dev.deb sudo dpkg -i libarbitration-graphs-gui-dev.deb ``` +
-### Using Docker image with pre-installed library +
+Installation from .zip/.tar.gz + +As this is a header-only library, no platform-specific compilation is needed. +So, you can also install the files directly from our release [`.zip` or `.tar.gz` archives](https://github.com/KIT-MRT/arbitration_graphs/releases/latest): + +```bash +tar xf arbitration_graphs-core.tar.gz --directory=/ +tar xf arbitration_graphs-gui.tar.gz --directory=/ +``` + +This installs into `/usr/[include,lib,share]/arbitration_graphs`. +Please read [Serving the WebApp GUI](#serving-the-webapp-gui) below, if you consider custom installation paths and want to use the GUI. + +
+ +
+Using Docker image with pre-installed library We provide a Docker image with the library and all dependencies already installed globally. @@ -110,8 +141,10 @@ So, it can be easily loaded with CMake: find_package(arbitration_graphs REQUIRED) ``` +
-### Building from source using CMake +
+Building from source using CMake Clone the repository: @@ -132,10 +165,13 @@ sudo cmake --install . In order to skip compiling the GUI, use `cmake -DBUILD_GUI=false ..` instead. +
+ ## Development -### Using Docker image +
+Using Docker image Clone the repository and run the development image @@ -149,8 +185,11 @@ docker compose run --rm arbitration_graphs_devel This mounts the source into the container's `/home/blinky/arbitration_graphs` folder. There, you can edit the source code, compile and run the tests etc. +
-### Compiling unit tests + +
+Compiling unit tests In order to compile with tests define `BUILD_TESTS=true` ```bash @@ -166,8 +205,11 @@ Run all unit tests with CTest: cmake --build . --target test ``` +
+ -### Serving the WebApp GUI +
+Serving the WebApp GUI The GUI consists of - a web server with static WebApp files, see [`gui/app`](./gui/app) @@ -183,3 +225,117 @@ If you intend to override these, please use the `APP_DIRECTORY` environment vari ``` APP_DIRECTORY=/my/custom/app/path my_awesome_executable ``` + +
+ + +## Contributors + +This library and repo has been crafted with ❤️ by + +**Christoph Burger** +  + + + ChristophBurger89 + +  + + LinkedIn logo + christoph-burger + +  + + ORCID iD + 0009-0002-9147-8749 +
+**Nick Le Large** +  + + + ll-nick + +  + + LinkedIn logo + nick-le-large + +  + + ORCID iD + 0009-0006-5191-9043 +
+**Piotr Spieker** +  + + + orzechow + +  + + LinkedIn logo + piotr-spieker + +  + + ORCID iD + 0000-0002-0449-3741 + + +Christoph and Piotr coded the core in a pair-programming session. +Piotr also contributed the GUI and GitHub Page. +Nick implemented the awesome PacMan demo and tutorial, with drafting support by Christoph, reviews and finetuning by Piotr. + +The repository is maintained by Piotr Spieker  + + + orzechow + +and +Nick Le Large  + + + ll-nick +. + + +## Citation + +If you use arbitration graphs in your research, we would be pleased if you cite our work: + +```bibtex +@misc{spieker2024ArbitrationGraphs, + title={Better Safe Than Sorry: Enhancing Arbitration Graphs for Safe and Robust Autonomous Decision-Making}, + author={Piotr Spieker and Nick Le Large and Martin Lauer}, + year={2024}, + eprint={2411.10170}, + eprinttype = {arXiv}, + archivePrefix={arXiv}, + primaryClass={cs.RO}, + doi = {10.48550/arXiv.2411.10170}, + url={https://arxiv.org/abs/2411.10170}, +} + +@inproceedings{orzechowski2020ArbitrationGraphs, + title = {Decision-{{Making}} for {{Automated Vehicles Using}} a {{Hierarchical Behavior-Based Arbitration Scheme}}}, + booktitle = {Intelligent {{Vehicles Symposium}}}, + author = {Orzechowski, Piotr F. and Burger, Christoph and Lauer, Martin}, + date = {2020-10}, + pages = {767--774}, + publisher = {IEEE}, + location = {Las Vegas, NV, USA}, + issn = {2642-7214}, + doi = {10.1109/IV47402.2020.9304723}, +} + +@article{lauer2010CognitiveConceptsAutonomous, + title = {Cognitive Concepts in Autonomous Soccer Playing Robots}, + author = {Lauer, Martin and Hafner, Roland and Lange, Sascha and Riedmiller, Martin}, + date = {2010}, + journaltitle = {Cognitive Systems Research}, + volume = {11}, + number = {3}, + pages = {287--309}, + doi = {10.1016/j.cogsys.2009.12.003}, +} +``` diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss index 56f05937..d911bef1 100644 --- a/docs/assets/css/style.scss +++ b/docs/assets/css/style.scss @@ -13,3 +13,7 @@ // Add table of contents navbar @import 'toc'; + +img.github-logo { + content: url(/docs/assets/img/github-mark.svg); +} \ No newline at end of file diff --git a/docs/assets/img/In-Blue-128@2x.png b/docs/assets/img/In-Blue-128@2x.png new file mode 100755 index 00000000..4b3bd5f5 Binary files /dev/null and b/docs/assets/img/In-Blue-128@2x.png differ diff --git a/docs/assets/img/ORCID-iD_icon_vector.svg b/docs/assets/img/ORCID-iD_icon_vector.svg new file mode 100644 index 00000000..375b457a --- /dev/null +++ b/docs/assets/img/ORCID-iD_icon_vector.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/assets/img/github-mark-white.svg b/docs/assets/img/github-mark-white.svg new file mode 100644 index 00000000..d5e64918 --- /dev/null +++ b/docs/assets/img/github-mark-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/img/github-mark.svg b/docs/assets/img/github-mark.svg new file mode 100644 index 00000000..37fa923d --- /dev/null +++ b/docs/assets/img/github-mark.svg @@ -0,0 +1 @@ + \ No newline at end of file