Arguments and parameters are important tags for roslaunch files that are similar, but not quite the same.
# get a global parameter
rospy.get_param('/global_param_name')
# get a parameter from our parent namespace
rospy.get_param('param_name')
# get a parameter from our private namespace
rospy.get_param('~private_param_name')rospy.set_param('some_numbers', [1., 2., 3., 4.])
rospy.set_param('truth', True)
rospy.set_param('~private_bar', 1+2)<param name="robot_position" command="$(find some_package)/scripts/generate_random_position.py"/><launch>
<arg name="x_pos" default="0.0" />
<arg name="y_pos" default="0.0" />
<arg name="z_pos" default="0.0" />
...<!-- start world and launch gazebo -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find swarmbots)/worlds/$(arg world).world"/>
<arg name="paused" value="true"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include><launch>
<arg name="followers" />
<arg name="ns" />
<!-- BEGIN robot[#] -->
<group ns="$(arg ns)">
<param name="tf_prefix" value="$(arg ns)" />
<include file="$(find swarmbots)/launch/one_robot.launch">
<arg name="robot_name" value="$(arg ns)" />
<arg name="followers" value="$(arg followers)" />
</include>
</group>
<!-- recursively start robot[#-1] -->
<arg name="new_followers" value="$(eval arg('followers') - 1)" />
<include file="$(find swarmbots)/launch/follower.launch" if="$(eval arg('new_followers') >= 0)">
<arg name="followers" value="$(arg new_followers)" />
<arg name="ns" value="robot$(arg new_followers)" />
</include>
</launch> if="$(eval arg('new_followers') >= 0)"#!/usr/bin/env python
import random, rospy, roslib
rospy.init_node("generate_random_x")
pos_range = float(rospy.get_param('pos_range', 3))
x_pos = random.uniform(-pos_range / 2, pos_range / 2)
rospy.set_param('map_merge/init_pose_x',x_pos)
print(x_pos)<param name="x_pos" command="$(find swarmbots)/src/generate_random_x.py" /><rosparam file="$(find turtlebot3_navigation)/param/local_costmap_params.yaml" command="load" />local_costmap:
global_frame: odom
robot_base_frame: base_footprint
update_frequency: 10.0
publish_frequency: 10.0
transform_tolerance: 0.5
static_map: false
rolling_window: true
width: 3
height: 3
resolution: 0.05