In [1]:
import radarsimpy
radarsimpy.__version__
Out[1]:
'10.0.0'

RCS of a car¶



This is example shows how to use RadarSimPy to simulate the RCS of an object based on its 3D model.


The Tesla Model S is with .stl.

In [2]:
import meshio

import plotly.graph_objs as go
from IPython.display import SVG, display

mesh_data = meshio.read('../models/vehicles/lamborgini_aventador.stl')

fig = go.Figure()

fig.add_trace(go.Mesh3d(x=mesh_data.points[:, 0],
                        y=mesh_data.points[:, 1],
                        z=mesh_data.points[:, 2],
                        i=mesh_data.cells[0].data[:, 0],
                        j=mesh_data.cells[0].data[:, 1],
                        k=mesh_data.cells[0].data[:, 2],
                        intensity=mesh_data.points[:, 2],
                        colorscale='Viridis'
                        ))
fig['layout']['scene']['aspectmode'] = "data"

# fig.show()
display(SVG(fig.to_image(format='svg', scale=1)))
0.20.40.60.811.2

RCS vs observation angle¶

In [3]:
import time
import numpy as np

from radarsimpy.rt import rcs_sbr

phi = np.arange(0, 180, 1)
theta = 90
freq = 76e9
pol = [0, 0, 1]
density = 0.1

rcs = np.zeros_like(phi)

tic = time.time()
for phi_idx, phi_ang in enumerate(phi):
    rcs[phi_idx] = 10 * np.log10(
        rcs_sbr('../models/vehicles/lamborgini_aventador.stl',
                freq,
                phi_ang,
                theta,
                pol=pol,
                density=density))
toc = time.time()

print('Exec time :'+str(toc-tic) + 's')
Exec time :120.2574450969696s
In [4]:
fig = go.Figure()

fig.add_trace(go.Scatter(x=phi, y=rcs))

fig.update_layout(
    # title='RCS vs Observation Angle',
    template="seaborn",
    yaxis=dict(title='RCS (dBsm)'),
    xaxis=dict(title='Observation angle (Degree)', dtick=20),
)

# fig.show()
display(SVG(fig.to_image(format='svg', scale=1)))
# fig.write_image('car_rcs_vs_angle.svg', height=400, width=600)
020406080100120140160−10010203040Observation angle (Degree)RCS (dBsm)
In [ ]: