Engee documentation
Notebook

System model of bistatic radar with two targets

In the example, consider modelling a bistatic radar system with two targets. The transmitter and receiver of the bistatic radar are located differently and move along different trajectories.

1. description of the model structure

Let's take a closer look at the functional structure of the model:

  • Source (Linear FM): a continuous linear frequency modulated signal is used as the probing signal (the bandwidth is 3 MHz, which corresponds to 50 metres of range resolution);
  • ** **Radar Transmitter*: Amplifies the pulse and simulates the movement of the transmitter;
  • **FreeSpace*: The signal propagates to the targets and back to the receiver, with attenuation proportional to the distance to the target;
  • ** **Radar Targets*: Reflects the incident signal and simulates the movement of both targets;
  • ** Radar Receiver: Receives the reflected signal from the target, adds receiver noise and simulates motion;
  • Filtering (Range Doppler Processing): The processing unit uses a buffer to accumulate 64 pulses and a processor to perform matched filtering for range estimation and FFT for Doppler shift (velocity) estimation;

The schematic of the model is shown in the figure below.

image.png

Digital processing consists of the following elements:

image.png

A model of the radar is shown in the figure below.

image_2.png

2 Initialisation of input parameters

To initialise the input parameters of the model we connect the file "ParamBistatic.jl". If you need to change the values of parameters, open this file and edit the necessary parameters

In [ ]:
include("$(@__DIR__)/ParamBistatic.jl")

paramBistatic = calc_param_BistaticRadar();

In the model the receiver and transmitter are separated and move on different trajectories. There are 3 models of motion: uniform, equal-accelerated and user (trajectory is defined pointwise). An example of setting the transmitter's uniform motion is shown below:

image_2.png

3. Running the model

In [ ]:
function run_model( name_model, path_to_folder ) # определение функции для прогона модели
    Path = path_to_folder * "/" * name_model * ".engee"
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    return model_output
end;
In [ ]:
out = run_model( "BistaticRadar", @__DIR__); # Запустить модель
Building...
Progress 0%
Progress 6%
Progress 15%
Progress 25%
Progress 31%
Progress 40%
Progress 50%
Progress 59%
Progress 65%
Progress 75%
Progress 81%
Progress 89%
Progress 96%
Progress 100%
Progress 100%

4. Reading output data

Read the required output (in our case "out_bistatic") from the out variable:

In [ ]:
out_bistatic_engee = zeros(ComplexF64,size(out["out_bistatic"].value[1],1),size(out["out_bistatic"].value[2],2),length(out["out_bistatic"].value))
[out_bistatic_engee[:,:,i] = collect(out["out_bistatic"].value[i]) for i in eachindex(out["out_bistatic"].value)];

5. Displaying the results

Let us plot the velocity and range response of the system obtained in the previous paragraph:

In [ ]:
abs_out_map = abs.(out_bistatic_engee[:,:,2]).+eps(1.0)
range_doppler_map =  10log10.(abs.(abs_out_map).^2)
x_speed = range(-5000,5000;length = length(range_doppler_map[1,:]))
y_range = range(0,45;length = length(range_doppler_map[:,1]))
Plots.heatmap(x_speed, y_range, range_doppler_map,ylabel="Дальность,км ", 
    xlabel="Скорость км/ч", title="Карта доплеровских и временных задержек", colorbar_title="Мощность, дбВт",
    color=:viridis,size = (600,400), margin = 5*Plots.mm)
Out[0]:

Conclusion

The example examined the operation of a bistatic radar system with two targets. As a result of radar operation, a map of Doppler responses (in velocity) and time delays (range) was constructed, which was used to determine the position and velocities of two targets.