Skip to content

feat: state_broadcaster implementation#58

Open
dmalexa5 wants to merge 1 commit into
learnsyslab:mainfrom
dmalexa5:devel
Open

feat: state_broadcaster implementation#58
dmalexa5 wants to merge 1 commit into
learnsyslab:mainfrom
dmalexa5:devel

Conversation

@dmalexa5

@dmalexa5 dmalexa5 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Hi @danielsanjosepro,

I wanted to open this PR mostly for discussion about a major (breaking) change, so I won't be offended at all if you decide not to go in this direction :)

The state_broadcaster is intended to be something of a catch-all implementation of the joint_state_broadcaster, the twist and pose broadcasters, plus some additional functionality around model-compensated wrench and effort broadcasting. It aims to complete the following:

  • Unify pose_broadcaster and twist_broadcaster while ensuring that robots with no velocity or effort interface are still able to use the broadcaster
  • Add functionality around external force measurements (my personal area of research is wrench-aware manipulation, so this is critical)
  • Eventually, replace the franka_ros2_teleop setup controller with a robot-agnostic purely-crisp implementation, which would require an external_effort broadcaster native to this repository

This interface is a state-only plugin (like any original broadcaster) and at minimum publishes pose and joint states. If complete velocity and effort interfaces are available, it also publishes twist, raw wrench, residual external joint effort, and external wrench. Also has optional gravity, Coriolis, and inertial compensation (used to calculate the external effort and wrench).

Similar to the cartesian and admittance controllers, its topics, frames, reference-frame conventions, publish rates, wrench damping, and compensation toggles are generated parameters from src/state_broadcaster.yaml. I tried to keep this as crisp-ish as possible, but feel free to point out anything that needs to change!

Tested these changes on humble with a couple FR3 arms. Works great! Also can test on jazzy and kilted if you think this is a good direction to go... riht now I just use it in my own research. Similarly, crisp_controllers_demos would need to be updated, which I could also do if necessary.

Best,
David

@dmalexa5

dmalexa5 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor Author

Would it be better to alias pose_broadcaster and twist_broadcaster to this new broadcaster so the change is backwards compatible? Alternatively, I could decouple into a wrench_broadcaster and effort_broadcaster to make this a non-breaking change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant