ISAC-Sim

Models

Physics model layer providing core models and algorithms for ISAC simulation including Channel, Beamforming, PHY, Robotics, Planning, Sensing, and Numeric methods.

import { models } from 'symbion'

Sub-modules

Channel Modeling

models.channel

Wireless channel models including AWGN, Fading, Two-Ray, and GSCM

Functions (6)

shannonCapacity

v1.0.0
(snrDb: number, bandwidth: number) => number

Calculate Shannon channel capacity in bps.

models.channel

addNoise

v1.0.0
(signal: number[], snrDb: number) => number[]

Add AWGN noise to a signal for a given SNR.

models.channel

rayleighFading

v1.0.0
() => Complex

Generate a single complex Rayleigh fading coefficient (NLOS).

models.channel

ricianFading

v1.0.0
(config: RicianConfig) => Complex

Generate a single complex Rician fading coefficient (LOS).

models.channel

generateMIMOChannel

v1.0.0
(tx: number, rx: number, type: "rayleigh" | "rician") => Complex[][]

Generate a full MIMO channel matrix.

models.channel

twoRay.pathLoss

v1.0.0
(d: number, txH: number, rxH: number, freq: number) => number

Calculate Two-Ray Ground Reflection path loss in dB.

models.channel

Beamforming

models.beamforming

Antenna array processing and MIMO beamforming

Functions (4)

arrayFactor

v1.0.0
(theta: number, config: ArrayConfig) => number

Calculate the array factor for a linear array.

models.beamforming

steeringPhases

v1.0.0
(targetAngle: number, config: ArrayConfig) => number[]

Calculate phase shifter weights to steer beam to target angle.

models.beamforming

mimoCapacity

v1.0.0
(H: Complex[][], snrDb: number) => number

Calculate MIMO channel capacity given channel matrix H.

models.beamforming

zfSinr

v1.0.0
(H: Complex[][], streamIdx: number) => number

Calculate SINR for a stream using Zero-Forcing precoding.

models.beamforming

Types (1)

ArrayConfig

interface

Configuration for antenna arrays.

models.beamforming

Physical Layer

models.phy

Modulation, Coding, and Waveforms

Functions (5)

modulation.qamModulate

v1.0.0
(bits: number[], M: number) => Complex[]

Modulate bits using M-QAM (e.g. 4, 16, 64).

models.phy

modulation.qamDemodulate

v1.0.0
(symbols: Complex[], M: number) => number[]

Demodulate M-QAM symbols to bits.

models.phy

modulation.ofdmModulate

v1.0.0
(symbols: Complex[], params: OfdmParams) => number[]

Perform OFDM modulation (IFFT + CP insertion).

models.phy

coding.hammingEncode

v1.0.0
(data: number[]) => number[]

Encode data using (7,4) Hamming code.

models.phy

coding.crcCalculate

v1.0.0
(data: number[], poly: number[]) => number[]

Calculate Cyclic Redundancy Check.

models.phy

Robotics

models.robotics

Dynamics and Control for UAVs and mobile robots

Functions (1)

drone.distance

v1.0.0
(p1: Point3D, p2: Point3D) => number

Calculate Euclidean distance between 3D points.

models.robotics

Classes (2)

QuadrotorDynamics

classv1.0.0

Physics model for quadrotor UAV dynamics.

Constructor
new QuadrotorDynamics(params: DroneParams)
Methods
derivative(state: State, control: Control): StateDerivative
models.robotics

CascadeController

classv1.0.0

Standard cascade PID controller for position and attitude control.

models.robotics

Planning

models.planning

Path planning and trajectory optimization algorithms

Functions (4)

astar

v1.0.0
(start: Point, goal: Point, grid: OccupancyGrid) => Point[]

Find optimal path using A* algorithm.

models.planning

rrtStar

v1.0.0
(config: RrtConfig) => Point[]

Find path using RRT* (Rapidly-exploring Random Tree Star).

models.planning

generateMinimumSnapTrajectory

v1.0.0
(waypoints: Waypoint[], constraints: Constraints) => Trajectory

Generate a Minimum Snap trajectory through waypoints (MINCO).

models.planning

firi

v1.0.0
(path: Point[], obstacles: Obstacle[]) => Polyhedron[]

Generate Safe Flight Corridors using FIRI algorithm.

models.planning

Classes (1)

MinimumSnapTrajectory

classv1.0.0

Represents a generated minimum snap trajectory with piecewise polynomials.

Methods
evaluate(t: number): TrajectoryState
models.planning

Sensing

models.sensing

Sensor simulation (LiDAR, Camera models)

Functions (2)

simulateLiDAR

v1.0.0
(pose: Pose2D, obstacles: Obstacle[], config: LidarConfig) => LidarScan

Simulate a 2D LiDAR scan.

models.sensing

isInFOV

v1.0.0
(sensorPose: Pose2D, target: Point2D, fov: number) => boolean

Check if a target point is within the sensor field of view.

models.sensing

Classes (1)

OccupancyGrid

classv1.0.0

2D Occupancy Grid Map for robotic mapping.

models.sensing