c-its.dev · notes on cooperative-ITS

· 29 Aug 2026 · Updated · 12 min read

The CPM confidence field that TS 103 324 never pins down

Every object in a CPM is an offset from the sender's pose, and that pose is wrong twice over. TS 103 324 never settles whether the confidence covers it.


A collective perception message drops a pedestrian in front of you. It says she is 12.40 m east and 8.60 m north of the sending car, and the confidence on that position is ±0.15 m at 95%. Fifteen centimetres. You could almost reach out and touch her.

Except those coordinates are not where she is. They are where she is relative to the car, and the car knows its own position from a GNSS fix that happens to be 1.2 m off today. So the pedestrian is a metre and a bit from where you just placed her, and the tidy ±0.15 m never mentioned it. This is how the coordinate frame works, and you need it before you trust any number in a CPM.

Everything in a CPM is relative to one point

Open a CPM and there is exactly one absolute position in it. It sits in the management container. TS 103 324 calls it the reference position: a single WGS84 point that, in the words of clause 7.1.3, “is used to determine the offset to other data points”. For a vehicle it is the ground point at the centre of the front of its bounding box, and in practice that is the sender’s GNSS fix.

For a roadside ITS-S the same clause leaves the choice open: the reference position “shall be chosen by the disseminating ITS-S”. An RSU’s is typically surveyed once and does not change from message to message. What follows is about the mobile case, where the anchor moves and is re-solved every cycle.

Every perceived object hangs off that one point. Each object’s position is a CartesianPosition3dWithConfidence, and its coordinates are offsets in an East-North-Up frame centred on the reference position (clause 7.1.8.1): y to the north, x to the east, z up. The numbers are CartesianCoordinateLarge, integers at 0.01 m resolution reaching about ±1310 m, so a car can describe anything it perceives within a wide circle around itself, to the centimetre.

The receiver’s job is simple arithmetic: take the WGS84 reference position, add the East-North-Up offset, and you have the object on the map. So the object’s absolute position is only as good as the two numbers you added, and one of them is the sender’s fix.

The confidence is honest about the offset, and silent about the fix

That ±0.15 m is real, and it is well specified. TS 103 324 requires a 95% confidence for every component of an object’s state (clause 7.1.8.3), and Annex C shows how a receiver rebuilds the full covariance from the transmitted standard deviations and correlation matrix, . It describes one thing precisely: how well the sender’s sensors measured the object, in the relative frame.

The sender’s own positioning uncertainty does travel in the message, but somewhere else: as the PosConfidenceEllipse attached to the reference position, a 95% horizontal ellipse with a semi-major and semi-minor axis (SemiAxisLength, 0.01 m, useful values up to 4093 and so about 40.93 m) and an orientation relative to true north. Two uncertainties, in two places.

The specification never says whether to combine them, and that silence is the finding. TS 103 324 never says the per-object confidence excludes the sender’s own error, and never says it includes it. What it does say, in clause 3.1, is that a confidence value is the “estimated absolute accuracy … of a measured value of a parameter”, and absolute cuts against the reading that the field is purely relative. The reading taken here, sensor-to-object only in the relative frame, is the one that matches how the sender produces the value and how Annex C reconstructs it. It is not the only reading a conformant implementation could take.

That ambiguity has practical consequences. Two stations can both conform and populate that field with different semantics, one folding its own positioning uncertainty in and one leaving it out, and nothing in the message distinguishes them. A receiver fusing both has no way to know it is adding unlike quantities.

δanchor, ×8ENsender50 m100 m300 mεtrue position
Reported in ink, true position in red, both with the same confidence circle. Radial distances are to scale (50, 100 and 300 m), so the rotational part of each gap grows with range in the 1:2:6 the arithmetic predicts, while the offset stays the same size at every range. The drawing exaggerates ε for legibility; at one degree the rotation would be a couple of pixels at the near marker. δ is smaller still, so it is drawn only in the inset, magnified eight times: the ink dot is the reference position the message states, the red one is where the sender is.

The anchor also has an angle

“One vector added to every object” is the tidy version, and it is half true. The offsets in a CPM are East-North-Up (clause 7.1.8.1), but a sensor does not measure in East-North-Up. It measures in the vehicle’s own frame. The sender rotates its detections into the geographic frame using its own estimate of where it is pointing. That estimate travels in the message too. The Originating Vehicle Container shall include orientationAngle (clause 7.1.4), a Wgs84Angle carrying the vehicle’s absolute orientation with respect to true north, value and confidence, both at 0.1° resolution.

