Stationary 2D/3D boxes
This guide is a work in progress and may be subject to change.
This guide helps you annotate stationary objects accurately with minimal keyframes and adjustments. It applies to two types of stationary objects:
Parked vehicles — cars, trucks, and other vehicles that are stationary in the scene
Always-static objects — traffic signs, traffic signals, poles, bollards, barriers, and similar infrastructure
Your workflow depends on data quality — detecting drift before drawing determines which approach to use.
If your task uses the Static objects guided workflowStatic objects guided workflow, follow it whenever possible. It provides step-by-step guidance and automatically enables aggregation.
Find a stationary object in the scene to use as a drift indicator
Enable Point cloud aggregation and observe its points
If the points appear sharp and well-aligned, the data is clean — there is no drift. If the points appear smeared or blurry, drift is present.
How to choose a good object for drift detection:
- The object should appear in front of the ego vehicle (visible in the front camera)
- It should be close to the ego vehicle in one or more frames — proximity means better lidar point resolution and makes drift easier to detect
Skip this step if your task instructions already specify whether drift compensation is required. Check with your manager if unsure.
There are two methods to create the initial 3D box: from a prelabel or manually with drawing mode.
Create from prelabel
If prelabels are available, this is the fastest option. Stationary predictions appear in pink and other predictions in white — prioritise the pink ones.
Class first: Select a class (this activates the cuboid drawing tool), then click the prelabel
Prelabel first: Click the prelabel to select it, then select a class
After creating the box, navigate to the best frame. If a best-frame marker is visible in the video bar, click it. Otherwise, right-click the object and select "Go to best frame".
If the prelabel quality is poor (wrong size, position, or orientation that would require significant correction), draw the box manually instead.
CopilotCopilot predictions predictions frequently have an incorrect direction (rotated 180 degrees). Use , to rotate the direction 90 degrees at a time until it is correct.
Create manually
Choose the mode based on the type of object:
Parked vehicles (cars, trucks) — use Center modeCenter mode or Side modeSide mode. These objects have a clear longest side and a recognisable front and back. Use Center mode when you have a good view of the front or back center of the vehicle. Use Side mode when you have a clearer view of the side. In both modes, drag across the longest side of the object for the best result.
Always-static objects (traffic signs, traffic signals, poles, bollards, barriers) — use Point modePoint mode. These are typically smaller objects where painting the exact points gives better control over the box boundaries. View the object from the front before drawing — the box direction is based on your viewing angle.
When data is clean, enable Point cloud aggregationPoint cloud aggregation and draw the object once — no further adjustments should be needed.
Enable Point cloud aggregation
Use 4D navigation to click on the object points, this will navigate you to the frame where there are the most points
Create a first 3D box in this frame
One keyframe is sufficient — do not add more.
When drift happens, the process includes two steps: first, create a well-annotated reference 3D box for each area to correct drift; second, use that 3D box for subsequent objects within the same area.
Reference object per area
Annotate an appropriate object to establish the drift correction for the area. A good reference object is one that is in front of the ego vehicle and close by in one or more frames. Typically, only one manually annotated reference object is required per area.
With prelabels: Create the 3D box from the prelabel
Without prelabels: Use 4D navigation to click on the object points, this will navigate you to the frame with the most points - create the 3D box in this frame
Right-click on the 3D box and select View in best frameGo to best frame
Adjust the size of the 3D box in the best frame - do not adjust the size of the box after this step
Move approximately 5 frames forward or backward (adjust based on sequence Hz)
Adjust position and rotation to compensate for drift
Use Transformation controlsTransformation controls with snappingsnapping for efficient adjustments.
Repeat steps 5-6 until the box wraps the points correctly when you scrub through the sequence
Trim the lifespan of the 3D box with the videobar visibility controls
Run Filter cuboids below point threshold to mark frames where the object point count is below the configured threshold as not visible
Subsequent objects
All subsequent objects in the area can be corrected using the reference object.
With prelabels: Create the 3D box from the prelabel
Without prelabels: Use 4D navigation to click on the object points, this will navigate you to the frame with the most points - create the 3D box in this frame
Right-click on the 3D box and select View in best frameGo to best frame
Adjust the size of the 3D box in the best frame - do not adjust the size of the box after this step
Activate Relative keyframe in 3DRelative keyframe and select a nearby well-annotated object as a reference
Optional: scrub through the sequence to verify the compensation
Trim the lifespan of the 3D box with the videobar visibility controls
Run Filter cuboids below point threshold to mark frames where the object point count is below the configured threshold as not visible
Adjusting the 3D box in every frame — for stationary objects, one keyframe (or using Relative keyframe in 3DRelative keyframe) is almost always sufficient
Skipping Point cloud aggregation on clean data — Point cloud aggregation gives a complete view of the object and improves sizing accuracy
Using Action assist in 3D on stationary objects — avoid this; it is not suitable for objects that do not move
Using Quick-move (F) or Refine (M) — these are not recommended for stationary objects
After completing the 3D annotation, create 2D bounding boxes.
Creating 2D boxes
If prelabels are available, use 2D bounding boxes with autocompleteautocomplete, hover over the object and press Tab to accept the suggested box. If the suggestion is inaccurate, press Escape and draw manually instead.
If there are no prelabels, click the "Create connected 2D box" button to generate boxes across all visible frames based on the 3D projection. Only use this if the first projected box looks correctly placed — if it is misaligned due to poor calibration, draw manually using the four-point method instead.
If the object is missing in a specific camera, select it and click "Draw connected object" in the sidebar to draw a 2D box for that camera.
Adjusting 2D boxes
After creating 2D boxes, scrub through the sequence and check each camera source to verify the boxes are correctly placed. Add or adjust boxes where needed.
If a 2D box needs correction, use one of the following (ordered by preference):
- Redraw — press 0 to reactivate the drawing tool and draw a new box with four clicks
- Action assist: 2D / 3D fusionAction assist: 2D/3D fusion — press shift+space; the system zooms to the 3D box's projection and activates the drawing tool. Only works well if camera calibrations are good
- Auto completeAutocomplete — hover over the object and press Tab to accept the suggested box
- Auto-adjust objectsAuto-adjust — for clearly visible, unoccluded vehicles (not suitable for traffic signs, poles, or other non-vehicle objects). With the object selected, press M to auto-adjust the 2D bounding box
- Drag the control handles on the edges of the box — useful for small corrections
Pay attention to objects near image borders — calibration and time synchronisation issues may cause these frames to display incorrect visibility status.