Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
142 commits
Select commit Hold shift + click to select a range
ee8151d
fixed the zoom symbols and size for consistency
behnamxxorta Apr 14, 2026
7f9d4d3
Removed the Editor tab on the Setupscreen
behnamxxorta Apr 14, 2026
0ae52b1
impl traffic rules preview for config files fix
dan-moraru Apr 14, 2026
89af036
code cleanup: MainApp, AppState, SimulationDevLauncher
snitilf Apr 14, 2026
4ea89d2
code cleanup: util/ batch
snitilf Apr 14, 2026
70192e1
Merge pull request #93 from dan-moraru/dan-fix
mfsohail12 Apr 14, 2026
7577ae6
code cleanup: controllers first third
snitilf Apr 14, 2026
5ac103a
code cleanup: controllers batch 2. removed section dividers and AI sl…
snitilf Apr 14, 2026
ab95f31
fixes UI : drag ghost icon, tab button consistency, canvas sizing, se…
behnamxxorta Apr 14, 2026
a50afb2
Changed some tests to fix the UI adjustments
behnamxxorta Apr 14, 2026
41e924d
refactor(LoggerTest): update tests to utilize DB logger mode and enha…
tnlyr Apr 14, 2026
efd75a5
test(ExitConfirmController): documentation
tnlyr Apr 14, 2026
6e537eb
test(ExportResultsController): enhance documentation f
tnlyr Apr 14, 2026
58cd785
test(LoadConfigController): enhance documentation
tnlyr Apr 14, 2026
7ae70df
test(ObjectDescController): enhance documentation
tnlyr Apr 14, 2026
47f1927
test(ResultsController): enhance documentation
tnlyr Apr 14, 2026
404b884
test(SaveConfigController): enhance documentation
tnlyr Apr 14, 2026
768e286
test(SetupController): enhance documentation
tnlyr Apr 14, 2026
4e24c5c
test(SimulationController): enhance documentation
tnlyr Apr 14, 2026
9727052
test(WelcomeController): enhance documentation
tnlyr Apr 14, 2026
1d613d4
test(DaoConstraintFailureTest): enhance documentation
tnlyr Apr 14, 2026
b611d8c
test(DaoIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
6506cd4
test(DatabaseLifecycleTest): enhance documentation
tnlyr Apr 14, 2026
f223f90
test(ConfigRoundTripReservationKIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
36bc38b
test(ConfigRoundTripTrafficRulesIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
c6f1f53
test(SimulationConfigNegativeIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
a156858
test(SimulationPersistenceIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
55445a0
test(LongRunningSimulationRegressionTest): enhance documentation
tnlyr Apr 14, 2026
34799fd
test(ReservationKIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
aa45c9c
test(SimulationChargingIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
b6a654c
refactor(SimulationChargingIntegrationTest): remove unused import for…
tnlyr Apr 14, 2026
c02597d
test(SimulationDispatcherIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
c5bda2d
test(SimulationIdleLoopIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
8aaba61
test(SimulationTaskFlowIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
2c8eec5
test(TrafficRulesIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
d3c72c3
test(NavigationFlowIntegrationTest): enhance documentation
tnlyr Apr 14, 2026
681825d
test(SimulationIntegrationTestSupport): enhance documentation
tnlyr Apr 14, 2026
2cf0191
Merge pull request #95 from dan-moraru/QA-and-frontend-behnam
dan-moraru Apr 14, 2026
5768003
fixed simulation not stopping if the map configuration is invalid
mfsohail12 Apr 15, 2026
7caaafd
fixed sim running when no robots added
mfsohail12 Apr 15, 2026
2dfdcac
code cleanup: WelcomeController
snitilf Apr 15, 2026
830a57c
delete(LoggerTest): remove obsolete unit tests for Logger functionality
tnlyr Apr 15, 2026
1b7daab
test(LoggerTest): documentation
tnlyr Apr 15, 2026
07220d7
test(RackTest): enhance documentation
tnlyr Apr 15, 2026
11eedf6
test(BugNavigationStrategyTest): enhance documentation
tnlyr Apr 15, 2026
7628ecc
test(GreedyNavigationStrategyTest): enhance documentation
tnlyr Apr 15, 2026
ec6cef3
test(RandomNavigationTest): enhance documentation
tnlyr Apr 15, 2026
b3515d2
test(RtaStarNavigationStrategyTest): enhance documentation
tnlyr Apr 15, 2026
cdd04cb
test(AlgorithmTypeTest): documentation
tnlyr Apr 15, 2026
9467fb3
test(RobotAdvancedTest): enhance documentation
tnlyr Apr 15, 2026
78c2e86
test(RobotTest): enhance documentation
tnlyr Apr 15, 2026
8a5dcd6
test(ReservationKPolicyTest): enhance documentation
tnlyr Apr 15, 2026
61f0581
test(SimulationEngineConfigLoadTest): enhance documentation
tnlyr Apr 15, 2026
fbacd18
test(SimulationEngineDeadlockRecoveryTest): documentation + reindexed…
tnlyr Apr 15, 2026
b37767f
test(SimulationEngineFinishedTest): enhance documentation
tnlyr Apr 15, 2026
eca5af8
test(SimulationEngineTest): enhance documentation
tnlyr Apr 15, 2026
1211db1
test(TrafficRulesPolicyTest): enhance documentation
tnlyr Apr 15, 2026
b6e3483
javadoc: Vector2D, Tile, MapEntity, Map. normalized all javadoc to cl…
snitilf Apr 15, 2026
9ed0f9a
test(TaskGeneratorManualModeTest): enhance documentation
tnlyr Apr 15, 2026
cdd0780
test(TaskGeneratorTest): enhance documentation
tnlyr Apr 15, 2026
69e3d99
test(IconLoaderTest): enhance documentation
tnlyr Apr 15, 2026
4c3aa98
test(ScreenNavigatorTest): enhance documentation
tnlyr Apr 15, 2026
4c6527f
test(ViewportTipsTest): enhance documentation
tnlyr Apr 15, 2026
32b3900
test(AppStateTest): enhance documentation
tnlyr Apr 15, 2026
3a2d5dd
test(MainAppTest): enhance documentation
tnlyr Apr 15, 2026
5948444
javadoc: Obstacle, Rack, Station, ChargingStation, DeliveryStation
snitilf Apr 15, 2026
962a2e6
javadoc: Direction, ApplicationConfig
snitilf Apr 15, 2026
62a8266
refactor(SimulationControllerTest): updated invalid map configuration…
tnlyr Apr 15, 2026
909bf72
javadoc; robot/ and util/ and root
snitilf Apr 15, 2026
edd9b02
javadoc: task/ and removing uml references
snitilf Apr 15, 2026
46fdd4e
javadoc: simulationcore/ clean up and reformatting
snitilf Apr 15, 2026
93e300c
feat: add Launcher class as entry point for JAR to bypass JavaFX clas…
tnlyr Apr 15, 2026
17cb1f6
feat: update pom.xml to set final JAR name, change main class for sta…
tnlyr Apr 15, 2026
6e8e7e8
javadoc: db/dao/ completed
snitilf Apr 15, 2026
e0d99b6
simengine comment removal
snitilf Apr 15, 2026
7ebe34f
Merge pull request #98 from dan-moraru/test-documentation
dan-moraru Apr 15, 2026
6a92219
Merge pull request #99 from dan-moraru/pkged-jar
dan-moraru Apr 15, 2026
68aed3e
fixed robots going idle if there are no charging stations on the map.…
mfsohail12 Apr 15, 2026
7a2db4a
fix strict config load and saving
dan-moraru Apr 15, 2026
39ba470
updated advanced robot test to reflect changes to handling no chargin…
mfsohail12 Apr 15, 2026
f48724e
write javadocs
dan-moraru Apr 15, 2026
bd89156
Merge pull request #100 from dan-moraru/sim-fail-on-invalid-map-config
dan-moraru Apr 15, 2026
8bf2c35
feat(simulation): support drag, copy, and paste for intersection tiles
novruzoff Apr 15, 2026
477b497
feat(simulation): reset the dragStartIntersection field
novruzoff Apr 15, 2026
9707173
fix outliner properties bug
dan-moraru Apr 15, 2026
a665524
Merge branch 'dev' of https://github.com/dan-moraru/OpenRobotics into…
dan-moraru Apr 15, 2026
2f72388
feat(simulation): extend clipboard to support intersection copy/paste
novruzoff Apr 15, 2026
841b4b0
feat(simulation): handle intersection paste in pasteClipboard
novruzoff Apr 15, 2026
3086f95
fix(simulation): unify intersection selection highlight to match enti…
novruzoff Apr 15, 2026
3751c44
fix(simulation): use full-tile hit test for intersection selection to…
novruzoff Apr 15, 2026
bcb0d35
fix(simulation): reset dragStartIntersection on blank tile click to p…
novruzoff Apr 15, 2026
bdd284f
fix(simulation): log intersection move on drag release
novruzoff Apr 15, 2026
d73b794
Merge pull request #101 from dan-moraru/dan-fix
mfsohail12 Apr 15, 2026
c215d7e
feat(simulation): add undo/redo support for intersection add, delete,…
novruzoff Apr 15, 2026
3753258
javadoc: db/model/
snitilf Apr 15, 2026
4744cb2
javadoc: db/recordbuilders/
snitilf Apr 15, 2026
107a8d1
javadoc: root db and io/
snitilf Apr 15, 2026
2552b69
javadoc: logging/
snitilf Apr 15, 2026
7168da9
javadoc: controllers/ except setup and simulation
snitilf Apr 15, 2026
600c499
fix save config stuff
dan-moraru Apr 15, 2026
6839dba
javadoc: controllers/ simcontroller
snitilf Apr 15, 2026
74d5029
Merge pull request #102 from dan-moraru/dan-fix
mfsohail12 Apr 15, 2026
39ffff5
javadoc: controllers/ fully completed
snitilf Apr 16, 2026
6b1c4dc
fixed bug: dead robots cant block intersections
daniblac Apr 16, 2026
91f79fb
fixed bug: resetting after switching to ResultsScreen and back to Edi…
daniblac Apr 16, 2026
cb333b7
fixed bug: logs stay the same when switching to ResultsScreen and bac…
daniblac Apr 16, 2026
737b110
new readme
snitilf Apr 16, 2026
a201092
added restoring localTick on UI after switching screens
mfsohail12 Apr 16, 2026
042cb0c
Merge pull request #103 from dan-moraru/danny-testing
dan-moraru Apr 16, 2026
f8d5609
Update README.md
dan-moraru Apr 16, 2026
469d201
fixed preset maps auto generating 10 tasks even if on manual task ass…
mfsohail12 Apr 16, 2026
203c537
fix offset maps
dan-moraru Apr 16, 2026
180f79b
Updated manual task assignment to configure every rack to have 0 task…
mfsohail12 Apr 16, 2026
a1c3c77
fixed event listeners in SimulationController.showPropertiesFor() loo…
mfsohail12 Apr 16, 2026
dda5f07
Merge branch 'dev' into fixing-manual-task-assignment-issues
mfsohail12 Apr 16, 2026
a002da5
impl data validation in setup screen
dan-moraru Apr 16, 2026
a320a8a
removed logging related to task events
mfsohail12 Apr 16, 2026
de63c92
fix robot battery property validation
dan-moraru Apr 16, 2026
522eb05
Merge pull request #106 from dan-moraru/removing-logging-task-events
dan-moraru Apr 16, 2026
c4c73c4
fix comments
dan-moraru Apr 16, 2026
b89a3b5
Merge branch 'dev' of https://github.com/dan-moraru/OpenRobotics into…
dan-moraru Apr 16, 2026
fbcc683
fix new icon for delivery station
dan-moraru Apr 16, 2026
2776cb8
Merge branch 'dev' into fixing-manual-task-assignment-issues
mfsohail12 Apr 16, 2026
f98ff80
fixed some tests
mfsohail12 Apr 16, 2026
c7f05b3
Merge pull request #104 from dan-moraru/dan-fix
mfsohail12 Apr 16, 2026
eaebc9e
impl locked params when load config file
dan-moraru Apr 16, 2026
8cc53bf
fixed sim engine tests
mfsohail12 Apr 16, 2026
1f75de9
Merge branch 'dev' into fixing-manual-task-assignment-issues
mfsohail12 Apr 16, 2026
51360c4
fix setup controller version
dan-moraru Apr 16, 2026
27f5429
fix data validation on rack amount of tasks
dan-moraru Apr 16, 2026
389f5e0
more meaningful dropoff assignment cancellation message
mfsohail12 Apr 16, 2026
44254bc
Merge pull request #105 from dan-moraru/fixing-manual-task-assignment…
mfsohail12 Apr 16, 2026
5b0444a
Merge branch 'dev' of https://github.com/dan-moraru/OpenRobotics into…
dan-moraru Apr 16, 2026
c1908d1
Merge pull request #108 from dan-moraru/dan-fix
mfsohail12 Apr 17, 2026
3e1c9d5
impl locked params when load config file
dan-moraru Apr 16, 2026
1ae1fee
fix setup controller version
dan-moraru Apr 16, 2026
f4ea753
removed auto generating tasks in SetupController to avoid disconnect …
mfsohail12 Apr 17, 2026
43bec60
fixed setup controller tests
mfsohail12 Apr 17, 2026
dd482fd
fixed robot moving after sim fail
mfsohail12 Apr 17, 2026
1d94cf9
Merge pull request #110 from dan-moraru/fix-robot-moving-after-sim-fail
mfsohail12 Apr 17, 2026
66e1c56
Merge branch 'dev' into auto-gen-task-on-play-only
mfsohail12 Apr 17, 2026
7030c9e
Merge pull request #109 from dan-moraru/auto-gen-task-on-play-only
mfsohail12 Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
242 changes: 195 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,80 +1,224 @@
# OpenRobotics
Multi-Robot Warehouse Simulation Platform

Check the repo's Project tab for the Kanban board.
<p align="center">
<img src="docs/images/Logo@4xcolor%203.png" alt="OpenRobotics logo" width="220">
</p>

## Description
<p align="center"><strong>Multi-Robot Warehouse Simulation Platform</strong></p>

OpenRobotics is a JavaFX-based warehouse simulation platform where multiple autonomous robots navigate a configurable warehouse environment to complete pickup and delivery tasks. The simulation supports multiple navigation algorithms (Greedy, Bug, RTA*), coordination policies (Traffic Rules, Reservation-K), real-time 2D visualization, a heatmap overlay, and a results screen with per-robot statistics logged to a remote PostgreSQL database.
<p align="center">
<a href="https://github.com/dan-moraru/OpenRobotics/actions/workflows/ci.yml"><img src="https://github.com/dan-moraru/OpenRobotics/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html"><img src="https://img.shields.io/badge/Java-21-007396?logo=openjdk&logoColor=white" alt="Java 21"></a>
<a href="https://openjfx.io/"><img src="https://img.shields.io/badge/JavaFX-21-0A88FF" alt="JavaFX 21"></a>
<a href="https://maven.apache.org/"><img src="https://img.shields.io/badge/Maven-Build-C71A36?logo=apachemaven&logoColor=white" alt="Maven"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="MIT License"></a>
</p>

OpenRobotics is a JavaFX-based warehouse simulation platform where multiple autonomous robots navigate a configurable warehouse environment to complete pickup and delivery tasks. The simulation supports multiple navigation algorithms, coordination policies, real-time 2D visualization, a heatmap overlay, and a results screen with per-robot statistics that can also be logged to a PostgreSQL database.

At its core, the project is aimed at studying how warehouse workloads can be completed efficiently and reliably using teams of robots, and what trade-offs emerge among fleet size, throughput, task distribution, and workload completion time under different navigation and coordination designs.

## Table of Contents

- [Features](#features)
- [Built With](#built-with)
- [Navigation and Coordination](#navigation-and-coordination)
- [Architecture Overview](#architecture-overview)
- [Quick Start](#quick-start)
- [Development Commands](#development-commands)
- [Testing and CI](#testing-and-ci)
- [Documentation](#documentation)
- [Project Structure](#project-structure)
- [Authors](#authors)
- [License](#license)

## Features

- 4 screens: Welcome, Setup, Simulation Editor, Results
- Config file loading and saving (JSON)
- Template maps and random map generation
- Drag-and-drop entity placement in the editor
- Navigation algorithms: Greedy, Bug, RTA*
- Coordination policies: None, Traffic Rules, Reservation-K
- Proximity and range sensors per robot
- Deadlock detection and recovery
- Heatmap visualization
- Per-robot statistics: distance, energy, tasks completed, idle ticks
- Results export and database logging (PostgreSQL via Supabase)
- Config file loading and saving in JSON format.
- Template maps and random map generation.
- Drag-and-drop entity placement in the simulation editor.
- Navigation algorithms: Greedy, Bug, and RTA*.
- Coordination policies: None, Traffic Rules, and Reservation-K.
- Proximity and range sensors per robot.
- Deadlock detection and recovery.
- Heatmap visualization.
- Per-robot statistics, including distance, energy, tasks completed, and idle ticks.
- Results export and optional PostgreSQL logging.

## Built With

| Category | Technology | Version | Notes |
| --- | --- | --- | --- |
| Language | Java | 21 | Primary application language |
| UI | JavaFX | 21 | Desktop UI framework |
| Build | Maven | N/A | Build, test, and packaging |
| Database | PostgreSQL | N/A | Optional run logging |
| DB Migrations | Flyway | 10.17.0 | Schema migration management |
| Connection Pooling | HikariCP | 5.1.0 | Shared JDBC connection pool |
| JSON | Jackson Databind | 2.16.1 | Config and export serialization |
| Logging Backend | Logback Classic | 1.5.16 | Logging implementation |
| Unit Testing | JUnit Jupiter | 5.10.1 | Test framework |
| UI Testing | TestFX | 4.0.18 | JavaFX UI tests |
| Coverage | JaCoCo | 0.8.12 | Coverage reporting |
| Mutation Testing | PIT | 1.22.0 | Mutation testing profile |

## Navigation and Coordination

### Navigation Algorithms

- **Greedy**: moves toward the target using Manhattan distance, with deterministic tie-breaking, sensor-aware preference, and backtracking when necessary.
- **Bug**: uses a Bug2-style approach that alternates between direct goal-seeking and left-hand boundary following around obstacles.
- **RTA\***: uses Real-Time A* with a per-robot learned heuristic table while keeping transient sensor penalties separate from learned costs.

### Coordination Policies

- **None**: robots follow their move intentions without additional coordination filtering.
- **Traffic Rules**: marked intersection tiles are treated as exclusive regions, with entry prioritized by wait time and load status.
- **Reservation-K**: a robot must reserve the next `k` tiles on its path before moving, reducing head-on and path-overlap conflicts.

## Architecture Overview

The codebase is organized into a few clear subsystems:

- **Application and UI**: JavaFX screens, controllers, styling, and navigation utilities.
- **Simulation Core**: engine tick loop, dispatcher, coordination policies, and collision handling.
- **Robot Domain**: robot state, algorithms, and sensor models.
- **Map Domain**: tiles, vectors, map entities, and environment objects.
- **Tasking**: task generation, lifecycle, and assignment support.
- **Persistence and Logging**: database access, Flyway migrations, DAO layer, and run/event logging.
- **Configuration and I/O**: JSON config loading, saving, and export DTOs.

## Quick Start

### Prerequisites

- Java 21
- Maven

### Clone and Run

1. Clone the repository:

```bash
git clone https://github.com/dan-moraru/OpenRobotics.git
cd OpenRobotics/open-robotics
```

2. Start the application:

```bash
mvn clean javafx:run
```

From the repository root, you can alternatively use the helper script:

```bash
./build.sh
```

### Optional Database Setup

## Dev Install
Database-backed logging is optional. If no database configuration is available, the application still starts, but remote logging features are unavailable.

1. Make sure you have `Java SDK 21` or higher
2. Clone the [repo](https://github.com/dan-moraru/OpenRobotics)
3. Set up the database config file (see Database Setup below)
4. Open a terminal and run `cd open-robotics`
5. Run `mvn clean javafx:run` or use the IDE's integrated Maven tool window
For local development, copy the provided example file:

### Database Setup
```bash
cp src/main/resources/application.config.example src/main/resources/application.config
```

The app connects to a remote PostgreSQL database hosted on Supabase for logging simulation results. Create the file `open-robotics/application.config` with the following content (fill in your credentials):
Then edit `src/main/resources/application.config` with your credentials:

```properties
db.url=jdbc:postgresql://<host>:5432/postgres?sslmode=require
db.user=<user>
db.password=<password>
```
DB_URL=jdbc:postgresql://<host>:5432/postgres?sslmode=require
DB_USER=<user>
DB_PASSWORD=<password>

Environment variables `DB_URL`, `DB_USER`, and `DB_PASSWORD` are also supported and take precedence over file values.

### Sample Configurations

The repository includes several sample JSON configurations under `configs/` inside the `open-robotics` module. Examples include:

- `warehouse-config.json`
- `warehouse_2.json`
- `test_scenario.json`

### Standalone Packaging

To build the standalone packaged JAR:

```bash
mvn clean package -Pfat-jar -DskipTests
```

This file is gitignored and must be created locally. Without it, the app will still run but database logging will be unavailable.
This packaging profile bundles JavaFX dependencies for Windows, macOS, and Linux. The standalone shaded artifact is generated under:

```text
target/open-robotics-<version>-standalone.jar
```

## Dev Usage
## Development Commands

Make sure you are in the `open-robotics` directory before running these commands:
Run these commands from the `open-robotics` directory:

- Run program: `mvn clean javafx:run`
- Run the app: `mvn clean javafx:run`
- Compile only: `mvn compile`
- Run all tests: `mvn test`
- Run verification and coverage: `mvn clean verify`
- Run mutation tests: `mvn test -Pmutation`
- Build program to JAR: `mvn package -DskipTests`
- Compile only: `mvn compile`
- Build packaged artifacts: `mvn package -DskipTests`
- Build the standalone packaged JAR: `mvn package -Pfat-jar -DskipTests`
- Clean old artifacts: `mvn clean`
- Show dependencies: `mvn dependency:tree`

You can also run any of these through the IDE's integrated Maven tool window.
## Testing and CI

The project currently includes **64 test classes** under `src/test/java`, covering hundreds of unit, UI, and integration test cases.

- **Unit and UI tests** run through Maven and include TestFX-based controller and UI coverage.
- **Coverage reporting** is generated via JaCoCo during `mvn clean verify`.
- **Mutation testing** is available through the `mutation` Maven profile.

The repository also includes a GitHub Actions CI workflow that:

- Runs on pushes and pull requests targeting `main` and `dev`.
- Uses Temurin JDK 21.
- Executes `mvn clean verify` from the `open-robotics` module.
- Uploads Surefire and JaCoCo artifacts.

## Documentation

Additional project documents are available in [`docs/`](docs):

- [Project Pitch](docs/Project%20Pitch%20-%20OpenRobotics.pdf)
- [Specification Document](docs/Specification%20Document%20-%20OpenRobotics.pdf)
- [Design Document](docs/Design%20Document%20-%20OpenRobotics.pdf)

## Project Structure

```
```text
open-robotics/
├── src/main/java/com/openrobotics/
│ ├── MainApp.java # Entry point
│ ├── MainApp.java # JavaFX application entry point
│ ├── Launcher.java # Plain main class for packaged JAR launch
│ ├── controllers/ # FXML screen controllers
│ ├── db/ # DAO layer, models, record builders
│ ├── io/ # Config file loading and saving
│ ├── db/ # DAO layer, models, record builders, database access
│ ├── io/ # Config file loading, saving, and export DTOs
│ ├── logging/ # Logger and event types
│ ├── map/ # Map, Tile, Vector2D, entities
│ ├── robot/ # Robot, navigation, sensors
│ ├── simulationcore/ # Engine, dispatcher, policies
│ ├── task/ # Task, TaskGenerator, TaskStatus
│ └── util/ # ScreenNavigator, IconLoader, etc.
├── src/main/resources/com/openrobotics/
│ ├── css/theme.css # Global stylesheet
│ ├── fxml/ # Screen and dialog FXML files
│ └── img/ # Logo and entity icons
├── src/main/resources/db/migration/ # Flyway SQL migration scripts
│ ├── map/ # Map, tile, vector, and entity types
│ ├── robot/ # Robot model, navigation, and sensors
│ ├── simulationcore/ # Engine, dispatcher, policies, and collision handling
│ ├── task/ # Task generation and task lifecycle
│ └── util/ # Screen navigation, icon loading, viewport tips, and helpers
├── src/main/resources/
│ ├── application.config.example # Example local database config
│ ├── com/openrobotics/fxml/ # FXML screen and dialog layouts
│ ├── com/openrobotics/css/ # Global stylesheet
│ ├── com/openrobotics/img/ # Logo and simulation assets
│ └── db/migration/ # Flyway SQL migrations
├── src/test/java/com/openrobotics/ # Unit, integration, and UI tests
├── configs/ # Saved JSON simulation configs
└── pom.xml
```

Expand All @@ -88,3 +232,7 @@ open-robotics/
- Muhammad Sohail, 261142698
- Murad Novruzov, 261164063
- Behnam Yosufi, 261125449

## License

Distributed under the MIT License. See [`LICENSE`](LICENSE) for details.
6 changes: 3 additions & 3 deletions open-robotics/configs/..valid.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"config" : {
"runId" : "641949f5-3dbe-43c8-ad7b-cfeb1b222f18",
"runId" : "ebc72ee6-96dc-4bb3-a878-6f8e7df4cf02",
"runName" : "default_run",
"tickMs" : 100,
"maxTicks" : 5000,
Expand All @@ -15,14 +15,14 @@
"manualTaskAssignment" : false
},
"map" : {
"mapId" : "5b307bf9-e784-4863-8250-7367bf3d6560",
"mapId" : "4ef3d4b7-a31b-4aab-8064-b16b7de126b6",
"width" : 8,
"height" : 8,
"tiles" : [ ]
},
"entities" : {
"robots" : [ {
"id" : "cef66328-ce04-4d1c-8217-57ab1a8c4f93",
"id" : "bb6e0a02-c19d-4200-9c79-8c2f0feb95e3",
"name" : "R1",
"position" : {
"x" : 1,
Expand Down
13 changes: 9 additions & 4 deletions open-robotics/configs/observalble_deadlock.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
"chargePerTick" : 5.0,
"energyPerMove" : 1.0,
"loadingTicks" : 1,
"unloadingTicks" : 1
"unloadingTicks" : 1,
"maxTasks" : 10,
"manualTaskAssignment" : false
},
"map" : {
"mapId" : "e8b76c63-4505-499e-8070-4eb32d17b96e",
Expand Down Expand Up @@ -93,7 +95,8 @@
},
"type" : null,
"boxCount" : 1,
"validDropoffIds" : null
"validDropoffIds" : null,
"manualDropoffAssignment" : false
}, {
"id" : "2222aaaa-2222-4222-a222-222222222222",
"name" : "Rack-02",
Expand All @@ -103,7 +106,8 @@
},
"type" : null,
"boxCount" : 1,
"validDropoffIds" : null
"validDropoffIds" : null,
"manualDropoffAssignment" : false
}, {
"id" : "3333aaaa-3333-4333-a333-333333333333",
"name" : "Rack-03",
Expand All @@ -113,7 +117,8 @@
},
"type" : null,
"boxCount" : 1,
"validDropoffIds" : null
"validDropoffIds" : null,
"manualDropoffAssignment" : false
} ],
"obstacles" : [ {
"id" : "f0000000-0000-4000-a000-000000000001",
Expand Down
Loading
Loading