Skip to content
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

Open
wants to merge 7 commits into
base: ros2
Choose a base branch
from

Conversation

Amronos
Copy link
Contributor

@Amronos Amronos commented Oct 30, 2024

🎉 New feature

Closes #624

Summary

Added a new argument bridge_params to allow users to pass extra parameters to ros_gz_bridge when using the launch file. An example of these parameters would be qos_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 the ros_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

  • Signed all commits for DCO
  • Added tests
  • Added example and/or tutorial
  • Updated documentation (as needed)
  • Updated migration guide (as needed)
  • Consider updating Python bindings (if the library has them)
  • codecheck passed (See contributing)
  • All tests passed (See test coverage)
  • While waiting for a review on your PR, please help review another open pull request to support the maintainers

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.

Allows one to pass extra arguments to ros_gz_bridge

Signed-off-by: Aarav Gupta <[email protected]>
@Amronos Amronos requested a review from ahcorde as a code owner October 30, 2024 07:34
Copy link
Contributor

@caguero caguero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Amronos Amronos requested a review from caguero October 30, 2024 09:30
@azeey
Copy link
Contributor

azeey commented Nov 1, 2024

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_bridge_description = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
[PathJoinSubstitution([FindPackageShare('ros_gz_bridge'),
'launch',
'ros_gz_bridge.launch.py'])]),

and instead have the ros_gz_bridge.launch.py file use the Action. It seems like we have more flexibility there.

@Amronos
Copy link
Contributor Author

Amronos commented Nov 1, 2024

Is it the conversion from string to dictionary that requires the use of the opaque function?

Yes.

or even reverting the current architecture where the Action includes a launch file and instead have the ros_gz_bridge.launch.py file use the Action. It seems like we have more flexibility there.

That does sound like a good idea.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In review
Development

Successfully merging this pull request may close these issues.

Passing parameters to ros_gz_bridge from launch files
3 participants