Skip to content

Commit f363b25

Browse files
authored
Create control backend for simulator (#3)
* Migrate to tokio * Controller server * Define config default values * Stop simulation * Update antares-python with new settings * Update CLI tests * Update docs * Remove old web projects * Update antares-web project * update READMEs * Update simulator * Add custom rust release action * Update docs
1 parent 6adf0ce commit f363b25

File tree

180 files changed

+17492
-4878
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+17492
-4878
lines changed

.github/workflows/deploy-docs.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Deploy Docs to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
jobs:
14+
deploy-docs:
15+
runs-on: ubuntu-latest
16+
name: Build and Deploy Documentation
17+
18+
steps:
19+
- name: Checkout repository
20+
uses: actions/checkout@v4
21+
22+
- name: Setup GitHub Pages
23+
uses: actions/configure-pages@v4
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: '20'
29+
30+
- name: Setup Ruby
31+
uses: ruby/setup-ruby@v1
32+
with:
33+
ruby-version: '3.1'
34+
35+
- name: Generate Docs with Chirpy
36+
uses: jsurrea/[email protected]
37+
with:
38+
docs-dir: docs
39+
40+
- name: Upload site artifact
41+
uses: actions/upload-pages-artifact@v3
42+
with:
43+
path: theme/_site
44+
45+
- name: Deploy to GitHub Pages
46+
uses: actions/deploy-pages@v4

.github/workflows/rust-release.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Rust Release
2+
3+
permissions:
4+
contents: write
5+
6+
on:
7+
push:
8+
tags:
9+
- "v*.*.*"
10+
11+
jobs:
12+
create-release:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: taiki-e/create-gh-release-action@v1
17+
with:
18+
# (optional) Path to changelog.
19+
# changelog: CHANGELOG.md
20+
# (required) GitHub token for creating GitHub Releases.
21+
token: ${{ secrets.GITHUB_TOKEN }}
22+
23+
upload-assets:
24+
needs: create-release
25+
defaults:
26+
run:
27+
working-directory: antares
28+
strategy:
29+
matrix:
30+
include:
31+
- target: x86_64-unknown-linux-gnu
32+
os: ubuntu-latest
33+
- target: x86_64-apple-darwin
34+
os: macos-latest
35+
- target: x86_64-pc-windows-msvc
36+
os: windows-latest
37+
runs-on: ${{ matrix.os }}
38+
steps:
39+
- uses: actions/checkout@v4
40+
- uses: taiki-e/upload-rust-binary-action@v1
41+
with:
42+
# (required) Comma-separated list of binary names (non-extension portion of filename) to build and upload.
43+
# Note that glob pattern is not supported yet.
44+
bin: ...
45+
# (optional) Target triple, default is host triple.
46+
# This is optional but it is recommended that this always be set to
47+
# clarify which target you are building for if macOS is included in
48+
# the matrix because GitHub Actions changed the default architecture
49+
# of macos-latest since macos-14.
50+
target: ${{ matrix.target }}
51+
# (optional) On which platform to distribute the `.tar.gz` file.
52+
# [default value: unix]
53+
# [possible values: all, unix, windows, none]
54+
tar: unix
55+
# (optional) On which platform to distribute the `.zip` file.
56+
# [default value: windows]
57+
# [possible values: all, unix, windows, none]
58+
zip: windows
59+
# (optional) Archive name (non-extension portion of filename) to be uploaded.
60+
# [default value: $bin-$target]
61+
# [possible values: the following variables and any string]
62+
# variables:
63+
# - $bin - Binary name (non-extension portion of filename).
64+
# - $target - Target triple.
65+
# - $tag - Tag of this release.
66+
# When multiple binary names are specified, default archive name or $bin variable cannot be used.
67+
archive: $bin-$tag-$target
68+
# (required) GitHub token for uploading assets to GitHub Releases.
69+
token: ${{ secrets.GITHUB_TOKEN }}

README.md

Lines changed: 39 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,63 @@
1-
# ANTARES: A Software-Based Tool for Simulating Naval Radar Operations
1+
# ANTARES
22

3-
This repository contains the source code for ANTARES, a comprehensive naval radar simulation system designed to meet the operational needs of maritime security and training for the Colombian Navy. The system combines cutting-edge technology with modular and extensible architecture, providing a robust solution for naval simulation, real-time visualization, and tactical evaluation.
3+
**ANTARES** is an open-source, high-performance simulation platform for naval radar operations. It enables real-time, software-based simulation of maritime environments and radar tracking systems, with support for interactive visualization, TCP-based integration, and extensible simulation entities.
44

5-
## 🚢 **Project Overview**
5+
Developed with performance, modularity, and realism in mind, ANTARES supports both standalone and embedded use in larger C4I or Combat Management System (CMS) pipelines.
66

7-
### **Introduction**
7+
> 🧭 Showcase and live demos available at: [https://thesoftwaredesignlab.github.io/ANTARES](https://thesoftwaredesignlab.github.io/ANTARES)
88
9-
The project is aimed at developing an advanced naval radar simulator, capable of real-time detection, monitoring, and tracking of vessels in a simulated maritime environment. It supports realistic training, mission planning, and operational readiness, enhancing the Colombian Navy's capabilities and positioning it as a regional leader in naval technology.
9+
## Key Features
1010

11-
### **Objective**
11+
-**Real-Time Radar Simulation**
12+
Sub-10ms latency for real-time generation and transmission of radar data.
1213

13-
- To design and implement a radar simulation system for generating and visualizing real-time data on vessel positions and movements in a simulated naval setting.
14+
- 🧱 **Modular & Extensible Architecture**
15+
Easily add new vessel behaviors, emitter types, or environmental effects.
1416

15-
## 📂 **Repository Structure**
17+
- 🔒 **Secure & Standardized Communication**
18+
Transmit simulation data over TCP and WebSocket using standardized schemas.
1619

17-
The repository is divided into three major components, each with its own dedicated subdirectory and README file for further details:
20+
- 🖥️ **Intuitive Web Interface**
21+
A reactive, interactive GUI for real-time control and visualization.
1822

19-
### 1. **[Naval Radar Simulator](./naval-radar-simulator)**
23+
- 🚀 **High-Performance Core in Rust**
24+
Safety and speed for heavy computations and concurrent streaming.
2025

21-
- Implements the radar simulation engine, responsible for generating radar data in real-time.
22-
- Developed in **Rust**, prioritizing:
23-
- High performance.
24-
- Security and low-level control.
25-
- Configurability via TOML configuration files.
26-
- Real-time data is transmitted using TCP sockets.
27-
- Modular design supports extensibility for new features such as movement patterns, physical conditions, and custom tracking algorithms.
26+
## Repository Structure
2827

29-
**Instructions to Run**:
28+
This monorepo contains all components of the ANTARES platform:
3029

31-
```bash
32-
cd naval-radar-simulator
33-
cargo run -- <config-file>
3430
```
35-
36-
Replace `<config-file>` with the path to the desired TOML configuration file. Further setup instructions can be found in the subdirectory's [README](./naval-radar-simulator/README.md).
37-
38-
### 2. **[Naval Radar Web UI](./naval-radar-web-ui)**
39-
40-
- A **React-based user interface** for visualizing radar data.
41-
- Features include:
42-
- Real-time radar display with panning and zoom functionality.
43-
- Chat and control interface for interacting with the radar simulation.
44-
- Communication with the radar engine using WebSockets.
45-
46-
**Instructions to Run**:
47-
48-
```bash
49-
cd naval-radar-web-ui
50-
npm install
51-
npm start
31+
ANTARES/
32+
├── antares/ # Core simulator (Rust)
33+
├── antares-python/ # Python client SDK
34+
├── antares-web/ # Web-based interface and dashboard (TypeScript + React)
35+
├── docs/ # Markdown source for documentation website
36+
├── LICENSE # MIT License
37+
└── README.md # You're here
5238
```
5339

54-
Open the interface in your browser at `http://localhost:5173`. Detailed information is available in the subdirectory's [README](./naval-radar-web-ui/README.md).
55-
56-
### 3. **[Naval Radar Reverse Proxy](./naval-radar-reverse-proxy)**
57-
58-
- Handles WebSocket connections between the web UI and radar simulation engine.
59-
- Ensures secure and optimized data transfer.
60-
- Configured to work seamlessly with both the simulation and web UI components.
61-
62-
**Instructions to Run**:
63-
64-
```bash
65-
cd naval-radar-reverse-proxy
66-
npm install
67-
npm start
68-
```
69-
70-
Configuration details can be found in the subdirectory's [README](./naval-radar-reverse-proxy/README.md).
71-
72-
## 🔧 **Key Features**
73-
74-
- **Real-Time Radar Simulation**: Sub-10ms latency for precise real-time data.
75-
- **Extensibility**: Modular architecture allows integration of new entities and algorithms.
76-
- **Secure Communication**: Data is transmitted securely via standardized TCP and WebSocket protocols.
77-
- **Intuitive User Interface**: A highly interactive, user-friendly web interface for visualization and control.
78-
- **High Performance**: Built in Rust for efficient handling of radar computations and data streaming.
79-
80-
## 📊 **Results and Impact**
81-
82-
The simulator achieves its objectives by:
40+
Each subproject includes its own README with installation and usage instructions.
8341

84-
1. Offering real-time, precise radar tracking.
85-
2. Providing extensibility for future needs, including new physical conditions and tracking enhancements.
86-
3. Meeting the operational training requirements of the Colombian Navy.
42+
- **[antares](./antares)** — The simulation engine written in Rust
43+
- **[antares-python](./antares-python)** — A Python SDK and CLI for controlling and subscribing to simulation output
44+
- **[antares-web](./antares-web)** — The user-facing control and visualization interface
45+
- **[docs](./docs)** — Sources for the project website, built using [showcase-chirpy-easy-docs](https://github.com/jsurrea/showcase-chirpy-easy-docs)
8746

88-
**System Performance**:
47+
## About the Project
8948

90-
- Sub-10ms latency for seamless real-time updates.
91-
- Modular components ensure flexibility and scalability.
49+
> **ANTARES**: *A Software-Based Tool for Simulating Naval Radar Operations*
50+
> Presented at the **International Conference on Military Technologies 2025**, Brno, Czechia.
9251
93-
## 📜 **References**
52+
**Abstract**
53+
Simulation is a cost-effective method for training personnel in virtual environments before operating real machines or interacting with real and complex scenarios. Moreover, simulation is also valuable for analyzing the behavior of both deployed systems and those under development. For instance, the design and operation of Combat Management and C4I systems, which are inherently complex, have utilized simulation for early validation as well as for training Navy officers and enlisted personnel.
9454

95-
For further information on specific components, refer to the README files located in their respective directories:
55+
We present ANTARES, an open-source, software-based naval radar simulator. ANTARES is designed to seamlessly integrate with other systems via the TCP protocol while supporting standalone operation through a Graphical User Interface (GUI). Additionally, it adheres to the open-closed design principle, facilitating easy extensibility with new simulation entities, such as naval vessel movement strategies. The simulator was implemented using the Rust programming language due to its advantages in performance, type safety, concurrency, and memory safety. As an initial validation, we conducted a usability and usefulness study with 12 officers and enlisted personnel from the Colombian Navy. ANTARES is released under the MIT license.
9656

97-
- [Naval Radar Simulator](./naval-radar-simulator/README.md)
98-
- [Naval Radar Web UI](./naval-radar-web-ui/README.md)
99-
- [Naval Radar Reverse Proxy](./naval-radar-reverse-proxy/README.md)
57+
## Credits
10058

101-
## 📥 **Contributions**
59+
This project was developed by **Juan Sebastian Urrea-Lopez** as part of research initiatives at **Universidad de los Andes**, in collaboration with the **Armada de la República de Colombia**.
10260

103-
This project was developed by **Juan Sebastian Urrea Lopez** as part of research initiatives at **Universidad de los Andes**, in collaboration with the **Armada de la República de Colombia**.
61+
## License
10462

105-
For any contributions, suggestions, or issues, feel free to open a pull request or contact the authors directly.
63+
ANTARES is released under the [MIT License](./LICENSE).

0 commit comments

Comments
 (0)