From bc239a552ea10ddeb5ebc85dac744d299c6f47d0 Mon Sep 17 00:00:00 2001 From: rakadu1 Date: Wed, 14 Jan 2026 09:39:34 +0530 Subject: [PATCH] New data structures added for reference. --- steps/Data_structs/JSON_Structure.json | 69 ++++++++++++++ .../JSON_Structure_trackHistory.json | 67 ++++++++++++++ steps/Data_structs/JSON_Structure_v2.json | 89 +++++++++++++++++++ steps/Data_structs/ROS2_Data_Structure.json | 85 ++++++++++++++++++ steps/Data_structs/new.json | 7 ++ 5 files changed, 317 insertions(+) create mode 100644 steps/Data_structs/JSON_Structure.json create mode 100644 steps/Data_structs/JSON_Structure_trackHistory.json create mode 100644 steps/Data_structs/JSON_Structure_v2.json create mode 100644 steps/Data_structs/ROS2_Data_Structure.json create mode 100644 steps/Data_structs/new.json diff --git a/steps/Data_structs/JSON_Structure.json b/steps/Data_structs/JSON_Structure.json new file mode 100644 index 0000000..0085a30 --- /dev/null +++ b/steps/Data_structs/JSON_Structure.json @@ -0,0 +1,69 @@ +{ + "radarFrames": [ + { + "timestamp": "Number (Timestamp in seconds or ms)", + "frameIdx": "Number (Index of the frame)", + "motionState": "Number (Enum/State identifier)", + "egoVelocity": ["Number (Vx)", "Number (Vy)"], + "canVehSpeed_kmph": "Number", + "correctedEgoSpeed_mps": "Number", + "shaftTorque_Nm": "Number", + "engagedGear": "Number", + "estimatedAcceleration_mps2": "Number", + "iirFilteredVx_ransac": "Number", + "iirFilteredVy_ransac": "Number", + "filtered_barrier_x": ["Number (Left)", "Number (Right)"], + "clusters": [ + { + "id": "Number (Original Cluster ID)", + "x": "Number", + "y": "Number", + "radialSpeed": "Number", + "vx": "Number", + "vy": "Number", + "azimuth": "Number", + "isOutlier": "Boolean", + "isStationaryInBox": "Boolean" + } + ], + "pointCloud": [ + { + "x": "Number", + "y": "Number", + "velocity": "Number", + "snr": "Number", + "clusterNumber": "Number", + "isOutlier": "Boolean" + } + ] + } + ], + "tracks": [ + { + "id": "Number (Track ID)", + "isConfirmed": "Boolean", + "historyLog": [ + { + "frameIdx": "Number", + "predictedPosition": ["Number (X)", "Number (Y)"], + "predictedVelocity": ["Number (Vx)", "Number (Vy)"], + "correctedPosition": ["Number (X)", "Number (Y)"], + "ttc": "Number (Time To Collision)", + "isStationary": "Boolean", + "covarianceP": [ + ["Number", "Number"], + ["Number", "Number"] + ], + "ellipseRadii": ["Number (Major)", "Number (Minor)"], + "ellipseAngle": "Number (Orientation)" + } + ], + "ttcCategoryTimeline": [ + { + "frameIdx": "Number", + "ttcCategory": "String or Number (Category identifier)" + } + ] + } + ] +} diff --git a/steps/Data_structs/JSON_Structure_trackHistory.json b/steps/Data_structs/JSON_Structure_trackHistory.json new file mode 100644 index 0000000..ca72001 --- /dev/null +++ b/steps/Data_structs/JSON_Structure_trackHistory.json @@ -0,0 +1,67 @@ +{ + "radarFrames": [ + { + "timestamp": "Number", + "frameIdx": "Number", + "motionState": "Number", + "egoVelocity": ["Number (Vx)","Number (Vy)"], + "canVehSpeed_kmph": "Number", + "correctedEgoSpeed_mps": "Number", + "shaftTorque_Nm": "Number", + "engagedGear": "Number", + "estimatedAcceleration_mps2": "Number", + "iirFilteredVx_ransac": "Number", + "iirFilteredVy_ransac": "Number", + "filtered_barrier_x": ["Number (min)","Number (max)"], + "clusters": [ + { + "id": "Number", + "x": "Number", + "y": "Number", + "radialSpeed": "Number", + "vx": "Number", + "vy": "Number", + "azimuth": "Number", + "isOutlier": "Boolean", + "isStationaryInBox": "Boolean" + } + ], + "pointCloud": [ + { + "x": "Number", + "y": "Number", + "velocity": "Number", + "snr": "Number", + "clusterNumber": "Number", + "isOutlier": "Boolean" + } + ] + } + ], + "tracks": [ + { + "id": "Number", + "historyLog": [ + { + "frameIdx": "Number", + "state": "Number", + "predictedPosition": ["Number (x)", "Number (y)"], + "predictedVelocity": ["Number (vx)", "Number (vy)"], + "correctedPosition": ["Number (x)", "Number (y)"], + "ttc": "Number", + "risk": "Number", + "tti": "Number", + "accel": ["Number (ax)", "Number (ay)"], + "omega": "Number", + "modelProbabilities": ["Number", "Number", "Number"], + "isStationary": "Boolean", + "covarianceP": [["Number", "Number", "Number", "Number", "Number", "Number", "Number"]], + "ellipseRadii": ["Number", "Number"], + "ellipseAngle": "Number", + "objectExtentRadii": ["Number", "Number"], + "objectExtentAngle": "Number" + } + ] + } + ] +} \ No newline at end of file diff --git a/steps/Data_structs/JSON_Structure_v2.json b/steps/Data_structs/JSON_Structure_v2.json new file mode 100644 index 0000000..f9bddf5 --- /dev/null +++ b/steps/Data_structs/JSON_Structure_v2.json @@ -0,0 +1,89 @@ +{ + "metadata": { + "version": "2.0", + "description": "Radar visualization data structure", + "generatedAt": "ISO-8601 Timestamp" + }, + "radarFrames": [ + { + "frameId": "Number (Unique Frame Index)", + "timestamp": "Number (Seconds/ms)", + "timestampIso": "String (ISO-8601 for human readability)", + "egoState": { + "velocity": { "x": "Number", "y": "Number" }, + "speedKmph": "Number", + "correctedSpeedMps": "Number", + "accelerationMps2": "Number", + "yawRate": "Number", + "motionState": "String (e.g., 'MOVING', 'STATIONARY')" + }, + "vehicleData": { + "shaftTorqueNm": "Number", + "engagedGear": "Number" + }, + "environment": { + "barrierLimitsX": { "min": "Number", "max": "Number" } + }, + "sensing": { + "iirFilteredVelocity": { "x": "Number", "y": "Number" } + }, + "activeTrackIds": ["Number (List of Track IDs visible in this frame)"], + "clusters": [ + { + "id": "Number", + "position": { "x": "Number", "y": "Number" }, + "velocity": { "radial": "Number", "x": "Number", "y": "Number" }, + "azimuth": "Number", + "flags": { + "isOutlier": "Boolean", + "isStationaryInBox": "Boolean" + } + } + ], + "pointCloud": [ + { + "position": { "x": "Number", "y": "Number" }, + "velocity": "Number", + "signal": { "snr": "Number", "clusterId": "Number" }, + "flags": { "isOutlier": "Boolean" } + } + ] + } + ], + "tracks": [ + { + "trackId": "Number", + "status": { + "isConfirmed": "Boolean", + "classification": "String (e.g., 'VEHICLE', 'PEDESTRIAN')" + }, + "historyLog": [ + { + "frameId": "Number", + "state": { + "position": { "x": "Number", "y": "Number" }, + "velocity": { "x": "Number", "y": "Number" }, + "covariance": { "xx": "Number", "xy": "Number", "yx": "Number", "yy": "Number" }, + "isStationary": "Boolean" + }, + "prediction": { + "position": { "x": "Number", "y": "Number" }, + "velocity": { "x": "Number", "y": "Number" } + }, + "shape": { + "ellipse": { "major": "Number", "minor": "Number", "angle": "Number" } + }, + "safety": { + "ttc": "Number", + "ttcCategory": "String (e.g., 'CRITICAL', 'HIGH')" + } + } + ], + "derivedData": { + "ttcCategoryTimeline": [ + { "frameId": "Number", "category": "String" } + ] + } + } + ] +} \ No newline at end of file diff --git a/steps/Data_structs/ROS2_Data_Structure.json b/steps/Data_structs/ROS2_Data_Structure.json new file mode 100644 index 0000000..fd70fab --- /dev/null +++ b/steps/Data_structs/ROS2_Data_Structure.json @@ -0,0 +1,85 @@ +{ + "metadata": { + "version": "2.0", + "source": "TI_AWRL1432", + "notes": "Full data retention, ROS-ready structure" + }, + "frames": [ + { + "header": { + "seq": 101, // formerly frameIdx + "stamp": 123456789.0 // formerly timestamp + }, + "ego": { + "motionState": 1, // enum + "gear": 2, // formerly engagedGear + "torque": 150.5, // formerly shaftTorque_Nm + "velocity": { // Grouping vectors is cleaner + "x": 10.5, // egoVelocity[0] + "y": 0.1 // egoVelocity[1] + }, + "speed": { + "can_kmph": 38.0, // formerly canVehSpeed_kmph + "corrected_mps": 10.5 // formerly correctedEgoSpeed_mps + }, + "accel_mps2": 1.2, // formerly estimatedAcceleration_mps2 + "ransac": { // Grouped RANSAC fields + "vx": 10.4, // iirFilteredVx_ransac + "vy": 0.0 // iirFilteredVy_ransac + }, + "barriers": { // formerly filtered_barrier_x + "left": -2.5, + "right": 3.5 + } + }, + + // OPTIMIZATION: Structure of Arrays (SoA) matches ROS PointCloud2 logic + "points": { + "x": [1.2, 3.4, ...], + "y": [-0.5, 2.1, ...], + "v": [10.0, 11.2, ...], // velocity + "snr": [100, 95, ...], + "clusterId": [1, 1, ...], // clusterNumber + "isOutlier": [0, 0, ...] // Boolean as 0/1 for efficiency + }, + + // Clusters as list of objects (Object Array is fine here, low count) + "clusters": [ + { + "id": 5, + "pos": { "x": 10.0, "y": 2.0 }, + "vel": { "vx": 10.0, "vy": 0.5, "radial": 10.1 }, + "azimuth": 0.1, + "flags": { // Group booleans + "outlier": false, // isOutlier + "staticInBox": true // isStationaryInBox + } + } + ], + + // Tracks: SNAPSHOT of the track at this specific frame + "tracks": [ + { + "id": 10, + "confirmed": true, // isConfirmed + "isStationary": false, + "ttc": 4.5, + "ttcCategory": "warning", // from ttcCategoryTimeline + "pos": { // correctedPosition + "x": 12.0, + "y": 1.5 + }, + "vel": { // predictedVelocity (or corrected if preferred) + "vx": 12.0, + "vy": 0.0 + }, + "cov": [0.5, 0, 0, 0.5], // covarianceP (flattened 2x2 matrix) + "shape": { + "radii": [2.5, 1.2], // ellipseRadii + "angle": 0.1 // ellipseAngle + } + } + ] + } + ] +} \ No newline at end of file diff --git a/steps/Data_structs/new.json b/steps/Data_structs/new.json new file mode 100644 index 0000000..7f5af15 --- /dev/null +++ b/steps/Data_structs/new.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "trailingComma": "all", + "tabWidth": 2, + "semi": false, + "singleQuote": true +} \ No newline at end of file