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.channelWireless channel models including AWGN, Fading, Two-Ray, and GSCM
Functions (6)
shannonCapacity
v1.0.0(snrDb: number, bandwidth: number) => numberCalculate Shannon channel capacity in bps.
models.channeladdNoise
v1.0.0(signal: number[], snrDb: number) => number[]Add AWGN noise to a signal for a given SNR.
models.channelrayleighFading
v1.0.0() => ComplexGenerate a single complex Rayleigh fading coefficient (NLOS).
models.channelricianFading
v1.0.0(config: RicianConfig) => ComplexGenerate a single complex Rician fading coefficient (LOS).
models.channelgenerateMIMOChannel
v1.0.0(tx: number, rx: number, type: "rayleigh" | "rician") => Complex[][]Generate a full MIMO channel matrix.
models.channeltwoRay.pathLoss
v1.0.0(d: number, txH: number, rxH: number, freq: number) => numberCalculate Two-Ray Ground Reflection path loss in dB.
models.channelBeamforming
models.beamformingAntenna array processing and MIMO beamforming
Functions (4)
arrayFactor
v1.0.0(theta: number, config: ArrayConfig) => numberCalculate the array factor for a linear array.
models.beamformingsteeringPhases
v1.0.0(targetAngle: number, config: ArrayConfig) => number[]Calculate phase shifter weights to steer beam to target angle.
models.beamformingmimoCapacity
v1.0.0(H: Complex[][], snrDb: number) => numberCalculate MIMO channel capacity given channel matrix H.
models.beamformingzfSinr
v1.0.0(H: Complex[][], streamIdx: number) => numberCalculate SINR for a stream using Zero-Forcing precoding.
models.beamformingTypes (1)
ArrayConfig
interfaceConfiguration for antenna arrays.
models.beamformingPhysical Layer
models.phyModulation, 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.phymodulation.qamDemodulate
v1.0.0(symbols: Complex[], M: number) => number[]Demodulate M-QAM symbols to bits.
models.phymodulation.ofdmModulate
v1.0.0(symbols: Complex[], params: OfdmParams) => number[]Perform OFDM modulation (IFFT + CP insertion).
models.phycoding.hammingEncode
v1.0.0(data: number[]) => number[]Encode data using (7,4) Hamming code.
models.phycoding.crcCalculate
v1.0.0(data: number[], poly: number[]) => number[]Calculate Cyclic Redundancy Check.
models.phyRobotics
models.roboticsDynamics and Control for UAVs and mobile robots
Functions (1)
drone.distance
v1.0.0(p1: Point3D, p2: Point3D) => numberCalculate Euclidean distance between 3D points.
models.roboticsClasses (2)
QuadrotorDynamics
classv1.0.0Physics model for quadrotor UAV dynamics.
Constructor
new QuadrotorDynamics(params: DroneParams)Methods
derivative(state: State, control: Control): StateDerivative▶models.roboticsCascadeController
classv1.0.0Standard cascade PID controller for position and attitude control.
models.roboticsPlanning
models.planningPath 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.planningrrtStar
v1.0.0(config: RrtConfig) => Point[]Find path using RRT* (Rapidly-exploring Random Tree Star).
models.planninggenerateMinimumSnapTrajectory
v1.0.0(waypoints: Waypoint[], constraints: Constraints) => TrajectoryGenerate a Minimum Snap trajectory through waypoints (MINCO).
models.planningfiri
v1.0.0(path: Point[], obstacles: Obstacle[]) => Polyhedron[]Generate Safe Flight Corridors using FIRI algorithm.
models.planningClasses (1)
MinimumSnapTrajectory
classv1.0.0Represents a generated minimum snap trajectory with piecewise polynomials.
Methods
evaluate(t: number): TrajectoryState▶models.planningSensing
models.sensingSensor simulation (LiDAR, Camera models)
Functions (2)
simulateLiDAR
v1.0.0(pose: Pose2D, obstacles: Obstacle[], config: LidarConfig) => LidarScanSimulate a 2D LiDAR scan.
models.sensingisInFOV
v1.0.0(sensorPose: Pose2D, target: Point2D, fov: number) => booleanCheck if a target point is within the sensor field of view.
models.sensingClasses (1)
OccupancyGrid
classv1.0.02D Occupancy Grid Map for robotic mapping.
models.sensing