Models Module Guide
Core physical models and algorithms for ISAC simulation
This guide details how to use the Symbion library's Models module (symbion/models), which provides various physical models required for communication, sensing, and robotic system simulations.
Table of Contents
1. Module Overview
1.1 Role of Models Module
The Models module is the physical model layer of Symbion, providing:
- Wireless Communication Models: Channel, modulation, coding, beamforming
- Robotics Models: Dynamics, control, UAV simulation
- Planning Algorithms: Path planning, trajectory optimization
- Sensing Models: Radar, LiDAR simulation
- Numerical Methods: Mathematical operations, optimization algorithms
1.3 Import Method
// Method 1: Import entire models module import { models } from 'symbion'; // Method 2: Import specific submodules directly import { channel, beamforming, planning } from 'symbion/models';
2. Channel - Channel Models
The Channel module provides implementations of various wireless channel models.
AWGN - Additive White Gaussian Noise
import { models } from 'symbion'; // Shannon Capacity const capacity = models.channel.shannonCapacity(10, e6); // 10dB SNR, 20MHz console.log(`Capacity: ${(capacity / 1e6).toFixed(2)} Mbps`); // Add Noise const noisySignal = models.channel.addNoise([1, -1, 1], 10);
Fading Channels
import { models } from 'symbion'; // Rayleigh Fading (NLOS) const h = models.channel.rayleighFading(); // Rician Fading (LOS) const hLos = models.channel.ricianFading({ kFactor: 10 }); // K=10dB // Doppler Shift const doppler = models.channel.maxDopplerShift(30, 3.e9); // 30m/s, 3.5GHz const Tc = models.channel.coherenceTime(doppler);
MIMO Channels
// Generate 4x2 MIMO Channel const H = models.channel.generateMIMOChannel(4, 2, 'rayleigh'); // Capacity const capacity = models.channel.calculateMIMOCapacity(H, 10);
3. Beamforming - Beamforming
Antenna Arrays & MIMO
import { models } from 'symbion'; const config = { numAntennas: 8, spacing: 0.5, steeringAngle: 0 }; // Array Factor const af = models.beamforming.arrayFactor(Math.PI 6, config); // MIMO Beamforming (MRT) const H = models.beamforming.generateChannelMatrix(4, 2); const sinr = models.beamforming.mrtSinr(H, 1);
4. PHY - Physical Layer
Modulation & Coding
// QAM Modulation const symbols = models.phy.modulation.qamModulate([0, 1, 1, 0], 16); // OFDM const ofdmSignal = models.phy.modulation.ofdmModulate(symbols, { numSubcarriers: 64, cpLength: 16 }); // Channel Coding (CRC) const crc = models.phy.coding.crcCalculate([1, 0, 1], [1, 0, 1, 1]);
5. Robotics - Dynamics & Control
Quadrotor Dynamics
const quad = new models.robotics.dynamics.QuadrotorDynamics({ mass: 1.5 }); const derivative = quad.derivative(state, { thrust: 15, torque: [0, 0.1, 0] });
6. Planning - Path Planning
Trajectory Optimization (MINCO)
const waypoints = [ { position: [0, 0, 0], time: 0 }, { position: [10, 5, 2], time: 2 } ]; const traj = models.planning.generateMinimumSnapTrajectory(waypoints, { maxVelocity: 5, maxAcceleration: 3 }); // Evaluate at t=1s const state = traj.evaluate(1.0);
7. Sensing - LiDAR & Environment
LiDAR Simulation
const scan = models.sensing.simulateLiDAR( robotPose, obstacles, { numRays: 360, maxRange: 10 } );
8. Numeric - Utilities
const { vec3, mat3 } = models.numeric.math; const v = vec3.add([1, 2, 3], [4, 5, 6]); const d = mat3.determinant(M);