HCDF 1.0 Specification Browser

Element Attribute Has children (click to expand) Leaf node Defined in another tab (click to switch)
  • name Attribute
    Type: xs:string (required) — Name of the robot, platform, or sub-assembly described by this file. Required. For top-level robot descriptions, this is the robot's model name (e.g., "cogni-humanoid-v2", "quadrotor-x500"). For reusable sub-assemblies, this is the module name (e.g., "7dof-arm", "stereo-head-v2", "hebi-x8-9"). When a file is imported via include, the include's name attribute provides the instance name (e.g., "left_arm"), while this attribute provides the module identity. Use lowercase-with-hyphens by convention.
  • version Attribute
    Type: xs:string, default="1.0" — HCDF schema version this file conforms to. Current: 1.0. Parsers should accept documents with the same MAJOR version and ignore unknown elements for forward compatibility.
  • body-frame Attribute
    Type: FLU | FRD — Body-frame axis convention for all pose values in this file. FLU (X-forward, Y-left, Z-up): common in ground robotics and humanoid platforms. FRD (X-forward, Y-right, Z-down): common in aerospace and flight controllers. All xyz and rpy values in this document are expressed in the specified body-frame convention. Optional; when omitted, consumers should not assume a default and must either infer from context or require explicit specification. Semantic rule: all files in an include chain must use the same body-frame.
  • world-frame Attribute
    Type: ENU | NED — World-frame (navigation/map frame) axis convention for global coordinates. ENU (X-east, Y-north, Z-up): common in GIS, surveying, and ground robotics. NED (X-north, Y-east, Z-down): common in aerospace, marine navigation, and flight controllers. Determines how global poses, waypoints, and map-relative coordinates are interpreted. Independent of body-frame. Optional; when omitted, consumers should not assume a default. Semantic rule: all files in an include chain must use the same world-frame.
  • <description> Element
    Type: xs:string
    Human-readable description of what this HCDF file describes. For a top-level robot: the robot's purpose and key characteristics (e.g., "CogniPilot humanoid mobile base research platform with dual 7-DOF arms and TSN backbone"). For a reusable sub-assembly: the module's function and interface (e.g., "7-DOF manipulator arm with HEBI X8-series SEA actuators, 802.3dm daisy-chain, and force/torque sensing at wrist"). Helps humans and AI agents understand the file's contents without parsing the full document.
  • <author> Element
    Type: xs:string
    Author or organization that created this HCDF file (e.g., "CogniPilot Foundation", "HEBI Robotics", "Jane Doe"). For composed systems, each included file retains its own author, allowing BOM tools to trace which vendor or team provided each sub-assembly. Optional.
  • <license> Element
    Type: xs:string
    License governing use of this HCDF file and the design it describes. Use SPDX license identifiers when possible (e.g., "Apache-2.0", "BSD-3-Clause", "MIT", "CERN-OHL-S-2.0" for open hardware, "LicenseRef-Proprietary" for closed designs). For composed systems, each included file can carry a different license, enabling mixed open-source and proprietary sub-assemblies. Optional.
  • <url> Element
    Type: xs:anyURI
    Canonical URL for this HCDF file's project, documentation, or source repository (e.g., "https://github.com/CogniPilot/hcdformat"). Provides a stable reference for humans and tooling to find updates, issues, and related resources. Optional.
  • <comp> Element
    [0..*]
    Component definitions (rigid bodies / hardware assemblies).
  • <joint> Element
    [0..*]
    Kinematic joint connections between components.
  • <group> Element
    [0..*]
    Named joint groups for planning and control (e.g., left_arm, locomotion).
  • <state> Element
    [0..*]
    Named kinematic states / poses (e.g., home, transport).
  • <self-collision-disable> Element
    Component pairs to skip for self-collision checking.
    • <pair> Element
      [0..*]
      A pair of components to disable collision checking between.
      • comp1 Attribute
        Type: xs:string (required) — First component name.
      • comp2 Attribute
        Type: xs:string (required) — Second component name.
      • reason Attribute
        Type: xs:string — Why this pair is disabled: "adjacent" (share a joint), "unreachable" (physically can't collide), "mounted" (always in contact by design). Optional documentation.
  • <network> Element
    [0..*]
    Network definitions containing topology (links, buses, chains, meshes) and configuration (gPTP, TSN schedules, MACsec).
  • <transmission> Element
    [0..*]
    Motor-to-joint mechanical power transmissions.
  • <material> Element
    [0..*]
    Global material definitions (color, surface friction, restitution).
  • <include> Element
    [0..*]
    External HCDF file includes for model composition.
    • uri Attribute
      Type: xs:anyURI (required) — URI of the HCDF file to include (relative to this document or absolute). Required.
    • sha Attribute
      Type: xs:string — SHA-256 hash of the included file for content integrity verification. Optional but recommended for reproducible builds.
    • name Attribute
      Type: xs:string — Name prefix for all elements from the included file. Prevents name collisions when including the same module multiple times (e.g., "left_arm", "right_arm"). Optional.
    • pose Attribute
      Type: xs:string — Pose offset applied to all included components as "x y z roll pitch yaw" (meters and radians) relative to the including document's world frame. Optional; default: no offset.
  • name Attribute
    Type: xs:string (required) — Unique name for this component (e.g., "spine_soc", "left_shoulder", "wheel_fl_motor_driver"). Required. Used in joint parent/child references, port paths, and chain hop references.
  • role Attribute
    Type: sensor | compute | actuator | parent — Functional role (sensor, compute, actuator, parent). Optional. Aids tooling in categorizing components for network planning and visualization.
  • hwid Attribute
    Type: xs:string — Hardware identifier for matching physical devices during discovery (e.g., serial number, MAC address prefix, or part number). Optional. Used by discovery agents to map physical hardware to HCDF components.
  • struct-type Attribute
    Type: xs:string — Structural classification of this component: fuselage, wing, boom, mast, hull, chassis, frame, arm, leg, tail, nacelle, pod. Optional — provides semantic context for the component's role in the robot's body architecture. Used by agents for high-level reasoning about robot morphology.
  • ip-rating Attribute
    Type: xs:string — Ingress Protection rating per IEC 60529 (e.g., "IP67", "IP68", "IP54") or NEMA enclosure type (e.g., "NEMA-4X", "NEMA-6P"). The two-digit IP code indicates protection against solids (first digit, 0-6) and liquids (second digit, 0-9K): IP54 = dust-protected + splash-proof. IP65 = dust-tight + water jets. IP67 = dust-tight + temporary immersion (1m, 30min). IP68 = dust-tight + continuous immersion (depth/duration defined by manufacturer). IP69K = dust-tight + high-pressure steam cleaning. An agent uses this to validate that all components meet the environmental requirements for the target deployment (outdoor, underwater, washdown). Components without ip-rating are assumed to have no specific protection (or the rating is unknown). Optional; free-form string to support both IP and NEMA systems.
  • <description> Element
    Type: xs:string
    Human-readable description of the component (e.g., "NVIDIA Jetson AGX Orin compute module", "shoulder actuator assembly").
  • <board> Element
    Type: xs:string
    Board or hardware platform identifier (e.g., "jetson-agx-orin-64gb", "nxp-s32n79-evb", "custom-motor-driver-v3"). Used for BOM generation and hardware matching.
  • <operating-temp> Element
    Operating temperature range of this component. Use min and max attributes for the rated limits. Unit: "degC" (default). Example: min="-40" max="85" for automotive grade, min="0" max="70" for commercial grade, min="-40" max="125" for mil-spec. An agent uses this to validate that all components in a system can operate in the target environment. If the robot operates outdoors in winter (-20 degC), every component's operating-temp range must include that temperature. Components without operating-temp are assumed to have no specific constraint (or the constraint is unknown).
    • unit Attribute
      Type: xs:string — Physical unit. Optional — SI default applies if omitted.
    • min Attribute
      Type: xs:double — Minimum acceptable value in the specified unit.
    • max Attribute
      Type: xs:double — Maximum acceptable value in the specified unit.
  • <inertial> Element
    Inertial properties (mass, center of mass, inertia tensor) for dynamics simulation.
    • <mass> Element
      Type: xs:double
      Total mass of the component in kilograms (kg).
    • <com> Element
      Type: xs:string
      Center of mass position as "x y z" in meters relative to the component origin.
    • <inertia> Element
      Type: xs:string
      Rotational inertia tensor as "ixx ixy ixz iyy iyz izz" in kg*m^2. Six unique components of the symmetric 3x3 inertia matrix about the center of mass.
  • <visual> Element
    [0..*]
    Visual representation(s) for 3D rendering. Multiple visuals per component for multi-part models.
    • name Attribute
      Type: xs:string (required) — Unique name for this visual within the component. Required. Used for programmatic toggling and identification.
    • toggle Attribute
      Type: xs:string — Toggle group name. Visuals sharing the same toggle group can be shown/hidden together at runtime (e.g., "leds", "covers").
    • <pose> Element
      Type: xs:string
      Pose of the visual relative to the component origin as "x y z roll pitch yaw" (meters and radians). Default: identity (no offset).
    • <model> Element
      High-fidelity 3D model reference (GLB/glTF). Preferred over geometry when available.
      • uri Attribute
        Type: xs:anyURI (required) — URI of the 3D model file (GLB/glTF format). Relative to the HCDF document or absolute. Required.
      • sha Attribute
        Type: xs:string — SHA-256 hash of the referenced file for content integrity verification. Optional but recommended for reproducible builds.
    • <geometry> Element
      Geometry primitive fallback for rendering when no 3D model is available.
    • <material> Element
      Material properties (color, texture) for this visual. Overrides any material in the referenced model.
      • name Attribute
        Type: xs:string — Reference to a globally defined material name (from top-level material elements), or a local name for this inline material definition.
      • <color> Element
        RGBA color for this material. Optional if referencing a global material by name.
        • rgba Attribute
          Type: xs:string, default="0 0 0 1" — Four space-separated floats "R G B A" each in [0, 1]. R=red, G=green, B=blue, A=alpha (1=opaque, 0=transparent). Default: "0 0 0 1" (opaque black).
  • <collision> Element
    [0..*]
    Collision geometry for physics simulation. Multiple collision shapes per component for complex bounds.
    • name Attribute
      Type: xs:string (required) — Unique name for this collision shape within the component. Required.
    • <pose> Element
      Type: xs:string
      Pose of the collision geometry relative to the component origin as "x y z roll pitch yaw" (meters and radians). Default: identity.
    • <geometry> Element
      (required)
      Geometry primitive or mesh defining the collision boundary. Required.
    • <surface> Element
      Surface physics properties (friction, restitution, contact) for this collision shape.
      • material Attribute
        Type: xs:string — Reference to a named global material that provides default surface properties. Inline friction/restitution/contact elements override the referenced material's values.
      • <friction> Element
        Static and dynamic friction coefficients.
        • static Attribute
          Type: xs:double, default="0" — Static friction coefficient (dimensionless). Force required to initiate sliding. Default: 0.
        • dynamic Attribute
          Type: xs:double, default="0" — Dynamic (kinetic) friction coefficient (dimensionless). Force during sliding. Must be less than or equal to static. Default: 0.
      • <restitution> Element
        Type: xs:double
        Coefficient of restitution (bounciness). 0 = perfectly inelastic (no bounce), 1 = perfectly elastic (full bounce). Dimensionless, range [0, 1].
      • <contact> Element
        Contact dynamics parameters (stiffness, damping) for physics simulation.
        • stiffness Attribute
          Type: xs:double — Contact stiffness in N/m. Higher values create harder contacts with less penetration.
        • damping Attribute
          Type: xs:double — Contact damping coefficient in N*s/m. Dissipates energy during contact to reduce bouncing.
  • <frame> Element
    [0..*]
    Named coordinate frames attached to this component for sensor mounts, tool points, etc.
    • name Attribute
      Type: xs:string (required) — Unique name for this frame within the component. Required. Referenced by other elements using the frame name.
    • relative-to Attribute
      Type: xs:string — Name of another frame that this frame's pose is relative to. If omitted, the pose is relative to the component origin.
    • type Attribute
      Type: xs:string — Frame purpose type: "tcp" (Tool Center Point for end-effector control), "sensor-origin" (sensor reference frame), "attachment" (mechanical mounting point), "optical" (camera optical frame, Z-forward convention). Optional — omit for general-purpose frames.
    • <description> Element
      Type: xs:string
      Human-readable description of the frame's purpose (e.g., "camera mount point", "tool center point").
    • <pose> Element
      Type: xs:string
      Pose of the frame relative to the component origin (or to the frame named in relative-to) as "x y z roll pitch yaw" (meters and radians).
  • <switch> Element
    Ethernet switch fabric on this component. At most one per component. Ports inside the switch are bridged; ports outside are independent.
  • <port> Element
    [0..*]
    Independent (non-bridged) ports on this component. Not connected through any switch fabric. Used for point-to-point connections and bus interfaces.
  • <antenna> Element
    [0..*]
    Wireless antennas on this component (WiFi, BLE, GNSS, UWB, etc.).
  • <sensor> Element
    [0..*]
    Sensor group(s) on this component. Each sensor element groups related sub-sensors (IMU, camera, etc.).
  • <motor> Element
    [0..*]
    Motor(s) or actuator(s) on this component. Connected to joints via transmission elements.
  • <hmi> Element
    [0..*]
    Human-machine interface elements (displays, speakers, LEDs, buttons) on this component.
  • <surface> Element
    [0..*]
    Dynamic surfaces (aerofoils, control surfaces, propellers, wheels, tracks) on this component.
  • <power-source> Element
    [0..*]
    Energy storage (batteries, fuel tanks) on this component.
  • <software> Element
    Firmware or software identity running on this component. At most one per component.
    • name Attribute
      Type: xs:string (required) — Firmware or software package name (e.g., "zephyr-flight-controller", "linux-jetson-orin"). Required.
    • <version> Element
      Type: xs:string
      Firmware or software version string (e.g., "1.2.3", "v2024.03-rc1"). Semantic versioning recommended.
    • <hash> Element
      Type: xs:string
      SHA-256 hash of the firmware binary for integrity verification and update tracking.
    • <firmware-manifest-uri> Element
      Type: xs:anyURI
      URI of the firmware manifest file describing the full firmware package contents, dependencies, and update instructions.
    • <params> Element
      Type: xs:string
      Runtime configuration parameters string passed to the firmware at boot (e.g., DTS overlay name, boot arguments).
  • <discovered> Element
    Runtime discovery state (IP, port, last-seen). Populated by discovery agents, not authored by hand.
    • <ip> Element
      Type: xs:string
      Discovered IP address of the component (e.g., "10.0.1.42"). Populated at runtime.
    • <port> Element
      Type: xs:unsignedInt
      Discovered service port number (e.g., 8080 for a web interface, 7400 for DDS). Populated at runtime.
    • <last-seen> Element
      Type: xs:string
      ISO 8601 timestamp of when the device was last seen online (e.g., "2026-04-05T10:30:00Z"). Populated at runtime by discovery agents.
  • <extension> Element
    [0..*]
    Vendor or domain-specific extension data for this component.
    • domain Attribute
      Type: xs:string (required) — Namespace or domain identifier for the extension content (e.g., "gazebo", "isaac-sim", "vendor:mycompany", "ci:github-actions"). Required.
    • version Attribute
      Type: xs:string — Version of the extension schema for forward compatibility. Optional.
  • name Attribute
    Type: xs:string (required) — Unique name for this joint (e.g., "left_shoulder_pitch", "wheel_fl_spin"). Required. Referenced by transmission elements and mimic constraints.
  • type Attribute
    Type: revolute | continuous | prismatic | fixed | ball | universal | planar | screw | cylindrical | free (required) — Joint type determining degrees of freedom and required sub-elements. Required.
  • thread_pitch Attribute
    Type: xs:double — Thread pitch for screw joints in meters per revolution. Defines the linear advance per full rotation. Only applicable when type="screw".
  • <description> Element
    Type: xs:string
    Human-readable description of the joint's purpose (e.g., "left shoulder pitch", "front-left wheel spin").
  • <parent> Element
    (required)
    Parent component of the joint. Required. The parent remains fixed while the child moves.
    • comp Attribute
      Type: xs:string (required) — Name of the parent component. Required. Must match a comp name defined in the HCDF document.
  • <child> Element
    (required)
    Child component of the joint. Required. The child moves relative to the parent.
    • comp Attribute
      Type: xs:string (required) — Name of the child component. Required. Must match a comp name defined in the HCDF document.
  • <origin> Element
    Pose of the joint frame relative to the parent component's origin. Defines where the joint is located and how it is oriented on the parent body.
    • xyz Attribute
      Type: xs:string, default="0 0 0" — Position as three space-separated doubles "x y z" in meters. Default: "0 0 0" (origin of parent frame).
    • rpy Attribute
      Type: xs:string, default="0 0 0" — Orientation as three space-separated Euler angles "roll pitch yaw" in radians (XYZ extrinsic convention). Default: "0 0 0" (no rotation).
    • quat Attribute
      Type: xs:string — Orientation as quaternion "x y z w" (Hamilton convention, scalar-last). Optional; if present, overrides rpy.
  • <axis> Element
    Primary axis of rotation/translation in the joint frame. Required for revolute, continuous, prismatic, cylindrical, universal, and screw joints. Forbidden for fixed and free joints. For cylindrical joints, this single axis defines both the rotation and translation direction.
    • xyz Attribute
      Type: xs:string, default="1 0 0" — Axis direction vector as three space-separated doubles "x y z". Does not need to be unit-length (will be normalized). Default: "1 0 0" (X axis). Examples: "0 0 1" for Z-axis rotation, "0 1 0" for Y-axis.
  • <axis2> Element
    Secondary axis for universal joints (2-DOF). Defines the second rotation axis, which must be perpendicular to the primary axis. Only used when type="universal".
    • xyz Attribute
      Type: xs:string, default="1 0 0" — Axis direction vector as three space-separated doubles "x y z". Does not need to be unit-length (will be normalized). Default: "1 0 0" (X axis). Examples: "0 0 1" for Z-axis rotation, "0 1 0" for Y-axis.
  • <limit> Element
    Position, velocity, effort, acceleration, and jerk limits. Required for revolute, prismatic, and cylindrical joints. Optional for continuous (velocity/effort limits only). Forbidden for fixed and free. For cylindrical joints, lower/upper define the translation range (meters) and a separate semantic constraint defines the rotation range (enforced by tooling).
    • lower Attribute
      Type: xs:double, default="0" — Lower position limit. Radians for revolute joints, meters for prismatic. Default: 0.
    • upper Attribute
      Type: xs:double, default="0" — Upper position limit. Radians for revolute joints, meters for prismatic. Default: 0. Semantic rule: upper must be greater than or equal to lower for non-continuous joints.
    • effort Attribute
      Type: xs:double, default="0" — Maximum joint effort (torque for revolute in Nm, force for prismatic in N). Default: 0 (unlimited if not specified by tooling).
    • velocity Attribute
      Type: xs:double, default="0" — Maximum joint velocity (rad/s for revolute, m/s for prismatic). Default: 0 (unlimited if not specified by tooling).
    • acceleration Attribute
      Type: xs:double — Maximum joint acceleration (rad/s^2 for revolute, m/s^2 for prismatic). Optional; used for trajectory planning.
    • jerk Attribute
      Type: xs:double — Maximum joint jerk (rad/s^3 for revolute, m/s^3 for prismatic). Optional; used for smooth trajectory generation.
  • <dynamics> Element
    Damping, friction, and spring parameters for simulation.
    • damping Attribute
      Type: xs:double, default="0" — Viscous damping coefficient. Nm/(rad/s) for revolute, N/(m/s) for prismatic. Default: 0.
    • friction Attribute
      Type: xs:double, default="0" — Coulomb friction torque/force. Nm for revolute, N for prismatic. Applied as constant resistance opposing motion. Default: 0.
    • spring_stiffness Attribute
      Type: xs:double, default="0" — Spring stiffness. Nm/rad for revolute, N/m for prismatic. Creates a restoring force toward spring_reference position. Default: 0 (no spring).
    • spring_reference Attribute
      Type: xs:double, default="0" — Spring rest position. Radians for revolute, meters for prismatic. The position at which the spring exerts zero force. Default: 0.
  • <calibration> Element
    Calibration reference data for homing the joint to an absolute position.
    • reference_position Attribute
      Type: xs:double, default="0" — Absolute joint position (radians or meters) corresponding to the calibration reference mark. Default: 0.
    • rising Attribute
      Type: xs:double — Joint position (radians or meters) at the rising edge of the calibration sensor during a positive-direction sweep.
    • falling Attribute
      Type: xs:double — Joint position (radians or meters) at the falling edge of the calibration sensor during a positive-direction sweep.
  • <mimic> Element
    Mimic constraint that makes this joint track another joint's position.
    • joint Attribute
      Type: xs:string (required) — Name of the leader joint to mimic. Required. Semantic rule: must reference an existing joint defined in the HCDF document.
    • multiplier Attribute
      Type: xs:double, default="1" — Scaling factor applied to the leader joint's position. Default: 1.0 (identical motion). Use -1 for opposite-direction coupling.
    • offset Attribute
      Type: xs:double, default="0" — Constant offset added after scaling (radians for revolute, meters for prismatic). Default: 0.
  • <loop> Element
    Loop closure marker. Present when this joint closes a kinematic loop (parallel mechanism). The kinematic tree parser should treat this joint as a constraint, not a parent-child relationship. Used for four-bar linkages, delta robots, Stewart platforms.
    • <predecessor> Element
      Type: xs:string
      Predecessor body (comp name) in the kinematic loop at this closure point.
    • <successor> Element
      Type: xs:string
      Successor body (comp name) in the kinematic loop at this closure point.
    • <constraint-axes> Element
      Type: xs:string
      6-value string "tx ty tz rx ry rz" where 1=constrained, 0=free. Example: "1 1 1 1 1 0" constrains all except rotation around Z.
  • name Attribute
    Type: xs:string (required) — Unique name for this group (e.g., "left_arm", "right_hand", "locomotion", "head").
  • type Attribute
    Type: xs:string — Group purpose type: "end-effector" (gripper/hand), "kinematic-chain" (arm/leg), "locomotion" (wheels/legs). Optional.
  • tip-comp Attribute
    Type: xs:string — For end-effector groups: the component at the tip of the kinematic chain (e.g., the hand palm link). Used for forward kinematics to the end-effector.
  • tip-frame Attribute
    Type: xs:string — For end-effector groups: the TCP (Tool Center Point) frame at the tip. References a frame name on the tip-comp.
  • <description> Element
    Type: xs:string
    Human-readable description of this group's purpose.
  • <joint> Element
    [0..*]
    A joint included in this group.
    • ref Attribute
      Type: xs:string (required) — Name of the joint to include in this group.
  • <group> Element
    [0..*]
    A sub-group included in this group (hierarchical composition).
    • ref Attribute
      Type: xs:string (required) — Name of the group to include as a sub-group.
  • name Attribute
    Type: xs:string (required) — Unique name for this state (e.g., "home", "transport", "calibration", "pre-grasp").
  • default Attribute
    Type: xs:boolean, default="false" — If true, this is the default state used for visualization, collision checking, and as the starting configuration. At most one state should be default.
  • <description> Element
    Type: xs:string
    Human-readable description of this state's purpose.
  • <joint-position> Element
    [0..*]
    Position of a joint in this state. One per joint that differs from zero/default.
    • joint Attribute
      Type: xs:string (required) — Name of the joint this position applies to. Must reference an existing joint.
    • value Attribute
      Type: xs:double (required) — Joint position value in radians (revolute, continuous) or meters (prismatic).
  • chip Attribute
    Type: xs:string — Switch ASIC identifier (e.g., "sja1110", "mv88e6393x", "s32n79-integrated"). Omit for software bridges (Linux bridge, OVS). Optional.
  • <port> Element
    [0..*]
    Ports bridged by this switch fabric. These ports can forward frames to each other through the switch ASIC.
  • <tsn> Element
    TSN capabilities of the switch ASIC (Qbv, CBS, PSFP, FRER, preemption).
    • <qbv> Element
      IEEE 802.1Qbv Time-Aware Shaper capability at the switch level.
      • traffic-classes Attribute
        Type: xs:unsignedInt, default="8" — Number of traffic classes (priority queues) supported by the port. Default: 8 (IEEE 802.1Q maximum).
      • hw-queues Attribute
        Type: xs:unsignedInt, default="8" — Number of hardware transmit queues. Default: 8. May differ from traffic-classes if queue-to-TC mapping is used.
      • max-gcl-entries Attribute
        Type: xs:unsignedInt — Maximum number of Gate Control List entries the port hardware supports. Limits the complexity of Qbv schedules that can be programmed.
    • <cbs> Element
      IEEE 802.1Qav Credit-Based Shaper capability at the switch level.
      • max-sr-classes Attribute
        Type: xs:unsignedInt, default="2" — Maximum number of SR (Stream Reservation) classes supported. Standard AVB defines 2 classes (A and B). Some hardware supports additional classes. Default: 2.
    • <psfp> Element
      IEEE 802.1Qci Per-Stream Filtering and Policing capability at the switch level.
      • max-filters Attribute
        Type: xs:unsignedInt — Maximum number of stream filters the port hardware supports.
      • max-gates Attribute
        Type: xs:unsignedInt — Maximum number of stream gates (time-based ingress windows) the port hardware supports.
      • max-meters Attribute
        Type: xs:unsignedInt — Maximum number of flow meters for bandwidth policing the port hardware supports.
    • <frer> Element
      IEEE 802.1CB Frame Replication and Elimination for Reliability capability at the switch level.
      • seq-encoding Attribute
        Type: xs:string, default="r-tag" — Sequence number encoding format. Default: "r-tag" (IEEE 802.1CB R-TAG). Alternatives include "hsrp" for HSR/PRP sequence tags.
    • <preemption> Element
      IEEE 802.1Qbu/802.3br frame preemption capability at the switch level.
      • min-fragment-size Attribute
        Type: xs:unsignedInt, default="64" — Minimum preemptable fragment size in bytes. Preempted frames are split at fragment boundaries no smaller than this. Default: 64 bytes.
  • <macsec> Element
    MACsec hardware cipher suites supported by the switch ASIC.
    • <cipher> Element
      [0..*]
      Values: gcm-aes-128 | gcm-aes-256 | gcm-aes-xpn-128 | gcm-aes-xpn-256
      A MACsec cipher suite supported by the switch ASIC.
  • name Attribute
    Type: xs:string (required) — Unique name for this sensor group within the component (e.g., "imu_main", "front_camera_suite"). Required.
  • update-rate Attribute
    Type: xs:double — Sensor output update rate in Hz. Applies to all sub-sensors in this group unless overridden. Optional.
  • <inertial> Element
    [0..*]
    Inertial measurement unit(s) — accelerometers and/or gyroscopes.
    • type Attribute
      Type: accel | gyro | accel_gyro (required) — Inertial sensor sub-type. Required. Determines which parameter sub-elements (accel, gyro) are expected.
    • <pose> Element
      Type: xs:string
      Pose of the inertial sensor relative to the sensor group origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver identification and axis alignment for the inertial sensor IC.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <accel> Element
      Accelerometer measurement parameters (range in g, resolution, noise, bandwidth). Present when type is "accel" or "accel_gyro".
      • <range> Element
        Full-scale measurement range (e.g., 16 with unit="g" for +/-16g accelerometer, 2000 with unit="dps" for gyroscope).
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <resolution> Element
        Measurement resolution — smallest detectable change (e.g., 0.488 with unit="mg" for 16-bit at 16g range).
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <odr> Element
        Output Data Rate — hardware sampling frequency in Hz. This is how fast the ADC converts, regardless of how often software processes the data. Example: 3200 with unit="Hz". Determines Nyquist frequency (odr/2) and aliasing behavior.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth> Element
        Anti-aliasing low-pass filter cutoff frequency in Hz. Determines the useful signal bandwidth. Typically at or below ODR/2 (Nyquist). Example: 1600 with unit="Hz" for ODR=3200Hz. Lower bandwidth reduces noise but limits frequency response.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <fifo> Element
        Hardware FIFO buffer configuration. When present, the sensor collects samples at ODR rate into a buffer and interrupts at ODR/watermark rate. Example: ODR=3200Hz, fifo watermark=8 → 400Hz interrupt rate delivering 8 samples per burst.
        • depth Attribute
          Type: xs:unsignedInt — Maximum FIFO depth in samples (hardware limit, e.g., 256 for ICM45686, 512 for BMI088). This is the total buffer capacity before overflow.
        • watermark Attribute
          Type: xs:unsignedInt — Watermark level in samples — interrupt fires when this many samples have accumulated. Controls the effective processing rate: effective_rate = ODR / watermark. Example: ODR=3200Hz, watermark=8 → 400Hz interrupt rate, 8 samples per burst.
      • <noise> Element
        Noise model for this measurement axis. Includes spectral density (stddev), bias instability (bias-mean, bias-stddev), and quantization precision.
        • type Attribute
          Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
        • <mean> Element
          Type: xs:double
          Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
        • <stddev> Element
          Type: xs:double
          Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
        • <bias-mean> Element
          Type: xs:double
          Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
        • <bias-stddev> Element
          Type: xs:double
          Standard deviation of the bias random walk. Default: 0.
        • <precision> Element
          Type: xs:double
          Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <gyro> Element
      Gyroscope measurement parameters (range in deg/s, resolution, noise, bandwidth). Present when type is "gyro" or "accel_gyro".
      • <range> Element
        Full-scale measurement range (e.g., 16 with unit="g" for +/-16g accelerometer, 2000 with unit="dps" for gyroscope).
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <resolution> Element
        Measurement resolution — smallest detectable change (e.g., 0.488 with unit="mg" for 16-bit at 16g range).
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <odr> Element
        Output Data Rate — hardware sampling frequency in Hz. This is how fast the ADC converts, regardless of how often software processes the data. Example: 3200 with unit="Hz". Determines Nyquist frequency (odr/2) and aliasing behavior.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth> Element
        Anti-aliasing low-pass filter cutoff frequency in Hz. Determines the useful signal bandwidth. Typically at or below ODR/2 (Nyquist). Example: 1600 with unit="Hz" for ODR=3200Hz. Lower bandwidth reduces noise but limits frequency response.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <fifo> Element
        Hardware FIFO buffer configuration. When present, the sensor collects samples at ODR rate into a buffer and interrupts at ODR/watermark rate. Example: ODR=3200Hz, fifo watermark=8 → 400Hz interrupt rate delivering 8 samples per burst.
        • depth Attribute
          Type: xs:unsignedInt — Maximum FIFO depth in samples (hardware limit, e.g., 256 for ICM45686, 512 for BMI088). This is the total buffer capacity before overflow.
        • watermark Attribute
          Type: xs:unsignedInt — Watermark level in samples — interrupt fires when this many samples have accumulated. Controls the effective processing rate: effective_rate = ODR / watermark. Example: ODR=3200Hz, watermark=8 → 400Hz interrupt rate, 8 samples per burst.
      • <noise> Element
        Noise model for this measurement axis. Includes spectral density (stddev), bias instability (bias-mean, bias-stddev), and quantization precision.
        • type Attribute
          Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
        • <mean> Element
          Type: xs:double
          Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
        • <stddev> Element
          Type: xs:double
          Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
        • <bias-mean> Element
          Type: xs:double
          Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
        • <bias-stddev> Element
          Type: xs:double
          Standard deviation of the bias random walk. Default: 0.
        • <precision> Element
          Type: xs:double
          Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <geometry> Element
      Geometry for visualizing the inertial sensor package.
  • <em> Element
    [0..*]
    Electromagnetic sensor(s) — magnetometers, metal detectors, eddy current probes.
    • type Attribute
      Type: mag | metal_detector | eddy_current | emf | hall-effect | fluxgate (required) — Electromagnetic sensor sub-type (mag, metal_detector, eddy_current, emf). Required.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
  • <optical> Element
    [0..*]
    Optical sensor(s) — cameras, lidars, ToF sensors, optical flow sensors.
    • type Attribute
      Type: camera | thermal | lidar | tof | optical_flow (required) — Optical sensor sub-type (camera, thermal, lidar, tof, optical_flow). Required.
    • <pose> Element
      Type: xs:string
      Pose of the optical sensor module relative to the sensor group origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver identification for the optical sensor (e.g., "oak-d-pro", "rplidar-a2", "vl53l5cx").
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <geometry> Element
      Geometry for visualizing the optical sensor housing.
    • <fov> Element
      [0..*]
      Field-of-view definition(s). One per sensing cone/pyramid. Stereo cameras have two FoVs; omnidirectional lidars may have one 360-degree FoV.
      • name Attribute
        Type: xs:string (required) — Unique name for this FoV within the sensor (e.g., "left", "right", "depth", "rgb"). Required.
      • color Attribute
        Type: xs:string — Visualization color for the FoV cone in the 3D viewer (e.g., "0.2 0.8 0.2 0.3" for translucent green RGBA).
      • <description> Element
        Type: xs:string
        Human-readable description of this FoV (e.g., "left stereo camera", "forward-facing depth").
      • <pose> Element
        Type: xs:string
        Pose of the FoV origin relative to the sensor origin as "x y z roll pitch yaw" (meters and radians). For stereo cameras, this encodes the baseline offset.
      • <geometry> Element
        FoV volume geometry for visualization. Typically a frustum (conical or pyramidal).
      • <intrinsics> Element
        Design-spec camera intrinsic parameters (focal length, principal point, image size) from the datasheet. For calibrated values, use the calibration element instead.
        • <width> Element
          Type: xs:unsignedInt
          Image width in pixels.
        • <height> Element
          Type: xs:unsignedInt
          Image height in pixels.
        • <format> Element
          Type: xs:string
          Pixel format string (e.g., "RGB8", "MONO8", "YUYV", "BAYER_RGGB8", "DEPTH_FLOAT32").
        • <fx> Element
          Type: xs:double
          Focal length in pixels along the X axis (horizontal).
        • <fy> Element
          Type: xs:double
          Focal length in pixels along the Y axis (vertical).
        • <cx> Element
          Type: xs:double
          Principal point X coordinate in pixels (typically image_width / 2).
        • <cy> Element
          Type: xs:double
          Principal point Y coordinate in pixels (typically image_height / 2).
      • <distortion> Element
        Design-spec lens distortion coefficients (Brown-Conrady model). For calibrated values, use the calibration element instead.
        • <k1> Element
          Type: xs:double
          First radial distortion coefficient. Positive = barrel distortion, negative = pincushion.
        • <k2> Element
          Type: xs:double
          Second radial distortion coefficient.
        • <k3> Element
          Type: xs:double
          Third radial distortion coefficient (for wide-angle lenses).
        • <p1> Element
          Type: xs:double
          First tangential distortion coefficient (decentering).
        • <p2> Element
          Type: xs:double
          Second tangential distortion coefficient (decentering).
      • <calibration> Element
        Measured calibration results for this specific camera unit. Contains calibrated intrinsics (fx, fy, cx, cy), distortion coefficients (k1-k3, p1-p2), reprojection error, calibration date, temperature, and method. When present, agents should use these values instead of the design-spec intrinsics/distortion.
        • <fx> Element
          Type: xs:double
          Calibrated focal length in pixels along X axis. Overrides intrinsics/fx for runtime use.
        • <fy> Element
          Type: xs:double
          Calibrated focal length in pixels along Y axis. Overrides intrinsics/fy.
        • <cx> Element
          Type: xs:double
          Calibrated principal point X in pixels. Often differs from image center by several pixels due to lens/sensor alignment.
        • <cy> Element
          Type: xs:double
          Calibrated principal point Y in pixels.
        • <k1> Element
          Type: xs:double
          Calibrated radial distortion coefficient k1.
        • <k2> Element
          Type: xs:double
          Calibrated radial distortion coefficient k2.
        • <k3> Element
          Type: xs:double
          Calibrated radial distortion coefficient k3 (for wide-angle lenses).
        • <p1> Element
          Type: xs:double
          Calibrated tangential distortion coefficient p1.
        • <p2> Element
          Type: xs:double
          Calibrated tangential distortion coefficient p2.
        • <reprojection-error> Element
          RMS reprojection error from the calibration — the quality metric. Unit: "px" (pixels). Values below 0.5 px are excellent; 0.5-1.0 px is good; above 1.0 px suggests the calibration should be redone. An agent can use this to assess confidence in the calibration.
          • unit Attribute
            Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
        • <date> Element
          Type: xs:string
          Date the calibration was performed in ISO 8601 format (YYYY-MM-DD). An agent can flag stale calibrations (e.g., older than 6 months or after a lens change).
        • <temperature> Element
          Ambient temperature during calibration. Unit: "degC". Focal length varies with temperature due to thermal expansion of the lens and mount — calibrations at 20°C may not be accurate at -10°C or 50°C.
          • unit Attribute
            Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
        • <method> Element
          Type: xs:string
          Calibration method and target used. Examples: "checkerboard-8x6-30mm" (8x6 inner corners, 30mm square size), "charuco-5x7-40mm" (ChArUco board), "apriltag-6x6-50mm", "circle-grid-4x11-asymmetric". Records how the calibration was done for reproducibility.
        • <images> Element
          Type: xs:unsignedInt
          Number of calibration images used. More images generally means better coverage of the image plane and more reliable results. Typical: 20-50 images from diverse angles.
      • <noise> Element
        Per-pixel noise model for this FoV (e.g., depth noise for ToF sensors).
        • type Attribute
          Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
        • <mean> Element
          Type: xs:double
          Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
        • <stddev> Element
          Type: xs:double
          Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
        • <bias-mean> Element
          Type: xs:double
          Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
        • <bias-stddev> Element
          Type: xs:double
          Standard deviation of the bias random walk. Default: 0.
        • <precision> Element
          Type: xs:double
          Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth for network planning. Cameras and lidars generate significant data — an agent uses this to validate TSN schedules and link capacity.
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <camera-params> Element
      Camera-specific parameters (shutter, HDR, compression, trigger, thermal specs). Use when type="camera" or type="thermal".
      • <shutter> Element
        Type: xs:string
        Shutter type: "global" (all pixels exposed simultaneously — no motion blur, required for high-speed robotics) or "rolling" (rows exposed sequentially — causes skew/wobble on fast motion, acceptable for slow scenes).
      • <hdr> Element
        Type: xs:boolean
        High Dynamic Range capability. true = can capture indoor shadows and outdoor sunlight in one frame. Critical for robots transitioning between lighting conditions.
      • <dynamic-range> Element
        Dynamic range. Unit: "dB". Standard: 60dB. HDR: 120dB+.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <depth-range> Element
        For depth/RGBD cameras: usable depth measurement range. min = closest, max = farthest. Unit: "m".
        • unit Attribute
          Type: xs:string — Physical unit. Optional — SI default applies if omitted.
        • min Attribute
          Type: xs:double — Minimum acceptable value in the specified unit.
        • max Attribute
          Type: xs:double — Maximum acceptable value in the specified unit.
      • <compression> Element
        Type: xs:string
        Output compression: "raw" (uncompressed, highest bandwidth — 1080p@30fps is ~1.5Gbps), "jpeg" (lossy per-frame), "h264" (lossy inter-frame), "h265" (best compression, ~5-20Mbps for 1080p). Affects network bandwidth requirements.
      • <trigger> Element
        Type: xs:string
        Trigger mode: "free-running" (camera controls timing), "hardware" (external GPIO triggers capture — needed for multi-camera synchronization), "software" (software command triggers).
      • <ir-cut> Element
        Type: xs:boolean
        IR cut filter present. true = blocks infrared (standard color camera). false = passes IR (for night vision with IR illumination or NIR sensing).
      • <spectral-band> Element
        Type: xs:string
        Infrared spectral band for thermal cameras: "LWIR" (8-14um, most common, uncooled), "MWIR" (3-5um, cooled, higher sensitivity), "SWIR" (1-3um, see through fog/smoke). Not applicable for visible cameras.
      • <netd> Element
        Noise Equivalent Temperature Difference — thermal camera sensitivity. Lower = better. Unit: "mK". Typical uncooled LWIR: 40-60mK. Cooled MWIR: 15-25mK.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <temperature-range> Element
        Calibrated temperature measurement range for thermal cameras. Unit: "degC". Example: min="-20" max="150" for industrial, min="-40" max="500" for high-temp.
        • unit Attribute
          Type: xs:string — Physical unit. Optional — SI default applies if omitted.
        • min Attribute
          Type: xs:double — Minimum acceptable value in the specified unit.
        • max Attribute
          Type: xs:double — Maximum acceptable value in the specified unit.
    • <lidar-params> Element
      Lidar-specific parameters (scan-type, channels, points-per-second, returns, wavelength). Use when type="lidar".
      • <scan-type> Element
        Type: xs:string
        Scanning mechanism: "mechanical" (spinning head — 360° FOV but vibration-sensitive, has wear parts), "solid-state" (no moving parts, limited FOV, very robust), "mems" (MEMS mirror, compact, moderate FOV), "flash" (illuminates entire scene at once, short range, no scanning).
      • <channels> Element
        Type: xs:unsignedInt
        Number of vertical channels (laser/detector pairs). More = denser vertical coverage. Typical: 16, 32, 64, 128.
      • <points-per-second> Element
        Type: xs:unsignedInt
        Total point measurement rate. Determines point cloud density and downstream processing/bandwidth. Example: 300000 (Livox Mid-360), 1200000 (Hesai XT32).
      • <scan-rate> Element
        Frame/rotation rate. For mechanical: rotations per second. For solid-state: frame rate. Unit: "Hz". Typical: 10-20.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <returns> Element
        Type: xs:string
        Return mode: "single" (first or strongest only), "dual" (first + strongest), "triple" (first + second + strongest). Multi-return sees through rain, dust, and vegetation.
      • <wavelength> Element
        Laser wavelength. 905nm = common, lower cost, affected by sunlight. 1550nm = eye-safe at higher power, better rain/fog penetration, more expensive. Unit: "nm".
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <horizontal-fov> Element
        Horizontal field of view. 360 for spinning lidars, 60-120 for solid-state. Unit: "deg".
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <vertical-fov> Element
        Vertical field of view as min/max angle. Example: min="-25" max="15" unit="deg".
        • unit Attribute
          Type: xs:string — Physical unit. Optional — SI default applies if omitted.
        • min Attribute
          Type: xs:double — Minimum acceptable value in the specified unit.
        • max Attribute
          Type: xs:double — Maximum acceptable value in the specified unit.
  • <rf> Element
    [0..*]
    Radio-frequency sensor(s) — GNSS receivers, UWB rangers, radars, radio altimeters.
    • type Attribute
      Type: gnss | uwb | radar | radio_altimeter (required) — RF sensor sub-type (gnss, uwb, radar, radio_altimeter). Required.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
    • <radar-params> Element
      Radar-specific parameters (frequency, modulation, FOV, resolution, velocity, MIMO). Use when type="radar".
      • <frequency> Element
        Operating frequency. 77-79GHz = automotive standard (high resolution). 24GHz = industrial (longer range, lower resolution). Unit: "GHz".
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <modulation> Element
        Type: xs:string
        Modulation scheme: "fmcw" (Frequency-Modulated Continuous Wave — automotive standard, measures range + velocity simultaneously) or "pulsed" (traditional, longer range).
      • <azimuth-fov> Element
        Horizontal field of view. Unit: "deg". Typical: 120 short-range, 20 long-range.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <elevation-fov> Element
        Vertical field of view (4D imaging radar). Unit: "deg". Presence indicates elevation-capable radar.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <azimuth-resolution> Element
        Azimuth angular resolution — minimum angle to separate two targets horizontally. Unit: "deg".
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <elevation-resolution> Element
        Elevation angular resolution. Unit: "deg".
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <range-resolution> Element
        Range resolution — minimum distance to separate two targets at the same angle. Unit: "m". Determined by chirp bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <velocity-range> Element
        Maximum measurable radial velocity. Unit: "m/s".
        • unit Attribute
          Type: xs:string — Physical unit. Optional — SI default applies if omitted.
        • min Attribute
          Type: xs:double — Minimum acceptable value in the specified unit.
        • max Attribute
          Type: xs:double — Maximum acceptable value in the specified unit.
      • <velocity-resolution> Element
        Velocity resolution — minimum speed difference to separate two targets. Unit: "m/s".
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <max-detections> Element
        Type: xs:unsignedInt
        Maximum simultaneous target detections per frame.
      • <mimo> Element
        Type: xs:string
        MIMO antenna configuration as "NtxMrx" (e.g., "3tx4rx" = 12 virtual channels). More virtual channels = better angular resolution.
    • <gnss-params> Element
      GNSS-specific parameters (constellations, frequencies, RTK, accuracy, PPS). Use when type="gnss".
      • <constellation> Element
        [0..*]
        Type: xs:string
        Supported satellite constellation: GPS, GLONASS, Galileo, BeiDou, QZSS, NavIC. More = better urban canyon performance.
      • <frequency> Element
        [0..*]
        Type: xs:string
        Supported frequency band: L1, L2, L5, E1, E5a, E5b, B1, B2. Multi-frequency enables ionospheric correction.
      • <rtk> Element
        Type: xs:boolean
        RTK (Real-Time Kinematic) capable. true = cm-level positioning with base station or NTRIP corrections.
      • <accuracy-standalone> Element
        Horizontal accuracy without corrections (CEP50). Unit: "m". Typical: 1.5m single-freq, 1.0m multi-freq.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <accuracy-rtk> Element
        Horizontal accuracy with RTK fix. Unit: "m". Typical: 0.01-0.02m.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <pps> Element
        Type: xs:boolean
        Pulse-Per-Second output for precise time synchronization. Can serve as time reference for gPTP or sensor timestamping.
      • <dead-reckoning> Element
        Type: xs:boolean
        Built-in dead reckoning with IMU fusion for GNSS-denied environments (tunnels, urban canyons).
      • <anti-spoofing> Element
        Type: xs:boolean
        Anti-spoofing capability. Detects and rejects fake GNSS signals.
  • <chemical> Element
    [0..*]
    Chemical/environmental sensor(s) — gas detectors, pH sensors, humidity sensors.
    • type Attribute
      Type: gas | ph | humidity (required) — Chemical sensor sub-type (gas, ph, humidity). Required.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
  • <force> Element
    [0..*]
    Force/torque sensor(s) — strain gauges, pressure transducers, torque sensors, load cells.
    • type Attribute
      Type: strain | pressure | torque | load_cell (required) — Force sensor sub-type (strain, pressure, torque, load_cell). Required.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
  • <encoder> Element
    [0..*]
    Position/velocity encoder(s) — motor-side, joint-side, wheel, or linear. Optical, magnetic, inductive, capacitive, or resistive principle.
    • type Attribute
      Type: incremental | absolute | linear (required) — Encoder measurement type: incremental (relative, needs homing), absolute (absolute position per revolution or multi-turn), or linear. Required.
    • principle Attribute
      Type: optical | magnetic | inductive | capacitive | resistive — Physical sensing principle: optical, magnetic, inductive, capacitive, or resistive.
    • interface Attribute
      Type: xs:string — Communication interface: quadrature, ssi, biss, endat, spi, analog.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
  • <temperature> Element
    [0..*]
    Temperature sensor(s) — thermistors, RTDs, thermocouples, IR. Common: motor winding temp, battery cell temp, ambient.
    • type Attribute
      Type: thermistor | rtd | thermocouple | ir (required) — Temperature sensor type: thermistor (NTC/PTC, common in motors), rtd (PT100/PT1000, high accuracy), thermocouple (K/J/T type, wide range), ir (non-contact infrared). Required.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
  • <radiation> Element
    [0..*]
    Radiation sensor(s) — Geiger counters, scintillation detectors, neutron sensors, dosimeters.
    • type Attribute
      Type: geiger | scintillation | neutron | dosimeter (required) — Radiation sensor type (geiger, scintillation, neutron, dosimeter). Required.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
  • <audio> Element
    [0..*]
    Audio/acoustic sensor(s) — microphones, ultrasonic transducers, sonar, hydrophones.
    • type Attribute
      Type: microphone | ultrasonic | sonar | hydrophone (required) — Audio sensor type (microphone, ultrasonic, sonar, hydrophone). Required.
    • active Attribute
      Type: xs:boolean, default="false" — Whether this is an active transducer (emits and receives) or passive (receives only). true for ultrasonic/sonar emitter+receiver pairs; false for microphones and hydrophones.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
    • <frequency-range> Element
      Operating frequency range. Unit: "Hz" or "kHz". Example: min="20" max="20000" unit="Hz" for audible microphone, min="38" max="42" unit="kHz" for 40kHz ultrasonic. Defines the acoustic bandwidth.
      • unit Attribute
        Type: xs:string — Physical unit. Optional — SI default applies if omitted.
      • min Attribute
        Type: xs:double — Minimum acceptable value in the specified unit.
      • max Attribute
        Type: xs:double — Maximum acceptable value in the specified unit.
    • <sensitivity> Element
      Microphone sensitivity. Unit: "dBV/Pa" (typical: -44 to -26 dBV/Pa for MEMS microphones). For ultrasonic: transmit SPL in dB at reference distance.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <channels> Element
      Type: xs:unsignedInt
      Number of acoustic channels. 1 for mono, 2+ for microphone array (used for beamforming and sound localization).
    • <beam-width> Element
      Acoustic beam width for directional transducers (ultrasonic, sonar). Unit: "deg". Narrower beam = longer range, lower angular coverage.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <tactile> Element
    [0..*]
    Tactile/contact sensor(s) — capacitive arrays, FSR pads, piezoelectric skins, barometric patches, optical gel sensors. Provides spatially distributed pressure/contact data for grasp planning, slip detection, and safe interaction.
    • type Attribute
      Type: capacitive | resistive | piezoelectric | barometric | optical (required) — Tactile sensor technology type (capacitive, resistive, piezoelectric, barometric, optical). Required. Determines the sensing principle and typical characteristics: capacitive and barometric are best for static pressure, piezoelectric for dynamic events (slip, texture), optical for rich 3D contact geometry.
    • <pose> Element
      Type: xs:string
      Pose of the sensor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
    • <driver> Element
      Driver IC identification and axis alignment configuration.
      • name Attribute
        Type: xs:string (required) — Driver identifier string used by the runtime to load the correct sensor driver (e.g., "bmi088", "icm42688p", "bmp390"). Required.
      • <axis-align> Element
        Axis remapping from sensor internal axes to component body frame. Optional; omit if sensor axes match body frame.
        • x Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="X" — Which body-frame axis the sensor's X axis maps to. Default: X (no remapping).
        • y Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Y" — Which body-frame axis the sensor's Y axis maps to. Default: Y (no remapping).
        • z Attribute
          Type: X | -X | Y | -Y | Z | -Z, default="Z" — Which body-frame axis the sensor's Z axis maps to. Default: Z (no remapping).
    • <range> Element
      Full-scale measurement range with unit.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <resolution> Element
      Measurement resolution — smallest detectable change.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <noise> Element
      Noise model for the sensor output.
      • type Attribute
        Type: gaussian | uniform | none (required) — Noise distribution type. Required. Use "gaussian" for realistic sensor simulation, "none" for ideal sensors.
      • <mean> Element
        Type: xs:double
        Mean of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <stddev> Element
        Type: xs:double
        Standard deviation of the noise distribution. Default: 0. Units match the sensor's measurement unit.
      • <bias-mean> Element
        Type: xs:double
        Mean of the bias random walk (constant offset that drifts slowly over time). Default: 0.
      • <bias-stddev> Element
        Type: xs:double
        Standard deviation of the bias random walk. Default: 0.
      • <precision> Element
        Type: xs:double
        Quantization precision (ADC resolution). Output is rounded to the nearest multiple of this value. Units match the sensor's measurement unit.
    • <data-output> Element
      Output bandwidth and frame size for network planning. Only needed for sensors that transmit significant data over the network (cameras, lidars, radars).
      • <bandwidth> Element
        Raw output data rate. Unit: "Mbps" or "Gbps". Example: 7000 Mbps for 1920x1080 RGB at 30fps uncompressed. This is the maximum bandwidth the sensor can produce.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <bandwidth-compressed> Element
        Compressed output data rate when hardware compression is enabled. Unit: "Mbps". Example: 20 Mbps for H.265 compressed 1080p@30fps. If the sensor outputs compressed data over the network, use this for bandwidth planning instead of raw bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <frame-size> Element
        Size of a single output frame/scan. Unit: "bytes". Example: 6220800 for 1920x1080x3 RGB frame. Used with update-rate to calculate bandwidth: frame-size x update-rate = bandwidth.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <geometry> Element
      Visualization geometry for the sensor.
    • <rows> Element
      Type: xs:unsignedInt
      Number of rows in the taxel array. Defines the spatial layout along one axis of the sensing surface. Example: 4 rows x 4 cols = 16 taxels in a fingertip pad.
    • <cols> Element
      Type: xs:unsignedInt
      Number of columns in the taxel array. Together with rows, defines the rectangular grid of sensing elements.
    • <taxels> Element
      Type: xs:unsignedInt
      Total number of individual tactile sensing elements (taxels). For regular grids, taxels = rows x cols. For irregular layouts (e.g., curved fingertip, hexagonal packing), specify taxels directly when rows/cols do not apply. Example: 160 taxels on a SynTouch BioTac, 32 on a XELA uSkin patch.
    • <spatial-resolution> Element
      Center-to-center spacing between adjacent taxels. Unit: "mm". Determines the minimum feature size the sensor can resolve through touch. Example: 2.5 mm for a fingertip array, 10 mm for a body-skin patch. Smaller spacing = finer spatial detail but more wiring and processing.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <pressure-range> Element
      Measurable contact pressure range per taxel. Unit: "kPa" or "N". min = minimum detectable pressure (sensitivity threshold), max = saturation pressure. Example: min="0.1" max="100" unit="kPa" for a capacitive fingertip. Light touch is ~1 kPa, firm grip is 10-50 kPa, maximum grip can exceed 100 kPa.
      • unit Attribute
        Type: xs:string — Physical unit. Optional — SI default applies if omitted.
      • min Attribute
        Type: xs:double — Minimum acceptable value in the specified unit.
      • max Attribute
        Type: xs:double — Maximum acceptable value in the specified unit.
    • <sensing-area> Element
      Total active sensing area of the tactile surface. Unit: "mm2" or "cm2". Example: 314 mm2 for a circular fingertip pad (20mm diameter), 2500 mm2 for a 50x50 palm patch.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • name Attribute
    Type: xs:string (required) — Unique name for this motor within the component (e.g., "shoulder_motor", "wheel_fl"). Required. Referenced by transmission elements.
  • type Attribute
    Type: bldc | brushed | stepper | servo | linear | solenoid | hydraulic | pneumatic | thrust | ice — Motor technology type (bldc, brushed, stepper, servo, linear, hydraulic, pneumatic, thrust, ice). Optional; useful for selecting appropriate control algorithms.
  • construction Attribute
    Type: xs:string — Motor physical construction: "inrunner" (rotor inside stator — higher RPM, common in industrial servos and drone motors), "outrunner" (rotor outside stator — higher torque, common in hub motors and large drone motors), "axial-flux" (flat pancake design — very thin, high torque density), "pancake" (flat form factor). Only relevant for BLDC/brushed motors.
  • visual Attribute
    Type: xs:string — Name of the visual element containing this motor's mesh for 3D highlighting.
  • mesh Attribute
    Type: xs:string — GLTF mesh node name within the visual for 3D highlighting of this motor.
  • encoder Attribute
    Type: xs:string — Name reference to an encoder sensor on this component. Identifies motor-side position feedback. The encoder is a full sensor with its own pose, driver, noise model, and resolution.
  • hall Attribute
    Type: xs:string — Name reference to a Hall sensor on this component used for BLDC commutation. Typically an em-type sensor with 3 Hall elements (U/V/W) providing 6-step commutation signals. Often shares the motor signal connector with the encoder.
  • thermistor Attribute
    Type: xs:string — Name reference to a temperature sensor on this component monitoring motor winding temperature. Typically an NTC thermistor embedded in the motor stator. Used for thermal protection — the agent can monitor temperature and derate or shut down before exceeding max-temperature.
  • <pose> Element
    Type: xs:string
    Pose of the motor relative to the component origin as "x y z roll pitch yaw" (meters and radians).
  • <voltage> Element
    Motor voltage ratings with nominal/continuous/peak/max levels. Unit: typically "V".
    • unit Attribute
      Type: xs:string — Physical unit. Optional — V for voltage elements, A for current elements by SI default.
    • nominal Attribute
      Type: xs:double — Nominal (design-point) operating value. The steady-state value the motor is designed for.
    • continuous Attribute
      Type: xs:double — Maximum continuous value the motor can sustain indefinitely without overheating.
    • peak Attribute
      Type: xs:double — Peak value the motor can sustain for a short duration (typically seconds to minutes) before thermal limits are reached.
    • max Attribute
      Type: xs:double — Absolute maximum value. Exceeding this causes permanent damage or triggers hardware protection.
  • <current> Element
    Motor current ratings with nominal/continuous/peak/max levels. Unit: typically "A".
    • unit Attribute
      Type: xs:string — Physical unit. Optional — V for voltage elements, A for current elements by SI default.
    • nominal Attribute
      Type: xs:double — Nominal (design-point) operating value. The steady-state value the motor is designed for.
    • continuous Attribute
      Type: xs:double — Maximum continuous value the motor can sustain indefinitely without overheating.
    • peak Attribute
      Type: xs:double — Peak value the motor can sustain for a short duration (typically seconds to minutes) before thermal limits are reached.
    • max Attribute
      Type: xs:double — Absolute maximum value. Exceeding this causes permanent damage or triggers hardware protection.
  • <resistance> Element
    Terminal-to-terminal winding resistance. Unit: typically "ohm".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <torque-constant> Element
    Motor torque constant (Kt). Torque output per ampere of current. Unit: typically "Nm/A".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <velocity-constant> Element
    Motor velocity constant — the proportionality between voltage and rotational speed. This single element covers both Ke (back-EMF constant) and Kv (speed constant) conventions; the unit attribute determines which: use unit="V/RPM" or unit="V.s/rad" for Ke (back-EMF style, common on industrial servo and hub motor datasheets, e.g., 0.109 V/RPM for ZLLG65ASM250-L); use unit="RPM/V" for Kv (speed constant style, common on drone/RC BLDC datasheets, e.g., 920 RPM/V). Ke and Kv are reciprocals of each other — an agent computes one from the other as needed.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <max-speed> Element
    Maximum no-load shaft speed. Unit: typically "rpm" or "rad/s".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <stall-torque> Element
    Stall torque at rated voltage. Unit: typically "Nm".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <thermal-resistance> Element
    Thermal resistance from winding to ambient. Unit: typically "degC/W". Used for thermal derating calculations.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <max-temperature> Element
    Maximum allowable winding temperature before demagnetization or insulation failure. Unit: typically "degC".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <thrust-axis> Element
    Type: xs:string
    Direction of thrust force as "x y z" unit vector relative to the component frame. Only for type="thrust". Example: "0 0 1" for upward thrust.
  • <max-thrust> Element
    Maximum thrust force output. Unit: "N". Only for type="thrust".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <pole-pairs> Element
    Type: xs:unsignedInt
    Number of magnetic pole pairs in the motor. Determines the electrical frequency: electrical_freq = mechanical_rpm × pole_pairs / 60. Critical for BLDC commutation (Hall sensor transitions per revolution = pole_pairs × 6), ESC configuration, and back-EMF frequency. Example: 15 pole pairs for ZLLG65ASM250-L hub motor, 7 for typical drone motor, 2 for industrial servo.
  • <displacement> Element
    Engine displacement for internal combustion motors. Unit: "cc" (cubic centimeters) or "L" (liters). Only applicable for type="ice". Example: 50cc for a small generator, 0.8L for a robot mower engine.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <cylinders> Element
    Type: xs:unsignedInt
    Number of cylinders for internal combustion motors. Only applicable for type="ice".
  • <stroke> Element
    Linear travel range for linear actuators. Unit: "m" or "mm". Defines the maximum extension distance. Only applicable for type="linear".
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <control-modes> Element
    Supported control interfaces for this motor.
    • <mode> Element
      (required) [0..*]
      Type: xs:string
      A supported control mode: "position", "velocity", "torque", "force", "current", "pwm". Multiple modes means the motor supports switching between them.
  • <no-load-speed> Element
    No-load shaft speed at rated voltage. Unit: "rpm". From motor load test. Higher than rated speed. Example: 257.9 rpm for ZLLG65ASM250-L at 24V.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <no-load-current> Element
    No-load current draw at rated voltage. Unit: "A". The minimum current the motor draws when spinning freely. Important for idle power budget. Example: 0.974A.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <max-power-out> Element
    Maximum mechanical power output from load test. Unit: "W". The peak of the power-vs-torque curve. Example: 158.8W at 11.61 Nm for ZLLG65ASM250-L.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <max-efficiency> Element
    Peak efficiency from load test. Unit: "percent". The best-case power_out/power_in ratio. Example: 68.4% at 3.84 Nm / 216.3 RPM. An agent should target this operating point for best runtime.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • name Attribute
    Type: xs:string (required) — Unique name for this HMI element within the component.
  • type Attribute
    Type: display | speaker | buzzer | led-status | led-illumination | button | touchscreen | indicator (required) — HMI element type (display, speaker, buzzer, led-status, led-illumination, button, touchscreen, indicator).
  • visual Attribute
    Type: xs:string — Name of the visual element containing this HMI's mesh for 3D highlighting.
  • mesh Attribute
    Type: xs:string — GLTF mesh node name within the visual for 3D highlighting.
  • <description> Element
    Type: xs:string
    Human-readable description of this HMI element.
  • <pose> Element
    Type: xs:string
    Position and orientation relative to component origin.
  • <geometry> Element
    Visualization geometry for this HMI element.
  • name Attribute
    Type: xs:string (required) — Unique name for this surface within the component.
  • visual Attribute
    Type: xs:string — Name of the visual element containing this surface's mesh for 3D highlighting.
  • mesh Attribute
    Type: xs:string — GLTF mesh node name within the visual for 3D highlighting of this surface.
  • <prop> Element
    Propeller surface — thrust from rotation.
    • <diameter> Element
      Propeller diameter tip-to-tip. Unit: "m" or "in".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <pitch> Element
      Propeller pitch — theoretical distance advanced per revolution in ideal fluid. Unit: "m" or "in".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <blades> Element
      Type: xs:unsignedInt
      Number of blades (typically 2, 3, or 4).
    • <direction> Element
      Type: xs:string
      Rotation direction viewed from above/front: "CW" (clockwise) or "CCW" (counter-clockwise). Critical for torque balancing on multirotors.
  • <aerofoil> Element
    Aerodynamic lifting surface — wing, stabilizer, canard.
    • <span> Element
      Wing span (tip-to-tip for one wing, or half-span if describing one side). Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <chord> Element
      Mean aerodynamic chord (leading edge to trailing edge). Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <profile> Element
      Type: xs:string
      Airfoil profile designation (e.g., "NACA2412", "NACA0012", "ClarkY", "E387"). Determines lift/drag characteristics.
    • <sweep> Element
      Wing sweep angle. Positive = swept back. Unit: "deg".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <dihedral> Element
      Wing dihedral angle. Positive = tips higher than root. Affects roll stability. Unit: "deg".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <area> Element
      Wing planform area. Unit: "m2". If omitted, computed from span x chord.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <hydrofoil> Element
    Hydrodynamic lifting surface — underwater foil.
    • <span> Element
      Foil span. Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <chord> Element
      Mean chord length. Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <profile> Element
      Type: xs:string
      Foil profile (e.g., "NACA0012", "Eppler817").
    • <area> Element
      Foil planform area. Unit: "m2".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <control-surface> Element
    Aerodynamic control surface — aileron, elevator, rudder, elevon, flap.
    • type Attribute
      Type: xs:string (required) — Control surface type: "aileron", "elevator", "rudder", "elevon", "flaperon", "flap", "spoiler", "canard", "ruddervator", "v-tail".
    • <chord-ratio> Element
      Type: xs:double
      Ratio of control surface chord to parent wing/tail chord (0-1). Typical: 0.2-0.3 for ailerons, 0.3-0.5 for flaps.
    • <span-fraction> Element
      Type: xs:double
      Fraction of parent wing span covered by this control surface (0-1).
    • <deflection> Element
      Deflection range. min = max deflection in one direction, max = other direction. Unit: "deg". Example: min="-25" max="25".
      • unit Attribute
        Type: xs:string — Physical unit. Optional — SI default applies if omitted.
      • min Attribute
        Type: xs:double — Minimum acceptable value in the specified unit.
      • max Attribute
        Type: xs:double — Maximum acceptable value in the specified unit.
  • <wheel> Element
    Wheel ground contact surface.
    • type Attribute
      Type: xs:string — Wheel type: "driven" (has motor), "steering" (steerable), "caster" (passive swivel), "omni" (omnidirectional rollers), "mecanum" (45-degree rollers). Optional.
    • <radius> Element
      Wheel outer radius (including tire). Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <width> Element
      Tire/wheel width (contact patch width). Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <friction> Element
      Tire-ground friction coefficients (static and dynamic).
      • static Attribute
        Type: xs:double, default="0" — Static friction coefficient (dimensionless). Force required to initiate sliding. Default: 0.
      • dynamic Attribute
        Type: xs:double, default="0" — Dynamic (kinetic) friction coefficient (dimensionless). Force during sliding. Must be less than or equal to static. Default: 0.
  • <track> Element
    Tracked vehicle surface (tank treads).
    • <width> Element
      Track width. Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <length> Element
      Track ground contact length. Unit: "m".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <ground-pressure> Element
      Ground pressure (vehicle weight / total track contact area). Unit: "kPa". Lower = better soft terrain performance.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <friction> Element
      Track-ground friction coefficients.
      • static Attribute
        Type: xs:double, default="0" — Static friction coefficient (dimensionless). Force required to initiate sliding. Default: 0.
      • dynamic Attribute
        Type: xs:double, default="0" — Dynamic (kinetic) friction coefficient (dimensionless). Force during sliding. Must be less than or equal to static. Default: 0.
  • <gripper> Element
    Gripper or end-effector contact surface — mechanical finger pads, suction cups, magnetic grippers, adhesive surfaces, granular jamming.
    • type Attribute
      Type: xs:string (required) — Gripper contact mechanism: "mechanical" (friction-based finger pads — the gripper squeezes the object, holding force comes from normal force x friction), "suction" (vacuum cup — single or array of cups creating negative pressure seal, works on smooth non-porous surfaces), "magnetic" (permanent or electromagnetic — works only on ferromagnetic materials), "adhesive" (gecko-inspired dry adhesive or chemical adhesive — uses van der Waals or chemical bonding, works on smooth surfaces regardless of material), "jamming" (granular jamming gripper — conforms to object shape then stiffens via vacuum, handles irregular geometries). Required.
    • <grip-force> Element
      Maximum grip or holding force. Unit: "N". For mechanical fingers: the squeeze force at the fingertip. For suction: the pull-off force (vacuum area x pressure differential). For magnetic: the breakaway force at contact. An agent compares this against object weight x safety factor to determine if a grasp is secure.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <contact-area> Element
      Active contact area of the gripper surface. Unit: "mm2" or "cm2". For suction cups: the sealing area. For finger pads: the pad face area. For magnetic grippers: the pole face area. Larger contact area generally means more stable grasps and better force distribution.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <payload> Element
      Maximum payload the gripper can reliably hold. Unit: "kg" or "N". This is the practical limit accounting for orientation, acceleration, and safety margin — typically less than grip-force / (gravity x safety_factor). Example: 5 kg for a two-finger gripper, 20 kg for a large vacuum gripper array.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <shore-hardness> Element
      Type: xs:string
      Shore durometer hardness of the contact surface material (for compliant finger pads and suction cups). Format: scale + value, e.g., "A30" (soft silicone finger pad), "A50" (medium rubber), "A70" (firm polyurethane). Shore A scale: 0=very soft gel, 30=soft rubber, 50=pencil eraser, 70=tire tread, 90=hard plastic. Softer pads conform to irregular surfaces for better grip; harder pads are more durable. Only applicable for mechanical and suction types.
    • <vacuum-level> Element
      Vacuum pressure for suction grippers. Unit: "kPa" (negative gauge pressure). Example: -60 kPa for a standard Venturi generator, -85 kPa for a vacuum pump. Pull-off force = vacuum_level x sealing_area. Only applicable for type="suction".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <magnetic-force> Element
      Magnetic holding force at contact. Unit: "N". For permanent magnets: the breakaway force with a flat mild steel surface. For electromagnets: the force at rated current. Only applicable for type="magnetic".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <friction> Element
      Friction coefficients between the gripper surface and a reference material (typically smooth steel or ABS plastic). Used for grasp stability analysis: tangential holding force = normal_force x friction_coefficient.
      • static Attribute
        Type: xs:double, default="0" — Static friction coefficient (dimensionless). Force required to initiate sliding. Default: 0.
      • dynamic Attribute
        Type: xs:double, default="0" — Dynamic (kinetic) friction coefficient (dimensionless). Force during sliding. Must be less than or equal to static. Default: 0.
  • name Attribute
    Type: xs:string (required) — Unique name for this power source.
  • role Attribute
    Type: xs:string — Power source role in the system: "primary" (main power source), "backup" (engaged on primary failure), "hot-swap" (can be replaced while system runs on other source), "ups" (uninterruptible — provides power during switchover). An agent uses this for power redundancy analysis.
  • group Attribute
    Type: xs:string — Power source group name for failover pairing. Sources in the same group can substitute for each other. Example: group="main" on two hot-swap batteries means either can power the system alone while the other is replaced.
  • visual Attribute
    Type: xs:string — Name of the visual element containing this power source's mesh for 3D highlighting.
  • mesh Attribute
    Type: xs:string — GLTF mesh node name within the visual for 3D highlighting of this power source.
  • <battery> Element
    Rechargeable battery energy source.
    • <chemistry> Element
      Type: xs:string
      Cell chemistry: "LiFePO4" (3.2V/cell, safest, longest life), "Li-ion" (3.7V/cell, highest energy density), "LiPo" (3.7V/cell, high discharge rate), "NiMH" (1.2V/cell), "lead-acid" (2.0V/cell).
    • <cells-series> Element
      Type: xs:unsignedInt
      Number of cells in series (determines voltage: cells x cell_voltage). Example: 8S LiFePO4 = 25.6V nominal.
    • <cells-parallel> Element
      Type: xs:unsignedInt
      Number of cells in parallel (multiplies capacity and max current).
    • <nominal-voltage> Element
      Nominal pack voltage. Unit: "V". Equals cells-series x cell nominal voltage.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <capacity> Element
      Battery capacity. Unit: "Ah" (amp-hours). Energy = capacity x nominal-voltage.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <energy> Element
      Total stored energy. Unit: "Wh" (watt-hours). Can be computed from capacity x voltage but useful to state explicitly.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <max-discharge> Element
      Maximum continuous discharge rate. Unit: "C" (multiples of capacity). Example: 3C on a 12Ah pack = 36A max continuous.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <min-voltage> Element
      Minimum safe pack voltage (low-voltage cutoff). Unit: "V". Discharging below this damages the cells.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <max-voltage> Element
      Maximum charge voltage (full charge). Unit: "V".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <max-charge-rate> Element
      Maximum charge rate. Unit: "C" (multiples of capacity). Example: 1C on 12Ah = 12A max charge current. Fast-charge capable batteries may support 2-4C. Determines minimum charge time: time_hours = 1/charge_rate_C.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <charge-protocol> Element
      Type: xs:string
      Charging protocol: "cc-cv" (constant-current then constant-voltage — standard for Li-ion/LiPo/LiFePO4), "cc" (constant-current only — NiMH, NiCd), "fast-charge" (proprietary fast-charge protocol), "trickle" (low-rate maintenance charge). Determines charger compatibility.
    • <cycle-life> Element
      Type: xs:unsignedInt
      Rated cycle life — number of charge/discharge cycles to 80% capacity retention. LiFePO4: 2000-5000 cycles. Li-ion: 300-500. LiPo: 200-300. An agent can estimate remaining battery health.
  • <tank> Element
    Fuel/gas tank energy source.
    • <fuel> Element
      Type: xs:string
      Fuel type: "gasoline", "diesel", "hydrogen", "compressed-air", "nitrogen", "propane", "ethanol", "jet-a". Determines energy density and handling requirements.
    • <volume> Element
      Tank volume. Unit: "L" (liters) or "gal" (US gallons).
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <pressure> Element
      Storage pressure (for compressed gases). Unit: "bar" or "psi". Example: 350 bar for hydrogen, 200 bar for compressed air.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <energy> Element
      Total stored energy. Unit: "Wh" or "kJ".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <flow> Element
      Flow characterization — how fluid exits the tank and at what rate. Defines delivery method (pressurized, regulated, pumped, gravity), outlet pressure, max/peak flow rates, and regulation mechanism. Without this, the tank is just a capacity number with no delivery information.
      • <method> Element
        Type: xs:string
        How fluid exits the tank: "pressurized" (self-pressurizing from stored pressure, passive — e.g., compressed gas through orifice), "regulated" (pressure regulator controls outlet pressure, active or passive mechanical — e.g., hydrogen fuel cell supply), "pumped" (electric or mechanical pump draws fluid — e.g., gasoline fuel pump), "gravity" (gravity-fed, no pressurization — e.g., open agricultural spray tanks).
      • <outlet-pressure> Element
        Pressure at the tank outlet / consumer input. For regulated systems this is the regulated setpoint; for pressurized systems it decreases as the tank empties. Use min/max to capture the range. Unit: "bar" or "psi". Example: min="1.5" max="3.0" unit="bar" for a regulated hydrogen supply.
        • unit Attribute
          Type: xs:string — Physical unit. Optional — SI default applies if omitted.
        • min Attribute
          Type: xs:double — Minimum acceptable value in the specified unit.
        • max Attribute
          Type: xs:double — Maximum acceptable value in the specified unit.
      • <max-flow-rate> Element
        Maximum sustained (continuous) flow rate the delivery system can provide. Unit depends on fluid: "g/s" or "kg/s" for gases, "L/min" or "L/hr" for liquids, "SLPM" (standard liters per minute) for compressed gases at standard conditions. This is the continuous limit — determined by regulator capacity, pump displacement, or orifice size.
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <peak-flow-rate> Element
        Peak (burst) flow rate available for short transients. May exceed max-flow-rate for seconds due to accumulator pressure, pump overspeed, or regulator overshoot. Unit: same as max-flow-rate. If not specified, assume peak = max (no burst capability).
        • unit Attribute
          Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
      • <regulator> Element
        Type: xs:string
        Regulation mechanism controlling outlet pressure and/or flow: "passive-mechanical" (spring-loaded diaphragm regulator — simple, no power needed), "solenoid-proportional" (electronically controlled proportional valve — precise, needs power), "solenoid-on-off" (bang-bang valve — simple digital control), "return-line" (fuel pump + return line to tank — common in automotive), "none" (unregulated — pressure drops as tank empties).
  • <fuel-cell> Element
    Fuel cell energy converter (PEM, DMFC, SOFC). Generates electricity from fuel continuously.
    • <type> Element
      Type: xs:string
      Fuel cell technology: "pem" (Proton Exchange Membrane — most common for robots, uses hydrogen), "dmfc" (Direct Methanol — uses methanol, lower power density), "sofc" (Solid Oxide — high temp, high efficiency, slow startup).
    • <fuel> Element
      Type: xs:string
      Input fuel type: "hydrogen", "methanol", "natural-gas", "propane".
    • <rated-power> Element
      Continuous rated electrical power output. Unit: "W" or "kW".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <peak-power> Element
      Peak (burst) electrical power output. Unit: "W" or "kW".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <efficiency> Element
      Type: xs:double
      Electrical conversion efficiency as a fraction (0-1). PEM typical: 0.40-0.60. SOFC typical: 0.50-0.65.
    • <output-voltage> Element
      Output voltage range. Unit: "V". Fuel cell output varies with load — min at max power, max at no load.
      • unit Attribute
        Type: xs:string — Physical unit. Optional — SI default applies if omitted.
      • min Attribute
        Type: xs:double — Minimum acceptable value in the specified unit.
      • max Attribute
        Type: xs:double — Maximum acceptable value in the specified unit.
  • <solar> Element
    Solar panel energy source. Generates electricity from sunlight via photovoltaic cells.
    • <cell-type> Element
      Type: xs:string
      Photovoltaic cell technology: "monocrystalline" (highest efficiency 20-24%, rigid panels), "polycrystalline" (lower cost, 15-20% efficiency), "thin-film" (flexible, lightweight, 10-15% efficiency, can conform to curved surfaces), "gaas" (gallium arsenide, 28-30% efficiency, used in space — expensive), "perovskite" (emerging, potentially low cost). Determines efficiency, weight, flexibility, and cost tradeoffs.
    • <peak-power> Element
      Peak power output under Standard Test Conditions (STC: 1000 W/m2 irradiance, 25 degC cell temperature, AM1.5 spectrum). Unit: "W" or "Wp" (watts-peak). Real-world output is typically 60-80% of peak due to non-ideal conditions. Example: 100 Wp panel produces ~60-80W in typical outdoor conditions.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <area> Element
      Total panel area. Unit: "m2" or "cm2". Used with efficiency to cross-check peak-power: peak_power = area x 1000W/m2 x efficiency. Also used for physical packaging constraints on the robot body.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <efficiency> Element
      Type: xs:double
      Solar cell conversion efficiency as a fraction (0-1). The ratio of electrical power output to incident solar power. Monocrystalline: 0.20-0.24. Polycrystalline: 0.15-0.20. Thin-film: 0.10-0.15. GaAs: 0.28-0.30.
    • <voltage-mpp> Element
      Voltage at Maximum Power Point (Vmpp) under STC. Unit: "V". The MPPT charge controller operates the panel at this voltage to extract maximum power. Example: 18V for a nominal 12V panel, 36V for a nominal 24V panel.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <current-mpp> Element
      Current at Maximum Power Point (Impp) under STC. Unit: "A". peak-power = voltage-mpp x current-mpp.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <open-circuit-voltage> Element
      Open-circuit voltage (Voc) under STC. Unit: "V". The maximum voltage the panel produces with no load. Always higher than voltage-mpp. Used for charge controller input voltage rating.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <mppt> Element
      Type: xs:boolean
      Whether the associated charge controller uses Maximum Power Point Tracking. true = MPPT controller (extracts 15-30% more energy than PWM in varying conditions). false = PWM or direct connection. An agent factors this into energy harvest estimates.
  • <supercapacitor> Element
    Supercapacitor for peak power buffering, regenerative braking energy capture, and pulsed load smoothing.
    • <capacitance> Element
      Total capacitance. Unit: "F" (farads). Supercapacitors typically range from 1F to 3000F per cell. Series/parallel configurations adjust the effective capacitance and voltage. Energy stored = 0.5 x C x V^2.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <max-voltage> Element
      Maximum rated voltage. Unit: "V". Individual cells are typically 2.5-2.7V; series stacks reach 12V, 24V, 48V or higher. Exceeding max voltage causes gas generation and permanent damage.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <esr> Element
      Equivalent Series Resistance. Unit: "mohm" (milliohms). Determines power loss during charge/discharge and maximum current capability: I_max approx V / ESR. Lower ESR = higher power capability. Typical: 0.3-50 mohm depending on size.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <max-current> Element
      Maximum continuous discharge current. Unit: "A". Supercapacitors can deliver very high currents (hundreds of amps) for short durations. Limited by ESR heating.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <peak-current> Element
      Peak (burst) current for short pulses. Unit: "A". Can be significantly higher than max-current for pulses under 1 second.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <energy> Element
      Total stored energy at max voltage. Unit: "Wh" or "J". Computed from 0.5 x C x V^2 but useful to state explicitly. Much less than batteries of similar volume: a 3000F/2.7V cell stores ~3 Wh vs ~50 Wh for a similar-sized Li-ion cell.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <cells-series> Element
      Type: xs:unsignedInt
      Number of cells in series. Determines pack voltage: max-voltage = cells x cell-voltage. Requires balancing circuitry.
    • <cycle-life> Element
      Type: xs:unsignedInt
      Rated cycle life — number of charge/discharge cycles to 80% capacitance retention. Supercapacitors typically last 500,000 to 1,000,000+ cycles, far exceeding batteries.
  • name Attribute
    Type: xs:string (required) — HCDF logical name for this port. Required. Used in link, chain, and bus references to identify connection endpoints (e.g., "eth0", "can_bus", "power_in").
  • iface Attribute
    Type: xs:string — OS-level network interface name as seen by the device's operating system (e.g., "eth0", "swp0", "can0", "spi0.1"). Used by runtime agents for interface configuration. Optional; defaults to the HCDF name if not specified.
  • type Attribute
    Type: ethernet | SPI | I2C | UART | CAN | USB | MIPI-CSI | GMSL | GMSL2 | ASA-ML | FPD-Link | CoaXPress | JTAG | SWD | SIGNAL | POWER | CARD (required) — Physical interface type of this port. Required. Determines the valid capabilities and connection types.
  • visual Attribute
    Type: xs:string — Name of a visual element on this component whose geometry represents this port in 3D visualization. Alternative to inline geometry.
  • mesh Attribute
    Type: xs:string — URI of a mesh file representing this port's physical connector shape. Alternative to geometry element.
  • electrical Attribute
    Type: xs:string — Electrical output type for SIGNAL ports: "push-pull" (drives both high and low — standard for most digital interfaces), "open-drain" (drives low only, requires external pull-up — allows wired-OR/AND with multiple devices on same line, used for interrupt lines, I2C SDA/SCL), "open-collector" (same as open-drain but BJT-based), "tristate" (can be high, low, or high-impedance — used for shared buses). Only relevant for SIGNAL port type. Optional.
  • <capabilities> Element
    Hardware capabilities of this port (speeds, protocols, TSN features, power). Optional; omit for ports whose capabilities are implied by type (e.g., simple JTAG/SWD debug ports).
    • <speed> Element
      Symmetric port speed (same TX and RX rate). Mutually exclusive with speed-tx/speed-rx. Example: 1000 with unit="Mbps".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <speed-tx> Element
      Transmit speed for asymmetric ports. Must be paired with speed-rx. Mutually exclusive with speed.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <speed-rx> Element
      Receive speed for asymmetric ports. Must be paired with speed-tx. Mutually exclusive with speed.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <bitrate> Element
      Raw bit rate for non-Ethernet serial ports (CAN, UART, SPI, I2C). Example: 500000 with unit="bps" for CAN 500 kbit/s.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <baud> Element
      Baud rate (symbols per second) for UART ports where baud differs from bitrate. Example: 115200 with unit="Bd".
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <standard> Element
      Type: xs:string
      PHY standard this port implements (e.g., "100base-t1", "1000base-t", "802.3dm", "25gbase-sr"). Free-form string matching IEEE 802.3 clause names.
    • <protocol> Element
      [0..*]
      Type: xs:string
      Higher-layer protocol(s) the port supports (e.g., "EtherCAT", "PROFINET", "CAN-FD", "Modbus-RTU"). Multiple protocol elements indicate multi-protocol capability.
    • <phy> Element
      PHY layer configuration (master/slave role). Required for single-pair Ethernet (T1) ports.
      • role Attribute
        Type: master | slave | auto (required) — PHY master/slave role. Required. master: provides clock reference. slave: recovers clock from master. auto: negotiate at link-up (not recommended for deterministic systems).
    • <tsn> Element
      TSN sub-standard capabilities supported by this port's hardware.
      • <gptp> Element
        IEEE 802.1AS gPTP time synchronization capability.
        • hw-timestamping Attribute
          Type: xs:boolean, default="false" — Whether the port supports IEEE 802.1AS hardware timestamping for nanosecond-accurate clock synchronization. Default: false.
        • gm-capable Attribute
          Type: xs:boolean, default="false" — Whether the device behind this port can serve as gPTP grandmaster clock. Default: false.
      • <qbv> Element
        IEEE 802.1Qbv Time-Aware Shaper capability.
        • traffic-classes Attribute
          Type: xs:unsignedInt, default="8" — Number of traffic classes (priority queues) supported by the port. Default: 8 (IEEE 802.1Q maximum).
        • hw-queues Attribute
          Type: xs:unsignedInt, default="8" — Number of hardware transmit queues. Default: 8. May differ from traffic-classes if queue-to-TC mapping is used.
        • max-gcl-entries Attribute
          Type: xs:unsignedInt — Maximum number of Gate Control List entries the port hardware supports. Limits the complexity of Qbv schedules that can be programmed.
      • <cbs> Element
        IEEE 802.1Qav Credit-Based Shaper capability.
        • max-sr-classes Attribute
          Type: xs:unsignedInt, default="2" — Maximum number of SR (Stream Reservation) classes supported. Standard AVB defines 2 classes (A and B). Some hardware supports additional classes. Default: 2.
      • <preemption> Element
        IEEE 802.1Qbu/802.3br frame preemption capability.
        • min-fragment-size Attribute
          Type: xs:unsignedInt, default="64" — Minimum preemptable fragment size in bytes. Preempted frames are split at fragment boundaries no smaller than this. Default: 64 bytes.
      • <psfp> Element
        IEEE 802.1Qci Per-Stream Filtering and Policing capability.
        • max-filters Attribute
          Type: xs:unsignedInt — Maximum number of stream filters the port hardware supports.
        • max-gates Attribute
          Type: xs:unsignedInt — Maximum number of stream gates (time-based ingress windows) the port hardware supports.
        • max-meters Attribute
          Type: xs:unsignedInt — Maximum number of flow meters for bandwidth policing the port hardware supports.
      • <frer> Element
        IEEE 802.1CB Frame Replication and Elimination for Reliability capability.
        • seq-encoding Attribute
          Type: xs:string, default="r-tag" — Sequence number encoding format. Default: "r-tag" (IEEE 802.1CB R-TAG). Alternatives include "hsrp" for HSR/PRP sequence tags.
      • <ats> Element
        IEEE 802.1Qcr Asynchronous Traffic Shaping capability.
        • max-groups Attribute
          Type: xs:unsignedInt — Maximum number of ATS shaping groups the port hardware supports.
    • <macsec> Element
      MACsec hardware cipher suites supported by this port.
      • <cipher> Element
        (required) [0..*]
        Values: gcm-aes-128 | gcm-aes-256 | gcm-aes-xpn-128 | gcm-aes-xpn-256
        A supported MACsec cipher suite. At least one must be listed. Multiple entries indicate the port can negotiate among them.
    • <lldp> Element
      LLDP discovery capability including TSN TLV support.
      • tsn-tlvs Attribute
        Type: xs:boolean, default="false" — Whether the port supports TSN-specific LLDP TLVs for automatic TSN capability discovery and configuration (IEEE 802.1Qcc). Default: false.
    • <plca> Element
      PLCA multi-drop capability for 10BASE-T1S ports.
      • max-nodes Attribute
        Type: xs:unsignedInt, default="8" — Maximum number of PLCA nodes this port supports on a single multi-drop segment. Default: 8.
    • <eee> Element
      Energy Efficient Ethernet capability.
      • supported Attribute
        Type: xs:boolean, default="false" — Whether the port supports EEE Low Power Idle mode. Default: false. Note: EEE adds wake latency and is typically disabled for TSN ports.
    • <voltage> Element
      Voltage range the port can supply or accept (for power ports and PoDL).
      • unit Attribute
        Type: xs:string — Voltage unit (typically "V").
      • min Attribute
        Type: xs:double — Minimum input/output voltage in the specified unit.
      • max Attribute
        Type: xs:double — Maximum input/output voltage in the specified unit.
    • <current> Element
      Maximum current the port can source or sink.
      • unit Attribute
        Type: xs:string — Current unit (typically "A" or "mA").
      • max Attribute
        Type: xs:double — Maximum current the port can source or sink in the specified unit.
    • <power> Element
      Maximum power the port can deliver or consume.
      • unit Attribute
        Type: xs:string — Power unit (typically "W" or "mW").
      • max Attribute
        Type: xs:double — Maximum power the port can source or sink in the specified unit.
    • <typical-power> Element
      Typical power consumption under normal operating conditions. Unit: "W". Used alongside max power for realistic runtime estimation. Max power gives worst-case budget; typical-power gives expected runtime. Example: a motor controller may draw max="120" W during acceleration but typical="35" W during steady operation.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <connector> Element
      Type: xs:string
      Physical connector type (e.g., "RJ45", "M12-D", "XT60", "JST-GH", "USB-C", "SMA"). Free-form string.
  • <pose> Element
    Type: xs:string
    Physical location of the port connector on the component as "x y z roll pitch yaw" (meters and radians) relative to the component origin.
  • <geometry> Element
    Geometry of the port connector for visualization (e.g., a box representing an RJ45 jack).
  • name Attribute
    Type: xs:string (required) — HCDF logical name for this antenna. Required. Used in wireless link definitions to identify endpoints.
  • type Attribute
    Type: wifi | bluetooth | lora | cellular | uwb | gnss | NFC | 802.15.4 (required) — Wireless technology type. Required. Determines the valid capabilities and link types.
  • visual Attribute
    Type: xs:string — Name of a visual element on this component whose geometry represents this antenna.
  • mesh Attribute
    Type: xs:string — URI of a mesh file representing the antenna's physical shape.
  • <capabilities> Element
    Wireless capabilities of this antenna (bands, standards, gain, polarization).
    • <band> Element
      [0..*]
      Type: xs:string
      Supported frequency band (e.g., "2.4GHz", "5GHz", "900MHz", "L1/L2" for GNSS). Multiple band elements for multi-band antennas.
    • <standard> Element
      [0..*]
      Type: xs:string
      Wireless standard supported (e.g., "802.11ax", "bluetooth-5.3", "lora-1.0.4"). Multiple standards for multi-standard radios.
    • <protocol> Element
      [0..*]
      Type: xs:string
      Higher-layer wireless protocol (e.g., "DroneCAN", "MAVLink", "DDS", "Zenoh"). Multiple protocol elements for multi-protocol capability.
    • <gain> Element
      Antenna gain in dBi (decibels relative to isotropic). Higher gain = more directional.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <polarization> Element
      Type: xs:string
      Antenna polarization type (e.g., "RHCP", "LHCP", "linear-vertical", "linear-horizontal", "dual").
  • <pose> Element
    Type: xs:string
    Physical location and orientation of the antenna on the component as "x y z roll pitch yaw" (meters and radians).
  • <geometry> Element
    Geometry for visualization of the antenna (e.g., a cylinder for a whip antenna).
  • name Attribute
    Type: xs:string (required) — Unique name for this network (e.g., "backbone", "arm_network", "sensor_bus_network"). Required.
  • <description> Element
    Type: xs:string
    Human-readable description of the network's purpose and scope (e.g., "main TSN backbone", "left arm 802.3dm chain network").
  • <link> Element
    [0..*]
    Point-to-point link connections (wired or wireless) in this network.
  • <bus> Element
    [0..*]
    Shared-medium bus segments in this network.
  • <chain> Element
    [0..*]
    Bridged daisy-chain segments in this network.
  • <mesh> Element
    [0..*]
    Wireless mesh networks (Thread, BLE mesh, UWB, WiFi mesh) in this network.
  • <gptp> Element
    IEEE 802.1AS gPTP time synchronization configuration for this network.
    • domain Attribute
      Type: xs:unsignedInt (required) — gPTP domain number (0-127). Required. Devices in the same domain synchronize clocks. Multiple domains allow independent time references (e.g., domain 0 for arm TSN, domain 1 for base).
    • <clock> Element
      [0..*]
      gPTP clock instances participating in this time domain. One per device-port combination.
      • device Attribute
        Type: xs:string (required) — Component name of the device hosting this gPTP clock. Required.
      • port Attribute
        Type: xs:string (required) — Port name on the device that participates in gPTP. Required. Must be a port with hw-timestamping capability.
      • gm-capable Attribute
        Type: xs:boolean (required) — Whether this clock can serve as grandmaster. Required. At least one clock in the domain should be gm-capable="true".
      • priority1 Attribute
        Type: xs:unsignedInt, default="128" — BMCA priority1 value (0-255). Lower wins grandmaster election. Default: 128.
      • priority2 Attribute
        Type: xs:unsignedInt, default="128" — BMCA priority2 value (0-255). Tiebreaker after priority1 and clock quality. Default: 128.
      • clock-class Attribute
        Type: xs:unsignedInt, default="248" — IEEE 1588 clock class indicating accuracy category (6=GPS-locked, 248=default, etc.). Default: 248.
      • clock-accuracy Attribute
        Type: xs:string, default="0xFE" — IEEE 1588 clock accuracy code as hex string. 0x20=25ns, 0x21=100ns, 0xFE=unknown. Default: "0xFE".
    • <port-defaults> Element
      Default timing parameters for all gPTP ports in this domain.
      • log-sync-interval Attribute
        Type: xs:int, default="-3" — Log base-2 of the Sync message interval in seconds. -3 = 125 ms (8 messages/sec), -4 = 62.5 ms. Default: -3.
      • log-announce-interval Attribute
        Type: xs:int, default="0" — Log base-2 of the Announce message interval in seconds. 0 = 1 second. Default: 0.
      • log-pdelay-req-interval Attribute
        Type: xs:int, default="0" — Log base-2 of the Pdelay_Req message interval in seconds for peer delay measurement. 0 = 1 second. Default: 0.
      • announce-receipt-timeout Attribute
        Type: xs:unsignedInt, default="3" — Number of Announce intervals without receipt before declaring the GM lost. Default: 3.
      • neighbor-prop-delay-thresh-ns Attribute
        Type: xs:unsignedInt, default="800" — Maximum acceptable neighbor propagation delay in nanoseconds. Links exceeding this threshold are considered not AS-capable. Default: 800 ns.
  • <traffic-classes> Element
    Traffic class definitions mapping PCP values to queue priorities.
    • count Attribute
      Type: xs:unsignedInt (required) — Total number of traffic classes in use (1-8). Required. Must match the number of class child elements.
    • <class> Element
      [0..*]
      Individual traffic class definition. One per TC number used in the network.
      • tc Attribute
        Type: xs:unsignedInt (required) — Traffic class number (0-7). Required. Maps to hardware transmit queues.
      • pcp Attribute
        Type: xs:unsignedInt (required) — Priority Code Point (0-7) that maps to this traffic class. Required. Set in the VLAN tag of transmitted frames.
      • name Attribute
        Type: xs:string — Human-readable name for this traffic class (e.g., "control", "video", "best-effort"). Optional.
      • description Attribute
        Type: xs:string — Longer description of the traffic class purpose and contents. Optional.
      • preemption Attribute
        Type: express | preemptable — IEEE 802.1Qbu preemption class (express or preemptable). express: cannot be interrupted. preemptable: can be interrupted by express traffic. Optional; default behavior is switch-specific.
  • <schedule> Element
    [0..*]
    IEEE 802.1Qbv Time-Aware Shaper schedule templates for this network.
    • name Attribute
      Type: xs:string (required) — Unique name for this schedule template (e.g., "arm_1ms_schedule", "base_schedule"). Required. Referenced by schedule-assignment elements.
    • cycle-time-us Attribute
      Type: xs:unsignedInt (required) — Total cycle duration in microseconds. Required. All gate durations must sum to this value. Typical values: 250 (4 kHz), 500 (2 kHz), 1000 (1 kHz).
    • <gate> Element
      (required) [0..*]
      Ordered list of gate control entries. At least one required. Executed cyclically in XML order.
      • tc-mask Attribute
        Type: xs:string (required) — Bitmask of traffic classes allowed to transmit during this gate interval (e.g., "10000000" opens only TC7, "11111111" opens all TCs). Required. 8-character binary string, one bit per TC (TC7 at left, TC0 at right).
      • duration-us Attribute
        Type: xs:unsignedInt (required) — Duration of this gate interval in microseconds. Required. Semantic rule: all gate durations in a schedule must sum to the schedule's cycle-time-us.
  • <schedule-assignment> Element
    Bindings of schedule templates to ports and chains.
    • <assign> Element
      [0..*]
      Individual schedule assignment binding a template to ports and/or chains.
      • schedule Attribute
        Type: xs:string (required) — Name of the schedule template to apply. Required. Must match a schedule name defined in this network.
      • ports Attribute
        Type: xs:string — Space-separated list of dotted port references ("comp.port") to apply this schedule to. Optional.
      • chains Attribute
        Type: xs:string — Space-separated list of chain names to apply this schedule to (all hops in the chain). Optional.
  • <stream-profile> Element
    [0..*]
    References to external stream profile files defining TSN stream requirements.
    • uri Attribute
      Type: xs:anyURI (required) — URI of the stream profile file (relative to the HCDF document or absolute). Required.
    • sha Attribute
      Type: xs:string — SHA-256 hash of the referenced stream profile file for content integrity verification.
    • active Attribute
      Type: xs:boolean, default="true" — Whether this stream profile is currently active. Default: true. Set false to define but not activate a profile (e.g., for A/B switching).
  • <macsec> Element
    Network-wide IEEE 802.1AE MACsec security policy and key store configuration.
    • policy Attribute
      Type: must-secure | should-secure | integrity-only | disabled (required) — Default MACsec enforcement policy for all links and chains in this network. Required. Individual links/chains can override with their own macsec element.
    • cipher Attribute
      Type: gcm-aes-128 | gcm-aes-256 | gcm-aes-xpn-128 | gcm-aes-xpn-256, default="gcm-aes-128" — Default cipher suite. Default: gcm-aes-128. Can be overridden per link/chain.
    • key-agreement Attribute
      Type: psk | eap-tls, default="psk" — Default key agreement protocol. Default: psk. Can be overridden per link/chain.
    • rekey-interval-sec Attribute
      Type: xs:unsignedInt — Automatic rekeying interval in seconds. Optional. When set, MACsec associations are rekeyed periodically to limit exposure of compromised keys.
    • <key-store> Element
      Credential storage backend for this network's MACsec keys.
      • type Attribute
        Type: secure-element | hsm | tpm | file | runtime (required) — Credential storage type (secure-element, hsm, tpm, file, runtime). Required.
      • ref Attribute
        Type: xs:string — Implementation-specific reference to the key material (e.g., HSM slot ID, TPM handle, file path, or SE key index). Opaque string resolved by the runtime.
  • <eee-policy> Element
    Values: enabled | disabled
    Network-wide IEEE 802.3az Energy Efficient Ethernet policy. "enabled" allows Low Power Idle; "disabled" keeps ports always active. Typically disabled for TSN networks.
  • name Attribute
    Type: xs:string (required) — Unique name for this bus within the network (e.g., "can_motors", "i2c_sensors", "spi_imus"). Required.
  • type Attribute
    Type: CAN | UART | I2C | SPI | ethernet | power (required) — Bus protocol type. Required. Determines valid participant roles, addressing, and speed parameters.
  • topology Attribute
    Type: daisy-chain | star | multidrop — Physical wiring topology (daisy-chain, star, or multidrop). Optional; defaults depend on bus type (CAN is typically multidrop, SPI is typically star).
  • <description> Element
    Type: xs:string
    Human-readable description of the bus purpose (e.g., "CAN bus for motor controllers", "I2C sensor bus").
  • <bitrate> Element
    Type: xs:unsignedLong
    Raw bit rate in bits per second (e.g., 500000 for CAN 500 kbit/s, 1000000 for CAN-FD 1 Mbit/s data phase). Alternative to speed/baud for bus types where bitrate is the standard specification.
  • <speed> Element
    Bus speed with explicit unit (e.g., 10 with unit="Mbps" for 10BASE-T1S). Alternative to bitrate.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <baud> Element
    Baud rate for UART buses (e.g., 115200 with unit="Bd"). Alternative to bitrate/speed.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <standard> Element
    Type: xs:string
    Bus standard (e.g., "10base-t1s", "CAN-2.0B", "CAN-FD", "STS", "Dynamixel-2.0").
  • <protocol> Element
    [0..*]
    Type: xs:string
    Higher-layer protocol(s) used on this bus (e.g., "DroneCAN", "CANopen", "Modbus-RTU").
  • <voltage> Element
    Type: xs:double
    Bus voltage level in volts (e.g., 3.3 for I2C, 5.0 for CAN). Used for level-shifter planning and power budget.
  • <plca> Element
    PLCA configuration for 10BASE-T1S Ethernet buses. Only applicable when type="ethernet" and standard="10base-t1s".
    • <coordinator> Element
      Device and port that serves as the PLCA coordinator (beacon source). Exactly one coordinator per bus segment.
      • device Attribute
        Type: xs:string (required) — Component name of the PLCA coordinator device. Required.
      • port Attribute
        Type: xs:string (required) — Port name on the coordinator device connected to this bus. Required.
    • <node-count> Element
      Type: xs:unsignedInt
      Total number of PLCA nodes on this bus segment. Used to size the transmit opportunity cycle. Should match the number of participants.
    • <burst-count> Element
      Type: xs:unsignedInt
      Maximum number of additional frames a node may send in its transmit opportunity after the first frame. 0 = single frame per opportunity.
  • <participant> Element
    [0..*]
    Devices connected to this bus. Each participant identifies its component, port, address, and role.
    • device Attribute
      Type: xs:string (required) — Component name of the participant device. Required. Must match a comp name in the HCDF document.
    • port Attribute
      Type: xs:string (required) — Port name on the participant device connected to this bus. Required.
    • position Attribute
      Type: xs:unsignedInt — Physical position of this participant on the bus (0-based index). Defines ordering for daisy-chain and star topologies. Optional for multidrop.
    • id Attribute
      Type: xs:string — Bus-level device identifier (e.g., CAN node ID, I2C 7-bit address in hex "0x50", Modbus slave address). Format depends on bus type.
    • address Attribute
      Type: xs:string — Alternative address format for protocols that use addressing differently from id (e.g., IP address on 10BASE-T1S bus). Use id for bus-native addressing, address for higher-layer addressing.
    • role Attribute
      Type: controller | target | source | sink — Functional role on the bus (controller, target, source, sink). Determines communication patterns. Optional.
    • terminator Attribute
      Type: xs:boolean — Whether this participant provides bus termination resistance. Set true for endpoints of CAN buses and other buses requiring termination. Optional; default: false.
    • cs Attribute
      Type: xs:unsignedInt — SPI chip-select line number for SPI bus participants. Identifies which CS pin the SPI controller uses to select this device. Only applicable for SPI buses.
    • plca-id Attribute
      Type: xs:unsignedInt — PLCA node ID for 10BASE-T1S participants. Determines the transmit opportunity slot in the PLCA cycle. Range 0-254. Only applicable for Ethernet buses with PLCA.
    • <protocol> Element
      [0..*]
      Type: xs:string
      Higher-layer protocol(s) this participant uses on the bus (e.g., "DroneCAN", "Modbus-RTU", "CANopen"). Multiple entries for multi-protocol devices.
  • name Attribute
    Type: xs:string (required) — Unique name for this chain within the network (e.g., "left_arm_chain", "ecat_servos"). Required.
  • type Attribute
    Type: 802.3dm | 100base-t1 | 1000base-t1 | 10gbase-t1 | ethercat | profinet | sercos (required) — Chain protocol/PHY standard. Required. Determines valid modes and hop configurations.
  • mode Attribute
    Type: switched | pass-through, default="switched" — Forwarding mode. Default: "switched" (store-and-forward). Use "pass-through" for EtherCAT and similar protocols where frames are processed in-flight.
  • topology Attribute
    Type: line | ring, default="line" — Physical chain topology. Default: "line" (open-ended). Use "ring" when the tail connects back to the root for redundancy.
  • <description> Element
    Type: xs:string
    Human-readable description of the chain's purpose (e.g., "left arm 802.3dm chain", "EtherCAT servo chain").
  • <vlan> Element
    VLAN tag for all traffic on this chain. Isolates chain traffic from other network traffic.
    • id Attribute
      Type: xs:unsignedInt (required) — VLAN identifier (VID), range 1-4094. Required. Frames on this link/chain are tagged with this VID.
    • pcp Attribute
      Type: xs:unsignedInt — Priority Code Point (PCP), range 0-7. Maps to a traffic class for QoS. Higher values = higher priority. Optional; if omitted, PCP is determined by the traffic class mapping.
  • <macsec> Element
    Per-chain MACsec policy override. If omitted, the network-wide macsec default applies.
    • policy Attribute
      Type: must-secure | should-secure | integrity-only | disabled (required) — MACsec enforcement level. Required. must-secure drops unprotected frames; should-secure prefers MACsec; integrity-only authenticates without encrypting; disabled turns MACsec off.
    • cipher Attribute
      Type: gcm-aes-128 | gcm-aes-256 | gcm-aes-xpn-128 | gcm-aes-xpn-256, default="gcm-aes-128" — Cipher suite for this link/chain. Default: gcm-aes-128.
    • key-agreement Attribute
      Type: psk | eap-tls, default="psk" — Key agreement protocol. Default: psk (pre-shared key).
    • key-ref Attribute
      Type: xs:string — Reference identifier for the key material in the key store. Opaque string resolved at runtime by the MACsec key agreement daemon.
    • confidentiality-offset Attribute
      Type: 0 | 30 | 50, default="0" — Number of bytes after the SecTAG to leave unencrypted (0, 30, or 50). Default: 0 (encrypt everything). Use 30 to expose L3/L4 headers for hardware QoS classification on non-MACsec-aware switches.
  • <cycle-time-us> Element
    Type: xs:unsignedInt
    Chain cycle time in microseconds. For switched chains, this defines the Qbv schedule period applied to all hops. For EtherCAT, this is the bus cycle time.
  • <dc> Element
    EtherCAT Distributed Clock chain-level configuration. Only applicable when type="ethercat".
    • reference-clock Attribute
      Type: xs:string — Component name of the device that serves as the DC reference clock for this chain. Typically the first slave after the master. If omitted, the EtherCAT master auto-selects.
  • <tunnel> Element
    Tunnel configuration when this chain's traffic is encapsulated over another chain or link.
    • chain Attribute
      Type: xs:string (required) — Name of the outer/transport chain that carries the encapsulated traffic. Required.
    • hop Attribute
      Type: xs:string (required) — Device name of the hop on the outer chain where the tunnel ingress/egress occurs. Required.
    • protocol Attribute
      Type: etg-1700 | ieee-1722 | raw — Encapsulation protocol used for tunneling (etg-1700, ieee-1722, raw). Optional; defaults to the most appropriate protocol for the chain types involved.
  • <hop> Element
    (required) [0..*]
    Ordered list of devices in the chain. At least one hop required. XML element order defines the physical chain topology from root (first) to tail (last).
    • device Attribute
      Type: xs:string (required) — Component name of the device at this chain position. Required. Must match a comp name in the HCDF document.
    • port Attribute
      Type: xs:string — Port name used for the chain connection when the device has a single chain port. Mutually exclusive with port-primary/port-secondary. For simple line topologies.
    • port-primary Attribute
      Type: xs:string — Primary chain port name (upstream, toward root). Used for ring topologies or devices with separate ingress/egress ports. Mutually exclusive with port.
    • port-secondary Attribute
      Type: xs:string — Secondary chain port name (downstream, toward tail). Used for ring topologies. Mutually exclusive with port.
    • ingress Attribute
      Type: xs:string — Ingress port name for devices with asymmetric chain connectivity. Alternative to port-primary for non-ring topologies where ingress and egress are distinct.
    • egress Attribute
      Type: xs:string — Egress port name for devices with asymmetric chain connectivity. Alternative to port-secondary for non-ring topologies.
    • role Attribute
      Type: root | master | tail — Role in the chain (root, master, tail). root: chain controller / first hop. master: intermediate forwarding hop. tail: last hop. Optional; inferred from position if omitted.
    • alias Attribute
      Type: xs:string — EtherCAT configured station alias. Alternative addressing that persists across topology changes. Only applicable to EtherCAT chains.
    • position Attribute
      Type: xs:unsignedInt — Explicit 0-based position index in the chain. If omitted, position is determined by XML element order. Useful when XML order does not match physical chain order.
    • fmmu-offset Attribute
      Type: xs:unsignedInt — EtherCAT FMMU (Fieldbus Memory Management Unit) logical address offset in bytes. Defines where this slave's process data is mapped in the logical address space. Semantic rule: FMMU offset+size ranges must not overlap across hops.
    • fmmu-size Attribute
      Type: xs:unsignedInt — EtherCAT FMMU mapping size in bytes. Amount of process data (PDOs) mapped for this slave.
    • processing-delay-ns Attribute
      Type: xs:unsignedInt — Processing delay through this hop's switching fabric in nanoseconds. Different switch chips have different forwarding latencies — an NXP SJA1110 may be 3000ns while a simple 2-port bridge MCU may be 1000ns. When specified, the agent uses this instead of a default assumption for per-hop latency computation. If omitted, the agent uses a conservative default based on link speed.
    • <description> Element
      Type: xs:string
      Human-readable description of this hop's role in the chain.
    • <dc> Element
      EtherCAT Distributed Clock configuration for this hop. Only applicable to EtherCAT chains (type="ethercat").
      • mode Attribute
        Type: free-run | sync0 | sync0-sync1 — DC synchronization mode. free-run: no sync. sync0: synchronized to SYNC0 pulse. sync0-sync1: dual-sync for multi-rate processing.
      • cycle-time-us Attribute
        Type: xs:unsignedInt — SYNC0 cycle time in microseconds. Determines the slave's real-time processing period.
      • shift-time-ns Attribute
        Type: xs:int, default="0" — SYNC0 phase shift in nanoseconds relative to the DC reference clock. Used to stagger processing across slaves to avoid simultaneous current draw. Default: 0.
    • <identity> Element
      EtherCAT slave identity (vendor, product, revision) from the ESI file. Only applicable to EtherCAT chains.
      • vendor Attribute
        Type: xs:string — EtherCAT vendor ID (hex string, e.g., "0x00000002" for Beckhoff). Matches the ESI VendorId field.
      • product Attribute
        Type: xs:string — EtherCAT product code (hex string). Matches the ESI ProductCode field.
      • revision Attribute
        Type: xs:string — EtherCAT revision number (hex string). Matches the ESI RevisionNo field for firmware compatibility.
    • <spur> Element
      [0..*]
      Branch connections from this hop to devices not in the main chain path.
      • device Attribute
        Type: xs:string (required) — Component name of the device connected via this spur. Required.
      • port Attribute
        Type: xs:string (required) — Port name on the spur device that connects to the chain hop. Required.
      • via Attribute
        Type: xs:string (required) — Port name on the chain hop device that connects to the spur device. Required. This port must be on the hop device (not in the main chain path).
      • <description> Element
        Type: xs:string
        Human-readable description of the spur connection purpose.
      • <vlan> Element
        VLAN tag for traffic on this spur link.
        • id Attribute
          Type: xs:unsignedInt (required) — VLAN identifier (VID), range 1-4094. Required. Frames on this link/chain are tagged with this VID.
        • pcp Attribute
          Type: xs:unsignedInt — Priority Code Point (PCP), range 0-7. Maps to a traffic class for QoS. Higher values = higher priority. Optional; if omitted, PCP is determined by the traffic class mapping.
  • name Attribute
    Type: xs:string (required) — Unique name for this mesh network (e.g., "hand-tactile-mesh", "uwb-anchors").
  • standard Attribute
    Type: xs:string (required) — PHY/MAC standard: 802.15.4 (Thread/Zigbee), bluetooth (BLE mesh), 802.11s (WiFi mesh), uwb, lora.
  • protocol Attribute
    Type: xs:string — Higher-layer mesh routing protocol: Thread, Zigbee, BLE-mesh, OpenThread, 802.11s, LoRa-mesh. The protocol determines how nodes discover each other, form routes, and self-heal.
  • channel Attribute
    Type: xs:string — RF channel or frequency band for the mesh (e.g., "15" for 802.15.4 channel 15, "2.4GHz"). Protocol-dependent.
  • pan-id Attribute
    Type: xs:string — Personal Area Network ID for 802.15.4-based meshes (Thread, Zigbee). 16-bit hex value (e.g., "0x1234"). Not applicable for BLE mesh or WiFi mesh.
  • network-key-ref Attribute
    Type: xs:string — Reference to the mesh network encryption key in an external key store. No actual keys in HCDF — only a reference for the agent to provision at runtime. Thread uses a 128-bit network key; BLE mesh uses NetKey/AppKey.
  • <description> Element
    Type: xs:string
    Human-readable description of the mesh network's purpose (e.g., "tactile skin sensors on left hand", "UWB positioning anchors").
  • <node> Element
    (required) [0..*]
    A device participating in this mesh. At least one node should have role="coordinator" or role="border-router".
    • device Attribute
      Type: xs:string (required) — Device (component) name that participates in this mesh. Must reference a comp defined in the HCDF.
    • antenna Attribute
      Type: xs:string (required) — Antenna name on the device used for mesh communication. Must reference an antenna defined on the referenced comp.
    • role Attribute
      Type: coordinator | border-router | router | end-device — Role in the mesh: coordinator (forms and manages the network), border-router (bridges mesh to external network, e.g., Thread border router to Ethernet), router (relays traffic for other nodes), end-device (leaf node, does not relay). Default behavior is protocol-dependent.
    • id Attribute
      Type: xs:string — Node identifier within the mesh (e.g., Thread short address, BLE mesh unicast address, UWB node ID). Format is protocol-dependent.
  • name Attribute
    Type: xs:string (required) — Unique name for this transmission (e.g., "shoulder_trans", "wheel_fl_belt"). Required.
  • type Attribute
    Type: simple | differential | belt | gear | planetary | cycloidal | harmonic | strain-wave | worm — Mechanical transmission type (simple, differential, belt, gear, planetary, cycloidal, harmonic, strain-wave, worm). Optional; defaults to simple if not specified.
  • encoder Attribute
    Type: xs:string — Name reference to a joint-side encoder sensor. This is the encoder on the output side of the transmission (after the gearbox), providing higher-accuracy joint position feedback than the motor-side encoder. Optional — not all transmissions have output encoders.
  • visual Attribute
    Type: xs:string — Name of the visual element containing this transmission's mesh for 3D highlighting.
  • mesh Attribute
    Type: xs:string — GLTF mesh node name within the visual for 3D highlighting of this transmission.
  • <motor> Element
    Reference to the motor that drives this transmission. Uses dotted path "comp_name.motor_name".
    • ref Attribute
      Type: xs:string (required) — Dotted reference path to the motor or joint (e.g., "shoulder_comp.shoulder_motor" or "shoulder_joint"). Required.
  • <joint> Element
    Reference to the joint that this transmission drives. Uses the joint name.
    • ref Attribute
      Type: xs:string (required) — Dotted reference path to the motor or joint (e.g., "shoulder_comp.shoulder_motor" or "shoulder_joint"). Required.
  • <reduction> Element
    Type: xs:double
    Gear reduction ratio (motor_speed / joint_speed). Values greater than 1 indicate speed reduction / torque multiplication. For example, 100 means the motor turns 100 times for each joint revolution.
  • <efficiency> Element
    Type: xs:double
    Mechanical efficiency of the transmission as a fraction in [0, 1]. 1.0 = lossless, 0.9 = 90% efficient. Accounts for friction losses in gears, belts, and bearings.
  • <backlash> Element
    Mechanical backlash (dead zone) at the joint output. Unit: typically "rad" for rotary or "m" for linear transmissions.
    • unit Attribute
      Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • <spring> Element
    [0..*]
    Compliant spring element(s) in the drivetrain. Zero springs = rigid actuator. One series spring = SEA. One parallel spring = PEA. One of each = SEA+PEA combination. Springs with clutch/equilibrium-actuator/stiffness-actuator attributes express CPEA, AE-PEA, and VSA architectures respectively.
    • placement Attribute
      Type: xs:string (required) — Where the spring sits in the drivetrain relative to the gearbox and motor. "series": between gearbox output and joint output (SEA) — the spring deflects under load, enabling force sensing via dual-encoder deflection measurement and providing inherent compliance. "parallel": alongside the motor, between a fixed anchor and the joint output (PEA) — the spring provides a passive torque that assists or opposes the motor, typically tuned for gravity compensation. Required.
    • type Attribute
      Type: xs:string — Physical spring construction: "torsion-bar" (solid or tubular bar that twists — compact, common in SEAs), "leaf" (flat spring that bends — easy to manufacture), "coil" (helical compression/extension spring — common in linear actuators), "cable-linear" (cable-driven with linear spring in tension), "gas" (gas spring — provides near-constant force over stroke), "custom" (application-specific design). Optional.
    • torque-sensing Attribute
      Type: xs:string — How joint torque is measured using this spring. "spring-deflection": torque derived from the angular difference between motor-side and output-side encoders multiplied by spring stiffness (torque = k x delta_theta) — the standard SEA approach, requires two encoders. "strain-gauge": dedicated strain gauge or load cell on the spring element (e.g., Franka Panda joint torque sensors). "current": torque estimated from motor current (torque = Kt x I) — less accurate, no spring needed but listed here for completeness. "none": no torque sensing. Optional; only applicable for series springs.
    • clutch Attribute
      Type: xs:string — Clutch mechanism for engaging/disengaging a parallel spring (CPEA). "electromagnetic": fast switching (2-10 ms), requires continuous power to hold engaged. "mechanical-latch": zero holding power, slower switching (10-50 ms), uses a bistable mechanism. "one-way": ratchet or sprag clutch that locks in one direction and freewheels in the other. "none" or omit: no clutch, spring is permanently engaged. Only applicable for parallel springs.
    • equilibrium-actuator Attribute
      Type: xs:string — Reference to a motor (dotted path "comp.motor") that adjusts the spring equilibrium position for AE-PEA configurations. This second motor is typically small and slow — it only moves when the operating posture changes, shifting where the parallel spring exerts zero force for optimal gravity compensation at any joint angle. Only applicable for parallel springs with equilibrium-range.
    • stiffness-actuator Attribute
      Type: xs:string — Reference to a motor (dotted path "comp.motor") that adjusts spring stiffness at runtime for Variable Stiffness Actuator (VSA) configurations. The second motor changes the effective lever arm or preload on the spring, varying stiffness between the min and max values specified in the stiffness element. Only applicable for series springs with variable stiffness range.
    • <stiffness> Element
      Spring stiffness (rate). Unit: "Nm/rad" for rotary, "N/m" for linear. For fixed-stiffness springs (SEA, PEA, CPEA, AE-PEA): specify the text content as the single stiffness value. For variable-stiffness actuators (VSA): use min and max attributes for the adjustable range. Example: 4.5 Nm/rad for HEBI X8-9 SEA, or min="5" max="500" unit="Nm/rad" for a VSA. This is the defining parameter of a compliant actuator — it determines force control bandwidth, impact energy absorption, and torque measurement resolution (torque = stiffness x deflection).
      • unit Attribute
        Type: xs:string — Physical unit. Optional — SI default applies if omitted.
      • min Attribute
        Type: xs:double — Minimum acceptable value in the specified unit.
      • max Attribute
        Type: xs:double — Maximum acceptable value in the specified unit.
    • <max-deflection> Element
      Maximum spring deflection before mechanical hard stop. Unit: "rad" for rotary, "m" for linear. Defines the torque saturation limit: max_torque = stiffness x max_deflection. Beyond this deflection the actuator behaves rigidly. Example: 0.15 rad for a typical SEA torsion spring. Also determines maximum stored elastic energy: E = 0.5 x stiffness x max_deflection^2.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <damping> Element
      Viscous damping in the spring element. Unit: "Nm.s/rad" for rotary, "N.s/m" for linear. Most springs have minimal inherent damping; this captures any intentional damping added to the compliant element. Affects oscillation settling time and force control stability.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <equilibrium> Element
      Fixed spring rest position (equilibrium point) for PEA configurations. Unit: "rad" for rotary, "m" for linear. The joint angle at which the parallel spring exerts zero force. Typically tuned to the most common operating posture for optimal gravity compensation. For AE-PEA (adjustable equilibrium), use equilibrium-range instead.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <equilibrium-range> Element
      Adjustable equilibrium range for AE-PEA configurations. Unit: "rad" for rotary, "m" for linear. min and max define the range over which the equilibrium motor can shift the spring rest position. The equilibrium-actuator attribute identifies the motor that performs this adjustment. Example: min="-1.57" max="0.0" for a knee joint that needs gravity compensation anywhere from full flexion to standing.
      • unit Attribute
        Type: xs:string — Physical unit. Optional — SI default applies if omitted.
      • min Attribute
        Type: xs:double — Minimum acceptable value in the specified unit.
      • max Attribute
        Type: xs:double — Maximum acceptable value in the specified unit.
    • <clutch-power> Element
      Electrical power required to operate the clutch mechanism for CPEA configurations. Unit: "W". For electromagnetic clutches: power to hold engaged (typically 1-5W). For mechanical latches: power for the actuation pulse only (zero holding power). Only applicable when the clutch attribute is set.
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
    • <engage-time> Element
      Clutch engagement/disengagement latency for CPEA configurations. Unit: "ms". Time from command to full engagement. Electromagnetic clutches: 2-10 ms. Mechanical latches: 10-50 ms. Affects how quickly the system can switch between compliant and rigid behavior (e.g., switching between stance and swing phase in walking).
      • unit Attribute
        Type: xs:string — Physical unit of the measurement. Optional — if omitted, the SI default for the parent element applies. Specify explicitly for non-SI units (e.g., "RPM/V", "deg", "rpm", "g", "dps", "mK") or when the unit is ambiguous.
  • name Attribute
    Type: xs:string (required) — Unique name for this material. Required. Referenced from visual material elements and collision surfaces.
  • <description> Element
    Type: xs:string
    Human-readable description of the material (e.g., "anodized aluminum", "carbon fiber composite").
  • <color> Element
    RGBA color of the material for visual rendering.
    • rgba Attribute
      Type: xs:string, default="0 0 0 1" — Four space-separated floats "R G B A" each in [0, 1]. R=red, G=green, B=blue, A=alpha (1=opaque, 0=transparent). Default: "0 0 0 1" (opaque black).
  • <surface> Element
    Surface physics properties (friction, restitution, contact) when this material is involved in collisions.
    • material Attribute
      Type: xs:string — Reference to a named global material that provides default surface properties. Inline friction/restitution/contact elements override the referenced material's values.
    • <friction> Element
      Static and dynamic friction coefficients.
      • static Attribute
        Type: xs:double, default="0" — Static friction coefficient (dimensionless). Force required to initiate sliding. Default: 0.
      • dynamic Attribute
        Type: xs:double, default="0" — Dynamic (kinetic) friction coefficient (dimensionless). Force during sliding. Must be less than or equal to static. Default: 0.
    • <restitution> Element
      Type: xs:double
      Coefficient of restitution (bounciness). 0 = perfectly inelastic (no bounce), 1 = perfectly elastic (full bounce). Dimensionless, range [0, 1].
    • <contact> Element
      Contact dynamics parameters (stiffness, damping) for physics simulation.
      • stiffness Attribute
        Type: xs:double — Contact stiffness in N/m. Higher values create harder contacts with less penetration.
      • damping Attribute
        Type: xs:double — Contact damping coefficient in N*s/m. Dissipates energy during contact to reduce bouncing.
  • <box> Element
    Axis-aligned box primitive.
    • <size> Element
      (required)
      Type: xs:string
      Box dimensions as three space-separated doubles "width depth height" in meters (X Y Z extents).
  • <cylinder> Element
    Cylinder primitive aligned with the Z axis.
    • <radius> Element
      (required)
      Type: xs:double
      Cylinder radius in meters.
    • <length> Element
      (required)
      Type: xs:double
      Cylinder length (height) along the Z axis in meters.
  • <sphere> Element
    Sphere primitive.
    • <radius> Element
      (required)
      Type: xs:double
      Sphere radius in meters.
  • <capsule> Element
    Capsule (cylinder + hemispherical caps) primitive.
    • <radius> Element
      (required)
      Type: xs:double
      Capsule radius (cylinder and hemisphere radius) in meters.
    • <length> Element
      (required)
      Type: xs:double
      Length of the cylindrical section in meters (excludes hemispherical caps).
  • <cone> Element
    Solid cone primitive (base radius + height).
    • <radius> Element
      (required)
      Type: xs:double
      Radius of the cone base in meters.
    • <length> Element
      (required)
      Type: xs:double
      Height of the cone from base to apex in meters.
  • <ellipsoid> Element
    Ellipsoid with three semi-axis radii.
    • <radii> Element
      (required)
      Type: xs:string
      Three semi-axis radii as "rx ry rz" in meters. Example: "0.1 0.08 0.15" for an egg-shaped ellipsoid.
  • <mesh> Element
    External 3D mesh file reference (GLB, glTF, STL, OBJ).
    • uri Attribute
      Type: xs:anyURI (required) — URI of the mesh file (relative to the HCDF document or absolute). Required.
    • scale Attribute
      Type: xs:string, default="1 1 1" — Scale factors as three space-separated doubles "sx sy sz" applied to the mesh. Default: "1 1 1" (no scaling).
  • <frustum> Element
    Frustum for sensor FOV (conical or pyramidal cross-section).
    • shape Attribute
      Type: conical | pyramidal (required) — Cross-section shape: "conical" (circular, single fov angle) or "pyramidal" (rectangular, hfov + vfov).
    • <near> Element
      (required)
      Type: xs:double
      Near plane distance from sensor origin in meters.
    • <far> Element
      (required)
      Type: xs:double
      Far plane distance from sensor origin in meters.
    • <fov> Element
      Type: xs:double
      Full cone angle in radians (for shape="conical"). Defines a circular cross-section FOV.
    • <hfov> Element
      Type: xs:double
      Horizontal field of view in radians (for shape="pyramidal").
    • <vfov> Element
      Type: xs:double
      Vertical field of view in radians (for shape="pyramidal").