Warns about joints that are driven but never measured.
BB.Robot.State is written from BB.Message.Sensor.JointState messages and
from nothing else - commanding a joint doesn't move it in state, because a
commanded position isn't a measured one. A joint that nothing reports on
therefore stays at its initial configuration forever, which quietly ruins
anything reading it: forward kinematics, the URDF-driven visualisers, and
inverse kinematics, which seeds each solve from the current configuration.
Two things can report on a joint. A sensor declared alongside the actuator -
an encoder, or BB.Sensor.OpenLoopPositionEstimator interpolating from the
actuator's BeginMotion messages for hardware with no feedback at all. Or
the actuator itself, if it reads position back from the hardware and says so
through BB.Actuator.capabilities/1. A joint with neither gets a warning
naming both fixes.
The driver is asked directly rather than the robot's author being made to declare it, because whether a smart servo answers position queries is a property of the driver, not of the robot it's wired into.
Simulation adds an estimator to every actuator without a declared position sensor; hardware doesn't, which is why this check exists.
It warns rather than failing the build. A robot that is only ever driven open-loop, never asked where it is, is unusual but not wrong.