Parse a URDF XML document into a plain-map intermediate representation.
The result is intentionally close to the URDF wire format: link/joint
lists are flat (joints reference parent and child link names), values are
floats in SI base units, and unsupported URDF features are collected as
warnings rather than raised as errors. The BB.Urdf.Importer consumes this
representation and produces a BB DSL module.
Summary
Types
@type joint() :: %{ name: String.t(), type: atom(), parent: String.t(), child: String.t(), origin: origin() | nil, axis: {float(), float(), float()} | nil, limit: %{ lower: float() | nil, upper: float() | nil, effort: float() | nil, velocity: float() | nil } | nil, dynamics: %{damping: float() | nil, friction: float() | nil} | nil, mimic: %{joint: String.t(), multiplier: float(), offset: float()} | nil }