Requires libfranka >= 0.20.4 and franka_description >= 2.9.0 requires ROS 2 Jazzy
- fix: polling the spine eventually killed its REST API until the TMR was
rebooted. Every~/get_positioncall ran its own request on its own
connection, so once the device answered slower than the poll period the
requests stacked up until nginx returned504 Gateway Time-out. Position
and state are now read through a cache that keeps one request in flight,
serves anything younger than onefeedback_rateperiod from memory, and
leaves the endpoint alone forretry_delayafter a failed read. The device
sees at mostfeedback_raterequests per second per endpoint regardless of
how many clients call the services or subscribe to the topics. - feat: spine publishes
~/position(SpinePosition) and~/state
(SpineState) atfeedback_rate, so a continuous stream no longer
requires calling a service in a loop. Nothing is read while nobody is
subscribed. - feat: new spine parameter
retry_delay(default 0.5 s), the pause before
an endpoint is retried after a failed read. - fix: spine
http_timeoutdefault lowered from 3 s to 2 s so a stuck read
is dropped before the next poll period piles onto it. - fix:
move_absolutesampled the spine state on every feedback cycle,
doubling the request rate during a move. The drive stops itself on a fault
and this poll only reports it, so it now samples at most every 0.5 s.