ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

How to read rosparam in a launch file

asked 2019-12-04 17:06:56 -0500

chaoshydra gravatar image

I am aiming to write a bag recording launch script for two same robots with different storage configuration, hence the stored location for the robots will be different.
The robots name are in rosparam. How do I read the publishing /robot_name in a launch script and then do a if statement to change my current recording node .

 <group if="$(eval arg('robot_name') == robot_name_rosparam)">
      <node pkg="rosbag" type="record" args="record -o /directory /topics">
edit retag flag offensive close merge delete


#q213145 is dealing with something similar, take a look and see if that's what you are trying to do.

Choco93 gravatar image Choco93  ( 2019-12-05 07:39:13 -0500 )edit

@Choco93, I did check that answer when I was searching. It is for loading yaml file to set rosparameter. In my case, the rosparam is already set, I wish to read its value.

chaoshydra gravatar image chaoshydra  ( 2019-12-05 09:41:32 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-12-06 02:28:22 -0500

Choco93 gravatar image

Here is one way that can be done.

<arg name="foo"/>
<arg name="bar"/>
<arg name ="dir1" value="directory1"/>

<node pkg="rosbag" type="record" name="recorder" args="-o $(arg dir1)/($arg foo)"/>

and you launch this file like roslaunch my_pkg my_launch.launch foo:=$(rosparam get foo).

edit flag offensive delete link more


Pedantic, but this is using args, which are not the same as ROS parameters.

gvdhoorn gravatar image gvdhoorn  ( 2019-12-06 03:06:39 -0500 )edit

Yeah, have to get that param into launchfile somehow. Might be possible to do it directly in launchfile but couldn't find a way for that.

Choco93 gravatar image Choco93  ( 2019-12-06 03:26:14 -0500 )edit

I don't believe it's actually supported.

gvdhoorn gravatar image gvdhoorn  ( 2019-12-06 04:15:10 -0500 )edit

What my answer suggests works, don't know about doing same within launchfile.

Choco93 gravatar image Choco93  ( 2019-12-06 05:08:33 -0500 )edit

Yes, it works, but it doesn't actually use ROS parameters.

But perhaps this is already what the OP was asking for. Let's wait and see.

gvdhoorn gravatar image gvdhoorn  ( 2019-12-06 05:10:26 -0500 )edit

Yes, I have done something like that by passing a variable in the launch file.

chaoshydra gravatar image chaoshydra  ( 2019-12-09 15:36:44 -0500 )edit

Question Tools

1 follower


Asked: 2019-12-04 17:06:56 -0500

Seen: 1,034 times

Last updated: Dec 06 '19