irsim.util.message#

Helpers for applying irsim.msg messages to simulation objects.

These functions resolve which local objects an incoming message addresses. They only read the objects they are given, so a caller can validate a whole batch of updates before applying any of them.

Functions#

resolve_message_targets(→ list[tuple[Any, Any]])

Pair each incoming odometry with the distinct local object it addresses.

Module Contents#

irsim.util.message.resolve_message_targets(objects: collections.abc.Iterable[Any], msg: irsim.msg.WorldState | irsim.msg.ObjectState | Any, object_name: str | None = None, object_id: int | None = None, *, default_target: collections.abc.Callable[[], Any]) list[tuple[Any, Any]][源代码]#

Pair each incoming odometry with the distinct local object it addresses.

A WorldState addresses every object it contains, an ObjectState uses its embedded name and id, and a standalone odometry message goes to default_target unless a name or id selects another object.

参数:
  • objects (Iterable) -- Local objects the message can address.

  • msg -- A WorldState, an ObjectState, or an odometry-shaped message.

  • object_name (str) -- Explicit target name for a standalone odometry or object message.

  • object_id (int) -- Explicit target id for the same messages. Names take precedence when both are given.

  • default_target (Callable) -- Called only when a standalone odometry selects no object; returns the object that receives it.

返回:

(object, odometry) pairs, one per addressed object.

返回类型:

list

抛出:

ValueError -- If a target cannot be found, a name or id is combined with a WorldState, or one object is addressed more than once.