feat: state_broadcaster implementation#58
Conversation
|
Would it be better to alias |
danielsanjosepro
left a comment
There was a problem hiding this comment.
I really like the idea of this unified broadcaster. I think it is a good idea to alias the pose broadcaster and twist broadcaster to keep backwards compatibility (because crisp_py depends on both). If you could add these changes to the pixi_franka_ros2 or the demos it would be great!
And I am happy that the code could help you on your on going research. Thanks for your contribution!
| use_coriolis_compensation: | ||
| type: bool | ||
| default_value: false | ||
| default_value: true |
There was a problem hiding this comment.
Lets keep the defaults here except if there is a strong reason to change them
| effort_publisher: | ||
| topic: | ||
| type: string | ||
| default_value: "commanded_effort" | ||
| description: "Topic name for publishing commanded joint efforts as std_msgs/Float64MultiArray. Values are in joints order." | ||
| publish_frequency: | ||
| type: double | ||
| default_value: 1000.0 | ||
| description: "Frequency in Hz for publishing commanded joint efforts. Values <= 0.0 disable publishing." | ||
|
|
There was a problem hiding this comment.
Same here we could make the publishing of the commanded effort for now default turned off (0.0 default value). If this value is needed for introspection only you can use the controller statistics to visualize it :)
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, thetwistandposebroadcasters, plus some additional functionality around model-compensated wrench and effort broadcasting. It aims to complete the following:pose_broadcasterandtwist_broadcasterwhile ensuring that robots with novelocityoreffortinterface are still able to use the broadcasterexternal_effortbroadcaster native to this repositoryThis 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_demoswould need to be updated, which I could also do if necessary.Best,
David