185 lines
8.4 KiB
Markdown
185 lines
8.4 KiB
Markdown
This is a project for a museum to demonstrate a simulation of a 1940's to 1960's
|
|
vintage radar, including the Chain Home radar from early World War 2, marine radar,
|
|
and air traffic control radar
|
|
|
|
The project will be implemented on a Geekom A8 Max
|
|
32 GB RAM
|
|
AMD Ryzen 9 8945HS w/ Radeon 780M Graphics
|
|
We need to render to the Radeon 780M Graphics GPU
|
|
|
|
Tech Stack: We are using C++20, OpenGL 4.3 Core, GLFW, GLAD, FreeType, GDAL (libgdal-dev)
|
|
Compiler: is g++ (Ubuntu 15.2.0-4ubuntu4) 15.2.0
|
|
|
|
FreeType is the text type we use
|
|
GDAL is used for reading the LIDAR/ENC chart files
|
|
GLFW (graphics library framework) open-source, multi-platform library used to manage windows
|
|
GLAD (Multi-Language GL/GLES/WGL/GLX Loader-Generator) Loads the pointers to
|
|
OpenGL functions (like glDrawArrays or glCompileShader)
|
|
|
|
PostgreSQL is installed. Database: radar. User: radar. Password: radar.
|
|
User has full privileges on database radar. Table is target_data.
|
|
|
|
Operating system details:
|
|
|
|
Distributor ID: Ubuntu
|
|
Description: Ubuntu 25.10
|
|
Release: 25.10
|
|
Codename: questing
|
|
|
|
Use cmake for building.
|
|
|
|
[DIRECTIVE: GPU ROBUSTNESS PROTOCOL]
|
|
|
|
Debug Callback: Enable GL_DEBUG_OUTPUT and glDebugMessageCallback
|
|
to capture driver-level warnings and errors in real-time.
|
|
|
|
I will be using SSH from Windows to write code and check with claude.
|
|
You may compile the code during an SSH session.
|
|
Please do not try to run the code during SSH session.
|
|
I will run the code while physically using the Geekom.
|
|
|
|
Please add MIT license header to each file
|
|
Please add Author: Mark Allyn to each file
|
|
|
|
Use snake_case for variables and PascalCase for classes
|
|
use #pragma once
|
|
Use // for single line comments
|
|
use /* */ for multiple block comments spanning multiple lines
|
|
avoid using auto
|
|
|
|
Summary of project:
|
|
|
|
This is a museum exhibit displaying and providing some interaction
|
|
of vintage 1940's, 1950's, and 1960's radars. A key objective is to
|
|
provide interaction with and viewing of radars from that era.
|
|
|
|
There will be three main areas of the screen. On the right hand side will be the radar
|
|
scope.
|
|
|
|
On the left hand side of the screen will be a text description of the scope as well
|
|
as the controls of the scope and keyboard keys for each control. This text will be
|
|
white while the control labels will be red and the keystrokes will be in pink.
|
|
At some point, pending a decision with the museum, we may purchase components to mount the controls on a panel. Until that is done, the controls will be on the keyboard.
|
|
|
|
Below the scope will be a text status window. This text will be yellow
|
|
|
|
Scopes in the right panel
|
|
|
|
1. Introduction of Exhibit (Explanation of the project on the left hand text panel.
|
|
2. A-scope for Chain Home Radar in the 1940's (first radar and could be tricky)
|
|
3. A-scope for marine radar in the 1950's (Before PPI radar); was a bit tedious to operate
|
|
4. PPI scope for marine traffic control (uses beam sweeping in all 360 degrees of
|
|
rotation); Easier to use than a scope
|
|
5. PPI scope on board a boat. Shows how movement of a boat affects the radar display
|
|
|
|
Please note that these scopes will not appear all at once. The selection of which scope
|
|
the visitor sees is done by pressing a forward control and a reverse control to go around
|
|
the loop of scopes. The first display when the system is turned on or booted up is the
|
|
Introduction of the exhibit.
|
|
|
|
Please note that the first iteration of the project will have only minimal controls.
|
|
This is a suggestion I got after meeting with the museum staff. Perhaps later we may
|
|
add more controls.
|
|
|
|
Also, please note that the state of the controls of each scope is independent of any
|
|
other scope. Furthermore, the controls will reset when a scope is exited and then re-entered.
|
|
|
|
Controls to affect the behavior of the scopes; (these first implemented using keyboard
|
|
strokes; later when and if physical controls are completed, the keyboard controls will be removed)
|
|
These controls will affect the state variables and the uniform variables of the shaders.
|
|
|
|
There will be three abstracts for scopes:
|
|
|
|
1. A Scope - sweep on horizontal axis. A pulse will appear for a return. The distance from
|
|
the left hand side to the pulse is the range. The height of the pulse is the strength
|
|
of the return signal. The bearing is determined by manual control.
|
|
|
|
The basic controls for both A Scopes include:
|
|
Intensity (the overall brightness of the entire display).
|
|
|
|
Sensitivity (the strength of the signal amplification of the
|
|
receiver). This has nothing to do with the brightness of the
|
|
pulses. This only affects the height of the pulse and the height
|
|
of any noise floor.
|
|
|
|
|
|
Chain Home A Scope
|
|
|
|
Because the receiving antennas are very large (about 100 feet), the
|
|
operator cannot physically move them.
|
|
|
|
Therefore, the bearing is determined through a process called radio direction
|
|
finding (RDF) using a specialized instrument known as a Radiogoniometer.
|
|
|
|
The receiver towers (which were separate from the transmitter towers)
|
|
featured two sets of dipole antennas mounted at right angles to one
|
|
another—essentially one oriented North-South and the other East-West.
|
|
|
|
The signals from these two perpendicular antennas were fed into a Radiogoniometer
|
|
located in the receiver hut. Inside the device there are two fixed coils (field coils)
|
|
that were mounted at right angles matching the orientation of the outdoor antennas.
|
|
A third coil, the search coil, is mounted on a rotating shaft inside the two
|
|
field coils. The operator would physically turn a knob to rotate the search coil.
|
|
|
|
The relative strength of the signal in each antenna depended on the angle of the
|
|
incoming wave. For example, a target directly to the North would produce a maximum
|
|
signal in the North-South antenna and zero in the East-West antenna.
|
|
|
|
The operator would look for a null point (a signal or pip weaker than the noise floor).
|
|
At that point, the operator would read the bearing from a calibrated scale attached
|
|
to the radiogoniometer knob.
|
|
|
|
We can simulate the radiogoniometer knob that would affect the null point depending
|
|
on the bearing of a target. The museum visitor could experience seeing different
|
|
null points for each target. Since we do not have a physical calibrated knob, we
|
|
can put the bearing as a text indicator below the A Scope.
|
|
|
|
The range is 200 miles.
|
|
|
|
There is a glass or plastic graticule that is etched with vertical lines
|
|
representing range. This is edge-lit with incandescent lamps.
|
|
|
|
Marine A Scope
|
|
|
|
Marine radar frequencies allowed the use of much smaller antennas;
|
|
dishes or horns. Those antennas would be mounted on the shaft of a servo motor. The
|
|
servo motor would be driven by another servo that is attached to the bearing control
|
|
knob on the radar console. The bearing is on a calibrated dial on the bearing control
|
|
knob.
|
|
|
|
We can simulate the bearing knob that would affect the simulated pointing of the
|
|
dish antenna. The museum visitor could experience seeing different
|
|
pips appear as they rotate the antenna toward them. Likewise the pips would disappear
|
|
as the antenna is rotated away.
|
|
|
|
The range is indicated at how far the pip is from the left hand side of the scope which
|
|
is the location of the radar transmitter. If the target goes further away,
|
|
the pip will move to the right. If the target comes close to you, the pip will
|
|
move left.
|
|
|
|
This pip has a finite rise time as the transmitter starts.
|
|
The width is set by the modulator stage in the transmitter.
|
|
Following the width, the pip has a finite fall time as the transmitter stops. This
|
|
creates a curved waveform; not just a line.
|
|
|
|
Range and range lines on graticule
|
|
|
|
Please note that the graticules are plastic overlays over the screen. They need to be removed
|
|
and replaced when the operator changes the maximum range. This can be simulated with the graticule
|
|
being lifted toward the top of the scope as it is removed. Then the new graticule would be slid
|
|
down until it covers the scope. The graticule will be edge-lit with an incandescent lamp.
|
|
|
|
Here is a table of the available ranges and what markings will be on the plastic graticule.
|
|
|
|
1. 1.5 miles; markers every 0.25 miles
|
|
2. 3.0 miles; markers every 0.5 miles
|
|
3. 6.0 miles; markers every 1.0 miles
|
|
4. 12.0 miles; markers every 2.0 miles
|
|
|
|
There would be four available plastic overlays.
|
|
|
|
Range can be selected with two keyboard keys or two buttons on the panel, and is
|
|
indicated in the text status panel below the scope.
|
|
|
|
2. PPI Scope - still being worked
|