Skip to content

Commit 4e41f5c

Browse files
committed
Add ANTARES source code and docs
1 parent e55339c commit 4e41f5c

Some content is hidden

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

73 files changed

+5764
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Mac OS
2+
.DS_Store
3+

README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# ANTARES: A Software-Based Tool for Simulating Naval Radar Operations
2+
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.
4+
5+
## 🚢 **Project Overview**
6+
7+
### **Introduction**
8+
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.
10+
11+
### **Objective**
12+
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+
15+
## 📂 **Repository Structure**
16+
17+
The repository is divided into three major components, each with its own dedicated subdirectory and README file for further details:
18+
19+
### 1. **[Naval Radar Simulator](./naval-radar-simulator)**
20+
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.
28+
29+
**Instructions to Run**:
30+
31+
```bash
32+
cd naval-radar-simulator
33+
cargo run -- <config-file>
34+
```
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
52+
```
53+
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:
83+
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.
87+
88+
**System Performance**:
89+
90+
- Sub-10ms latency for seamless real-time updates.
91+
- Modular components ensure flexibility and scalability.
92+
93+
## 📜 **References**
94+
95+
For further information on specific components, refer to the README files located in their respective directories:
96+
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)
100+
101+
## 📥 **Contributions**
102+
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**.
104+
105+
For any contributions, suggestions, or issues, feel free to open a pull request or contact the authors directly.

docs/.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
_site
2+
.sass-cache
3+
.jekyll-cache
4+
.jekyll-metadata
5+
vendor
6+
Gemfile.lock

docs/404.html

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
permalink: /404.html
3+
layout: default
4+
---
5+
6+
<style type="text/css" media="screen">
7+
.container {
8+
margin: 10px auto;
9+
max-width: 600px;
10+
text-align: center;
11+
}
12+
h1 {
13+
margin: 30px 0;
14+
font-size: 4em;
15+
line-height: 1;
16+
letter-spacing: -1px;
17+
}
18+
</style>
19+
20+
<div class="container">
21+
<h1>404</h1>
22+
23+
<p><strong>Page not found :(</strong></p>
24+
<p>The requested page could not be found.</p>
25+
</div>

docs/Gemfile

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
source "https://rubygems.org"
2+
# Hello! This is where you manage which Jekyll version is used to run.
3+
# When you want to use a different version, change it below, save the
4+
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
5+
#
6+
# bundle exec jekyll serve
7+
#
8+
# This will help ensure the proper Jekyll version is running.
9+
# Happy Jekylling!
10+
# gem "jekyll", "~> 4.4.1"
11+
# This is the default theme for new Jekyll sites. You may change this to anything you like.
12+
gem "minima", "~> 2.5"
13+
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
14+
# uncomment the line below. To upgrade, run `bundle update github-pages`.
15+
gem "github-pages", "~> 232", group: :jekyll_plugins
16+
# If you have any plugins, put them here!
17+
group :jekyll_plugins do
18+
gem "jekyll-feed", "~> 0.12"
19+
end
20+
21+
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
22+
# and associated library.
23+
platforms :mingw, :x64_mingw, :mswin, :jruby do
24+
gem "tzinfo", ">= 1", "< 3"
25+
gem "tzinfo-data"
26+
end
27+
28+
# Performance-booster for watching directories on Windows
29+
gem "wdm", "~> 0.1", :platforms => [:mingw, :x64_mingw, :mswin]
30+
31+
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
32+
# do not have a Java counterpart.
33+
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]

docs/_config.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Welcome to Jekyll!
2+
#
3+
# This config file is meant for settings that affect your whole blog, values
4+
# which you are expected to set up once and rarely edit after that. If you find
5+
# yourself editing this file very often, consider using Jekyll's data files
6+
# feature for the data you need to update frequently.
7+
#
8+
# For technical reasons, this file is *NOT* reloaded automatically when you use
9+
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10+
#
11+
# If you need help with YAML syntax, here are some quick references for you:
12+
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
13+
# https://learnxinyminutes.com/docs/yaml/
14+
#
15+
# Site settings
16+
# These are used to personalize your new site. If you look in the HTML files,
17+
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
18+
# You can create any custom variable you would like, and they will be accessible
19+
# in the templates via {{ site.myvariable }}.
20+
21+
# Read more at https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll
22+
# Use bundle exec jekyll serve --baseurl="" to test locally
23+
24+
title: "ANTARES"
25+
26+
description: >- # this means to ignore newlines until "baseurl:"
27+
A Software-Based Tool for Simulating Naval Radar Operations
28+
domain: "thesoftwaredesignlab.github.io"
29+
baseurl: "/ANTARES/" # the subpath of your site, e.g. /blog
30+
url: "https://thesoftwaredesignlab.github.io" # the base hostname & protocol for your site, e.g. http://example.com
31+
github_username: TheSoftwareDesignLab
32+
show_downloads: false
33+
34+
# Build settings
35+
remote_theme: pages-themes/[email protected]
36+
plugins:
37+
- jekyll-feed
38+
- jekyll-remote-theme
39+
40+
# Exclude from processing.
41+
# The following items will not be processed, by default.
42+
# Any item listed under the `exclude:` key here will be automatically added to
43+
# the internal "default list".
44+
#
45+
# Excluded items can be processed by explicitly listing the directories or
46+
# their entries' file path in the `include:` list.
47+
#
48+
# exclude:
49+
# - .sass-cache/
50+
# - .jekyll-cache/
51+
# - gemfiles/
52+
# - Gemfile
53+
# - Gemfile.lock
54+
# - node_modules/
55+
# - vendor/bundle/
56+
# - vendor/cache/
57+
# - vendor/gems/
58+
# - vendor/ruby/

docs/index.markdown

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
---
2+
layout: default
3+
title: ANTARES
4+
permalink: /
5+
---
6+
7+
ANTARES is an open-source, software-based naval radar simulator. ANTARES is designed for seamless integration with other systems via the TCP protocol while also supporting standalone operation through a Graphical User Interface (GUI). It adheres to the open-closed design principle, facilitating easy extensibility with new simulation entities, such as naval vessel movement strategies. The simulator is implemented using the Rust programming language due to its advantages in performance, type safety, concurrency, and memory safety.
8+
9+
# 🚀 **Getting Started**
10+
11+
## **Installation and Setup**
12+
13+
To install ANTARES from source, follow these steps:
14+
15+
1. Install Rust and Cargo:
16+
- If you haven't already, install Rust and Cargo by following the instructions on the [Rust website](https://www.rust-lang.org/tools/install).
17+
2. Clone the repository from GitHub and navigate to the project directory:
18+
```bash
19+
git clone https://github.com/TheSoftwareDesignLab/ANTARES.git
20+
cd ANTARES
21+
```
22+
3. Build the project:
23+
```bash
24+
cargo build --release --manifest-path=naval-radar-simulator/Cargo.toml
25+
```
26+
27+
Alternatively, you can download the compiled files from the project's repository.
28+
29+
## **Running the Simulator**
30+
31+
You will need a configuration file to run the simulator. The configuration file is in TOML format and defines the radar's parameters, simulation settings, and environment details. A sample configuration file is provided in the `config` directory. You can modify this file to suit your needs.
32+
```toml
33+
[radar]
34+
35+
[radar.protocol]
36+
host = "0.0.0.0"
37+
num_workers_tci = 4
38+
num_workers_tdi = 4
39+
40+
[radar.detector]
41+
range = 100.0
42+
speed = 5.0
43+
angle = 3.14
44+
start_coordinates = [4.0, -72.0]
45+
46+
[simulation]
47+
emission_interval = 20
48+
49+
[simulation.ships]
50+
line = [{ initial_position = [-50.0, 50.0], angle=0.785, speed=5.0 }]
51+
circle = [{ initial_position = [50.0, -50.0], radius=20.0, speed=5.0 }]
52+
random = [{ initial_position = [-50.0, -50.0], max_speed=20.0 }]
53+
stationary = [{ initial_position = [50.0, 50.0] }]
54+
```
55+
56+
To run the simulator, use the following command:
57+
```bash
58+
naval-radar-simulator/target/release/naval-radar-simulator <config-file>
59+
```
60+
Replace `<config-file>` with the path to your TOML configuration file.
61+
62+
## **Running the GUI**
63+
64+
We need a reverse proxy to forward the TCP connection to the GUI through a websocket connection. Run the following commands in a new terminal to start the reverse proxy:
65+
```bash
66+
cd naval-radar-reverse-proxy
67+
npm install
68+
npm start
69+
```
70+
71+
The reverse proxy will listen on port 8080 by default. You can change the port by modifying the `WEBSOCKET_PORT` variable in the `.env` file.
72+
73+
To run the GUI, use the following commands in a new terminal:
74+
75+
```bash
76+
cd naval-radar-web-ui
77+
npm install
78+
npm run dev
79+
```
80+
81+
The GUI will be available at `http://localhost:5173`
82+

naval-radar-reverse-proxy/.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
WEBSOCKET_PORT=8080
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# npm
2+
node_modules
3+
package-lock.json

0 commit comments

Comments
 (0)