-
Notifications
You must be signed in to change notification settings - Fork 143
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
Conversation
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
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. |
Any updates on this PR? |
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.
Could you merge from ros2
. In particular, I want to make sure that this patch is consider in your refactor:
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.
Does this test work for you? (remember to update the path to the bridge config file).
ros2 launch ros_gz_sim ros_gz_sim.launch bridge_name:=ros_gz_bridge config_file:=/home/caguero/ros_gz_ws/src/ros_gz/ros_gz_bridge/test/config/full.yaml world_sdf_file:=empty.sdf use_composition:=True create_own_container:=True
I haven't specifically run this command, but I have used the |
I'm getting an error that I don't get with the
|
Allows one to pass extra arguments to ros_gz_bridge Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
…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]>
Signed-off-by: Wiktor Bajor <[email protected]> Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
50ad6ca
to
fb01c8f
Compare
The XML launch file should work now. |
That'd be great! |
Signed-off-by: Aarav Gupta <[email protected]>
Should be ready to merge now! |
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.
I think there's still something not working for me. If I run:
ros2 launch ros_gz_sim ros_gz_sim.launch.py bridge_name:=ros_gz_bridge config_file:=/home/caguero/ros_gz_ws/src/ros_gz/ros_gz_bridge/test/config/full.yaml world_sdf_file:=empty.sdf use_composition:=True create_own_container:=True
And then:
caguero@cold:~/ros_gz_ws$ ros2 node list
WARNING: Be aware that there are nodes in the graph that share an exact name, which can have unintended side effects.
/gz_server
/gzserver
/gzserver
/gzserver
/launch_ros_2128322
/ros_gz_bridge
/ros_gz_bridge
/ros_gz_container
It shows multiple instances of the bridge and gzserver
. This issue was fixed in #620 but it's resurfacing here.
Signed-off-by: Aarav Gupta <[email protected]>
Signed-off-by: Aarav Gupta <[email protected]>
@Amronos , out of curiosity, were you able to solve the latest issue (duplicated nodes)? |
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.
All looks good to me now, thanks!
https://github.com/Mergifyio backport jazzy |
✅ Backports have been created
|
* Add bridge_params argument to ros_gz_bridge Signed-off-by: Aarav Gupta <[email protected]> Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Wiktor Bajor <[email protected]> Co-authored-by: Alejandro Hernández Cordero <[email protected]> Co-authored-by: Wiktor Bajor <[email protected]> (cherry picked from commit 558a1cf)
* Add bridge_params argument to ros_gz_bridge Signed-off-by: Aarav Gupta <[email protected]> Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Wiktor Bajor <[email protected]> Co-authored-by: Alejandro Hernández Cordero <[email protected]> Co-authored-by: Wiktor Bajor <[email protected]> (cherry picked from commit 558a1cf) Co-authored-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.