Utilities and readers#
Geometry and conversion#
Coordinate, conversion, visualization, and local I/O helpers.
- class pyradar.utils.ICPResult(transform, aligned, rmse, iterations, converged)[source]#
Result of deterministic point-to-point ICP registration.
- Parameters:
- transform: NDArray[float64]#
- aligned: NDArray[float64]#
- pyradar.utils.axis_aligned_bounds(points)[source]#
Return minimum and maximum FLU corners.
- Parameters:
points (ArrayLike)
- Return type:
tuple[NDArray[float64], NDArray[float64]]
- pyradar.utils.beat_frequency_to_range(beatFrequency, *, slope)[source]#
Convert FMCW beat frequency in Hz to range in meters.
- Parameters:
beatFrequency (ArrayLike)
slope (float)
- Return type:
NDArray[float64]
- pyradar.utils.cartesian_to_spherical(points)[source]#
Convert FLU points to columns
range, azimuth, elevation.- Parameters:
points (ArrayLike)
- Return type:
NDArray[float64]
- pyradar.utils.compose_transforms(*transforms)[source]#
Compose transforms in application order from left to right.
- Parameters:
transforms (ArrayLike)
- Return type:
NDArray[float64]
- pyradar.utils.db_to_power(db)[source]#
Convert dB to linear power.
- Parameters:
db (ArrayLike)
- Return type:
NDArray[float64]
- pyradar.utils.doppler_frequency_to_velocity(dopplerFrequency, *, wavelength)[source]#
Convert monostatic Doppler frequency in Hz to radial velocity in m/s.
- Parameters:
dopplerFrequency (ArrayLike)
wavelength (float)
- Return type:
NDArray[float64]
- pyradar.utils.icp_register(source, target, *, initialTransform=None, maxIterations=50, tolerance=1e-06, maxCorrespondenceDistance=inf)[source]#
Register point clouds with nearest-neighbor point-to-point ICP.
- pyradar.utils.inverse_transform(transform)[source]#
Invert a rigid 4x4 transform without a general matrix inversion.
- Parameters:
transform (ArrayLike)
- Return type:
NDArray[float64]
- pyradar.utils.magnitude_to_db(magnitude, *, floor=1e-12)[source]#
Convert nonnegative linear magnitude to dB.
- Parameters:
magnitude (ArrayLike)
floor (float)
- Return type:
NDArray[float64]
- pyradar.utils.make_transform(rotation, translation)[source]#
Build a 4x4 rigid transform from a rotation and translation.
- Parameters:
rotation (ArrayLike)
translation (ArrayLike)
- Return type:
NDArray[float64]
- pyradar.utils.max_unambiguous_range(*, sampleRate, slope, complexSampling=True)[source]#
Return the beat-frequency-limited unambiguous range in meters.
- pyradar.utils.max_unambiguous_velocity(*, wavelength, slowTimeInterval)[source]#
Return one-sided monostatic unambiguous radial velocity.
- pyradar.utils.power_to_db(power, *, floor=1e-12)[source]#
Convert nonnegative linear power to dB.
- Parameters:
power (ArrayLike)
floor (float)
- Return type:
NDArray[float64]
- pyradar.utils.random_sample(points, *, count, seed=None)[source]#
Sample points without replacement using a reproducible generator.
- pyradar.utils.range_axis(*, fftSize, sampleRate, slope)[source]#
Return unshifted FMCW range-bin centers in meters.
- pyradar.utils.spherical_to_cartesian(range, azimuth, elevation=0.0)[source]#
Convert
range/azimuth/elevationin radians to FLUx/y/z.- Parameters:
range (ArrayLike)
azimuth (ArrayLike)
elevation (ArrayLike | float)
- Return type:
NDArray[float64]
- pyradar.utils.transform_points(points, transform)[source]#
Apply a 4x4 homogeneous transform to Cartesian points.
- Parameters:
points (ArrayLike)
transform (ArrayLike)
- Return type:
NDArray[float64]
- pyradar.utils.ula_angle_axis(*, fftSize, wavelength, spacing)[source]#
Map a centered spatial FFT coordinate to ULA broadside angles.
- pyradar.utils.ula_unambiguous_fov(*, wavelength, spacing)[source]#
Return a ULA’s alias-free broadside field of view in radians.
- pyradar.utils.velocity_axis(*, fftSize, wavelength, slowTimeInterval)[source]#
Return the centered Doppler velocity coordinate in meters per second.
Dataset readers#
Dataset adapters and lightweight local file helpers.
- class pyradar.utils.io.ColoRadarPlusReader(datasetRoot, sequence, *, applyCalibration=True)[source]#
Bases:
ColoRadarReaderSequence reader for ColoRadar+ (same cascade ADC encoding).
- class pyradar.utils.io.ColoRadarReader(datasetRoot, sequence, *, applyCalibration=True, plus=False)[source]#
Bases:
objectSequence reader for an original ColoRadar cascade recording.
- property radar: TI2243CascadeRadar#
- class pyradar.utils.io.FrameReader(*args, **kwargs)[source]#
Bases:
ProtocolProtocol implemented by all dataset ADC readers.
- class pyradar.utils.io.RAMPCNNReader(root)[source]#
Bases:
objectNumeric-order reader for a RAMPCNN
radar_raw_framedirectory.- Parameters:
root (PathLike)
- property radar: AWR1843Radar#
- class pyradar.utils.io.RaDelftReader(rawDirectory, *, configPath=None, calibrationPath=None)[source]#
Bases:
objectRandom-access reader for segmented 4-device RaDelft raw captures.
- Parameters:
rawDirectory (PathLike)
configPath (PathLike | None)
calibrationPath (PathLike | None)
- rxOrder = array([12, 13, 14, 15, 0, 1, 2, 3, 8, 9, 10, 11, 4, 5, 6, 7])#
- property radar: TI2243CascadeRadar#
- pyradar.utils.io.decode_dca1000(raw, *, numChirps, numRx, numSamples, numAdcBits=16)[source]#
Decode DCA1000 words into
(chirp, rx, sample)complex IQ data.
- pyradar.utils.io.decode_tsw1400(raw, *, numFrames, numChirpsPerFrame, numRx, numSamples, complexSampling=True, numAdcBits=16)[source]#
Decode TSW1400 offset-binary rows into frame/chirp/RX/sample data.
- pyradar.utils.io.load_coloradar_calibration(calibrationDir, *, radar=None)[source]#
Parse cascade ADC, phase, frequency, and coupling calibration.
- Parameters:
radar (TI2243CascadeRadar | None)
- Return type:
- pyradar.utils.io.load_radelft_calibration(path, *, radar, txIds=(11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0), rxOrder=(12, 13, 14, 15, 0, 1, 2, 3, 8, 9, 10, 11, 4, 5, 6, 7), calibrationSlope=35003000000000.0, calibrationRate=12000000.0, interpolation=5, phaseOnly=True)[source]#
Convert TI
RangeMat/PeakValMatcalibration to ADC terms.
- pyradar.utils.io.radar_from_coloradar(calibrationDir, *, plus=False, applyCalibration=True)[source]#
Create a TI2243 capture profile from ColoRadar text/JSON metadata.
- Parameters:
- Return type:
- pyradar.utils.io.radar_from_radelft_json(path)[source]#
Create a RaDelft profile from mmWave Studio JSON metadata.
- Parameters:
- Return type:
- pyradar.utils.io.read_coloradar_frame(path, *, radar, timestamp=None, frameId=None)[source]#
Decode one ColoRadar cascade ADC bin into canonical dimensions.
- pyradar.utils.io.read_complex_iq_bin(path, *, dtype=<class 'numpy.int16'>)[source]#
Read interleaved scalar I/Q values as a complex vector.
- pyradar.utils.io.read_dca1000(path, radar, *, numFrames=None, timestamps=None)[source]#
Read one or more DCA1000 frames using a Radar capture model.
- pyradar.utils.io.read_rampcnn_frame(path, *, radar=None, frameId=None)[source]#
Decode
adcData(sample, loop, rx, tx)from a RAMPCNN MAT file.