-
Notifications
You must be signed in to change notification settings - Fork 138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a way to pass extra parameters to ros_gz_bridge #628
base: ros2
Are you sure you want to change the base?
Conversation
Allows one to pass extra arguments to ros_gz_bridge Signed-off-by: Aarav Gupta <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some style errors. See https://github.com/gazebosim/ros_gz/actions/runs/11588839442/job/32263218643?pr=628
Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
I haven't had time to dig into this, but it feels like a big code change for a fairly small feature. Is it the conversion from string to dictionary that requires the use of the opaque function? Another approach I would consider is moving more of the logic into the gz_server Action or even reverting the current architecture where the Action includes a launch file ros_gz/ros_gz_bridge/ros_gz_bridge/actions/ros_gz_bridge.py Lines 146 to 150 in 2658f27
and instead have the |
Yes.
That does sound like a good idea. |
…action using the launch file Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
…arams Signed-off-by: Aarav Gupta <[email protected]>
🎉 New feature
Closes #624
Summary
Added a new argument
bridge_params
to allow users to pass extra parameters toros_gz_bridge
when using the launch file. An example of these parameters would beqos_overrides
I have changed the node declarations to an opaque function so that I can get the value of
bridge_params
.bridge_params
is converted from string to dictionary and then passed to the parameters of theros_gz_bridge
node.The way I have done all of this is complicated and so please do tell me if there is an easier way to do this.
Test it
To test this something like the following command can be used:
ros2 launch ros_gz_bridge ros_gz_bridge.launch.py bridge_name:=ros_gz_bridge config_file:=<path_to_your_YAML_file> bridge_params:="'qos_overrides./topic_name.publisher.durability': 'transient_local', 'qos_overrides./another_topic_name.publisher.durability': 'transient_local'"
Then to check if the qos overrides have applied:
ros2 topic info /topic_name --verbose
ros2 topic info /another_topic_name --verbose
Checklist
codecheck
passed (See contributing)Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining
Signed-off-by
messages.