Skip to content

Filter, cluster, and track radar and lidar points

Compare an attributed RadarScenes frame with a synthetic lidar room scan, then retain errors and licence boundaries in the result.

Radio Remi: I want you to predict the result, inspect each intermediate value, and keep the final claim inside the evidence., your practice guide

Radio Remi: I want you to predict the result, inspect each intermediate value, and keep the final claim inside the evidence.
Predict the reading, then compare it with the measurement.

Python 3 in your browser (JupyterLite)

Python · no install

Compare an attributed RadarScenes frame with a synthetic lidar room scan, then retain errors and licence boundaries in the result.

Tier 2 · Web · paste-in setup · No account

Version tested: Python 3.12.7 / Pyodide 0.27.6 in JupyterLite 0.6.4; Chromium 148.0.7778.96; captureSource playwright:jupyterlite. Date: 2026-09-10.

Open the notebook in your browser and run each Python cell; no install or account is needed.

Three ways to run: use JupyterLite here with no install; run main.py locally from the downloadable lab folder; or open the same notebook in Google Colab.

Open in your browser (new tab)

Steps

Screens captured against Python 3 in your browser (JupyterLite) Python 3.12.7 / Pyodide 0.27.6 in JupyterLite 0.6.4; Chromium 148.0.7778.96; captureSource playwright:jupyterlite on 2026-09-10; the tool may have moved on — the text steps are the contract.

  1. 1 Step 1

    Do
    Inspect the two data contracts.
    You will see
    Radar and lidar columns, coordinate frame, units, licence, and synthetic status are printed.
    Why it matters
    Coordinates are meaningless without a frame and unit.
    JupyterLite step 1 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 1 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  2. 2 Step 2

    Do
    Load the RadarScenes sample.
    You will see
    The notebook reports 96 detections from one timestamp in sequence 158.
    Why it matters
    The lab includes a small derived sample from RadarScenes sequence 158.
    JupyterLite step 2 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 2 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  3. 3 Step 3

    Do
    Generate the synthetic lidar room.
    You will see
    A wall-and-object scan is created with 84 points and an explicit synthetic label.
    Why it matters
    The lidar room scan is synthetic because no compatible small public scan was selected for this wave.
    JupyterLite step 3 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 3 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  4. 4 Step 4

    Do
    Apply bounded filters.
    You will see
    Accepted and rejected point counts appear for each sensor.
    Why it matters
    Filtering removes only points that fail stated rules; clustering proposes objects; tracking links proposals over time with uncertainty.
    JupyterLite step 4 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 4 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  5. 5 Step 5

    Do
    Cluster connected neighbours.
    You will see
    Cluster counts and centroids are printed with the chosen distance and minimum count.
    Why it matters
    A connected-neighbour cluster joins points within a chosen distance and minimum count.
    JupyterLite step 5 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 5 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  6. 6 Step 6

    Do
    Associate a moved cluster.
    You will see
    The nearest compatible centroid is linked and the displacement is reported.
    Why it matters
    A simple tracker predicts a cluster position, finds a compatible new cluster, and updates the track.
    JupyterLite step 6 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 6 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)
  7. 7 Step 7

    Do
    Write the result and licence card.
    You will see
    The card reports counts, errors, attribution, ShareAlike, and missing validation.
    Why it matters
    Both files are for teaching the pipeline; neither validates a product or a new environment.
    JupyterLite step 7 for Filter, cluster, and track radar and lidar points, showing the printed evidence for this step.
    Step 7 · Python 3 in your browser (JupyterLite); numbered callout added to a real capture. Enlarge screenshot (new tab)

Chapter checks

These questions refer to the chapter’s examples. Use the return links to review their answers.

  1. What must accompany point coordinates before sensors can be compared?

    Return to the chapter’s knowledge check
  2. Why tune clustering on training scenes and score a held-out scene?

    Return to the chapter’s knowledge check

Caution

The supplied data and simulation verify the calculation path only. Reopen the prepared notebook if screens change, and validate any field claim with measured hardware and site evidence.

Return to Point Clouds from Radar and Lidar · Browse Labs