Bird
Raised Fist0
ROSframework~10 mins

Setting parameters from launch file in ROS - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Setting parameters from launch file
Start Launch File
↓
Parse Parameters
↓
Set Parameters in ROS Parameter Server
↓
Launch Nodes
↓
Nodes Read Parameters
↓
Nodes Use Parameters for Behavior
↓
System Running with Configured Parameters
The launch file starts, reads parameters, sets them in the ROS parameter server, then launches nodes which read and use these parameters.
Execution Sample
ROS
<launch>
  <param name="speed" value="5"/>
  <node pkg="my_pkg" type="my_node" name="node1"/>
</launch>
This launch file sets a parameter 'speed' to 5, then starts a node that can use this parameter.
Execution Table
StepActionParameter Server StateNode StateOutput/Effect
1Launch file starts{}Not startedNo nodes running
2Parse <param> tag{"speed": 5}Not startedParameter 'speed' set to 5
3Launch <node>{"speed": 5}Starting node1Node1 begins startup
4Node1 reads parameter 'speed'{"speed": 5}speed=5Node1 configured with speed=5
5Node1 runs using speed=5{"speed": 5}Running with speed=5Node1 behavior uses speed=5
6Launch file finishes{"speed": 5}RunningSystem running with parameters set
💡 All parameters set before nodes start; nodes read parameters once at startup.
Variable Tracker
VariableStartAfter Step 2After Step 4Final
Parameter Server{}{"speed": 5}{"speed": 5}{"speed": 5}
Node1 speed variableundefinedundefined55
Key Moments - 2 Insights
Why must parameters be set before nodes launch?
Because nodes read parameters at startup (see execution_table step 4). If parameters are set after node launch, nodes won't see updated values.
Can nodes change parameters set by the launch file?
Yes, nodes can update parameters at runtime, but initial values come from the launch file (execution_table step 5 shows node using initial parameter).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the parameter server state after step 2?
A{"speed": 5}
B{}
C{"speed": 0}
Dundefined
💡 Hint
Check the 'Parameter Server State' column at step 2 in the execution_table.
At which step does node1 read the parameter 'speed'?
AStep 3
BStep 5
CStep 4
DStep 6
💡 Hint
Look for the step where 'Node1 reads parameter' in the Action column.
If the <param> tag was missing, what would node1's speed variable be at step 4?
A5
Bundefined
C0
Dnull
💡 Hint
Refer to variable_tracker for Node1 speed variable initial value when no parameter is set.
Concept Snapshot
Setting parameters from launch file:
- Use <param name="param_name" value="value"/> inside launch.
- Parameters load into ROS parameter server before nodes start.
- Nodes read parameters at startup to configure behavior.
- Parameters can be changed later by nodes if needed.
- Always set parameters before launching nodes for correct config.
Full Transcript
When you start a ROS launch file, it first reads any <param> tags and sets those parameters in the ROS parameter server. Then it launches the nodes. Each node, when it starts, reads the parameters it needs from the server. This way, nodes get configured with the right values before they begin running. For example, if you set a speed parameter to 5 in the launch file, the node will read speed=5 at startup and use it. If parameters were set after the node started, the node would not see them initially. Nodes can also update parameters later if needed. So the key is: set parameters first, then launch nodes.

Practice

(1/5)
1. What is the main purpose of using <param> tags in a ROS launch file?
easy
A. To start multiple nodes at the same time
B. To set parameters that nodes can use when they start
C. To define the order in which nodes run
D. To stop nodes after they finish

Solution

  1. Step 1: Understand the role of <param> in launch files

    The <param> tag is used to set parameters that nodes read when they start running.
  2. Step 2: Differentiate from other launch file tags

    Tags like <node> start nodes, but <param> specifically sets values nodes use.
  3. Final Answer:

    To set parameters that nodes can use when they start -> Option B
  4. Quick Check:

    Setting parameters = A [OK]
Hint: Remember: <param> sets values, <node> starts nodes [OK]
Common Mistakes:
  • Confusing <param> with <node> tag
  • Thinking <param> controls node start/stop
  • Assuming <param> sets node execution order
2. Which of the following is the correct syntax to set a string parameter named robot_name to "R2D2" in a ROS launch file?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Check the correct attribute names

    The <param> tag requires 'name' for the parameter name and 'value' for its value.
  2. Step 2: Verify proper quoting of string values

    String values must be inside quotes, so value="R2D2" is correct.
  3. Final Answer:

    <param name="robot_name" value="R2D2" /> -> Option C
  4. Quick Check:

    Correct attributes and quotes = B [OK]
Hint: Use name="" and value="" with quotes for strings [OK]
Common Mistakes:
  • Missing quotes around string values
  • Swapping name and value attributes
  • Using incorrect attribute names
3. Given this launch file snippet:
<launch>
  <param name="speed" value="2.5" />
  <node pkg="robot_pkg" type="move_node" name="mover" />
</launch>

What will be the value of the speed parameter inside the move_node when it starts?
medium
A. 2.5 (as a float)
B. 0, the default value
C. Undefined, because parameters must be set inside the node tag
D. "2.5" (as a string)

Solution

  1. Step 1: Understand parameter value types in launch files

    Values in <param> tags are treated as strings by default unless explicitly converted in code.
  2. Step 2: Check the launch file snippet

    The value is "2.5" in quotes, so the parameter is set as a string "2.5".
  3. Final Answer:

    "2.5" (as a string) -> Option D
  4. Quick Check:

    Parameter values are strings by default = D [OK]
Hint: Parameter values are strings unless converted in code [OK]
Common Mistakes:
  • Assuming numeric values are auto-converted to float
  • Thinking parameters must be inside <node> tag
  • Believing default values apply if parameter is set
4. Identify the error in this launch file snippet:
<launch>
  <param name="use_sim" value=true />
  <node pkg="sim_pkg" type="sim_node" name="simulator" />
</launch>
medium
A. The value true should be in quotes: value="true"
B. The param tag should be inside the node tag
C. The node tag is missing the required args attribute
D. The launch tag is missing a closing slash

Solution

  1. Step 1: Check the value attribute format

    Boolean values in <param> tags must be strings, so true should be "true" in quotes.
  2. Step 2: Verify tag placement and syntax

    The <param> tag can be outside the <node> tag, and the <launch> tag is correctly closed.
  3. Final Answer:

    The value true should be in quotes: value="true" -> Option A
  4. Quick Check:

    Boolean values need quotes in <param> = C [OK]
Hint: Always put boolean values in quotes in <param> tags [OK]
Common Mistakes:
  • Leaving boolean values unquoted
  • Placing <param> tags only inside <node>
  • Misunderstanding launch tag syntax
5. You want to set a parameter max_retries to 5 only if it is not already set by another launch file. Which launch file tag should you use to achieve this?
hard
A.
B. 5
C.
D.

Solution

  1. Step 1: Understand conditional parameter setting

    The <param> tag supports the 'unless' attribute to set a parameter only if it is not already set.
  2. Step 2: Check the options for correct usage

    <param unless="max_retries" name="max_retries" value="5" /> uses 'unless="max_retries"' with name and value, which is the correct syntax.
  3. Final Answer:

    <param unless="max_retries" name="max_retries" value="5" /> -> Option A
  4. Quick Check:

    Use 'unless' attribute to avoid overwriting = A [OK]
Hint: Use 'unless' attribute to set param only if unset [OK]
Common Mistakes:
  • Omitting the 'name' attribute when using 'unless'
  • Using <rosparam> without condition
  • Misplacing 'unless' attribute
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard