From f1a4b7e1d0a4faab15c4d633010d4491635ef307 Mon Sep 17 00:00:00 2001 From: Nick Le Large Date: Thu, 29 Aug 2024 08:09:07 +0200 Subject: [PATCH] Add note about demo to readme --- README.md | 10 + docs/pacman_arbitrator_safe.svg | 887 ++++++++++++++++++++++++++++++++ docs/pacman_scenario.png | Bin 0 -> 23391 bytes 3 files changed, 897 insertions(+) create mode 100644 docs/pacman_arbitrator_safe.svg create mode 100644 docs/pacman_scenario.png diff --git a/README.md b/README.md index ce6bb8c3..4f894626 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,16 @@ Arbitration graphs combine simple atomic behavior blocks to more complex behaviors for decision making and behavior generation +## Demonstration + +We are currently working on a demonstration of this library using Pac-Man as an example application. + +

+ + +

+ +Feel free to take a look at the work in progress in the [pacman-demo branch](https://github.com/KIT-MRT/arbitration_graphs/tree/pacman-demo). ## Installation diff --git a/docs/pacman_arbitrator_safe.svg b/docs/pacman_arbitrator_safe.svg new file mode 100644 index 00000000..7bcc93b7 --- /dev/null +++ b/docs/pacman_arbitrator_safe.svg @@ -0,0 +1,887 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Chase Ghost + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Avoid Ghost + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Eat Closest Dot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Change Dot Cluster + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Eat Dots + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Move Randomly + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stay In Place + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pacman Agent + + + + diff --git a/docs/pacman_scenario.png b/docs/pacman_scenario.png new file mode 100644 index 0000000000000000000000000000000000000000..66a62ce15512a4a889a609d863c79e3d30ecbe7d GIT binary patch literal 23391 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 literal 0 HcmV?d00001