That confidence field has a ceiling. Wgs84AngleConfidence is an integer from 1 to 127 in units of 0.1°, with 126 reserved for outOfRange and 127 for unavailable, so the largest uncertainty a station can state is 12.5°. A station whose heading is worse than that cannot say so in the field provided; it has to fall back on unavailable, which tells a receiver nothing about how bad the pose is.

So the anchor is a pose: a position and a heading. It can be wrong in two independent ways. Writing for the position error and for the heading error, an object whose true offset is r lands at

The first term is the translation everyone pictures: every object slides by the same , regardless of where it is. The second term is a rotation about the sender, and it scales with range. For small its magnitude is roughly ||·|r|: one degree of yaw error displaces an object by 0.87 m at 50 m, 1.75 m at 100 m, and 5.24 m at 300 m, well inside the range the coordinate type allows.

Which term dominates is a question of distance. With a 1.2 m position error and one degree of heading error, the two are equal at about 69 m. Past that the rotation is the larger error, and it keeps growing while stays put. The nearby pedestrian of the opening example is firmly in translation territory. A cyclist at 150 m is not.

This is what breaks the “constellation slides in one piece” picture. Under pure translation, object-to-object geometry survives. Under rotation it does not: two objects at different ranges move by different amounts, so the shape of the scene deforms: mildly near the sender, badly at the far edge. And neither term appears anywhere in the object’s own confidence.

Where the shared error cancels, and where it does not

A shared error is harmless for some uses and quietly wrong for others.

For anything that only needs the geometry within one sender’s picture, and at similar ranges, the translation term cancels out. The pedestrian and your lane are anchored to the same fix, so questions like “is she in my lane” or “is that cyclist between me and the car ahead” survive it. The rotation term cancels far less cleanly: it only vanishes for objects at comparable range and bearing, which is why the trick works close in and stops working across a wide scene.

It stops cancelling the moment you cross the anchor. Placing a single object on a shared map means adding the sender’s fix, bias and all. And fusing the same object from two senders means adding two different biased anchors. The report that motivated the service sells it on exactly this: clause 4.1.2 of TR 103 562 says the accuracy of estimated parameters “like object position, speed, etc.” increases with the number of ITS-Ss sharing information about the same object. The normative text is more careful. Clause 4 of TS 103 324 promises that fusion “generally leads to lower uncertainty in both the classification of objects and in their properties such as their sizes and their kinematic and attitude states”. That list never mentions absolute position. Averaging does help when the two anchors err independently. The catch is that they often do not: two stations a few tens of metres apart see the same constellation through nearly the same troposphere and ionosphere, and may be reading the same correction stream, so a large part of their position error is common to both. What averaging cancels is the independent part; the correlated part survives the average untouched, and the result is a tighter ellipse around a position that is still displaced. The one pedestrian arrives as two, a metre apart, each wrapped in a confident little ellipse.

What a receiver has to carry

Keep the two uncertainties apart and use each for what it describes.

  • Use the per-object confidence for relative reasoning inside a sender’s scene, where it is exactly right.
  • Convolve the reference ellipse into the absolute position before map-matching or acting on a lone object, so the number you trust covers the ground position, offset and anchor together. Three details decide whether that convolution is right. Annex C is informative, so its reconstruction is one reading of the data, and conformance does not turn on it. The correlation matrices it interprets are optional: clause 7.1.8.3 says a PerceivedObject may include up to four of them, so a receiver has to cope with their absence; assuming independence in silence is a bug. And the scaling factor from standard deviation to a 95 % region is 2.4477 in two dimensions. The familiar 1.96 belongs to one dimension, and applying it to an ellipse quietly understates the region.
  • When fusing across senders, weight by each sender’s pose uncertainty: the reference ellipse and the confidence on orientationAngle, scaled by the object’s range, alongside the per-object confidence. A crisp object reported at 200 m by a station unsure of its heading deserves far less pull than its ±0.15 m suggests.

None of this is exotic; it falls out of reading the coordinate frame plainly. A CPM is a set of precise arms bolted to one uncertain anchor, uncertain both in where it sits and in which way it faces. The message carries all three uncertainties: the arms, the position of the anchor, the heading of the anchor. What it never says is how they compose, and that silence is what two conformant implementations are free to resolve differently.

Read it yourself

TS 103 324 V2.1.1 sets the frame: the management container in clause 7.1.3, the sender’s own orientation in clause 7.1.4, the object state and its confidence in clause 7.1.8 with Annex C on the covariance, and the coordinate and confidence types in the Common Data Dictionary, TS 102 894-2 V2.1.1. For how this message came to exist at all, see the collective perception study that became a standard; for where it sits among the others, the five-minute message-set tour. The other half of an object’s story, its age, is in the note on object age.



Comments

Anonymous OK · no email · 5 min edit window.