ros2 / ros2/launch

XML: Allow setting environment variables to promote include reuse

Open
#852 1 comment 0 reactions 1 assignee View on GitHub

@christophebedard is already working on this.

Since May 1, 2025.

enhancement
Dominant language
Python
Stars
155
Forks
182
Avg merge
2d 14h
Merged PRs (30d)
6

Description

Description

I frequently write meta-package launch files that re-use launch files, but I want to set environment variables in the included node(s). You can't do that.

Motivation

When using FastDDS, for certain situations, we like to change environment variables for our XML profiles to use a different profile. This is useful when we do things like data replay.

Design / Implementation Considerations

N/A

Additional Information

Here is a rough idea of what I would like to do, where you have a standard "base" package launch file .

base.launch.xml

<?xml version="1.0"?>
<launch>
  <arg name="config_file" default="$(find-pkg-share base)/config/MyCustomConfig.json"/>
  <node pkg="base" exec="BaseNode" output="screen">
      <param name="config_file" type="str" value="$(var config_file)"/>
  </node>
</launch>

Then, a meta_package launch file that runs the BaseNode from above, but also sets some environment variables for it.
meta_package.launch.xml

<launch>
  <include file="$(find-pkg-share base)/launch/base.launch.xml">
    <arg name="config_file" value="$(var visnav_config_file)"/>
    <env name="FASTRTPS_DEFAULT_PROFILES_FILE" value="$(find-pkg-share meta_package)/config/fastdds.xml"/>
    <env name="RMW_FASTRTPS_USE_QOS_FROM_XML" value="1"/> 
  </include> 
</launch>

Currently, if you want to set an environment variable, you have to set it in the OS environment, rather than just applying just to the node of interest.

Instead of including a file, if include had more granularity, to say, include a node by name, then perhaps we can apply the environment variable that way.

To solve this problem today, we make heavy use of docker containers, one per node, but this requires a rebuild every time we change the node.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.