ROS YAML 文件中的环境变量?

Mic*_*ett 5 yaml ros

有没有办法在启动文件期间加载的 ROS yaml 文件中使用环境变量?

例如,

测试.启动:

<launch>    
   <rosparam command="load" file="example.yaml" />
</launch>
Run Code Online (Sandbox Code Playgroud)

示例.yaml:

vehicle_name: "${VEHICLE_NAME}_robot"
Run Code Online (Sandbox Code Playgroud)

<env>我知道您可以使用或标签将环境变量作为参数加载到启动文件中<optenv>,但是当有很多参数时,将它们定义在单独的 .yaml 文件中会更简洁。有推荐的方法吗?

lua*_*tor 7

rosparam标签有一个属性,subst_value可以在直接添加到启动文件中时启用 YAML 文本的 、 等替换env参数。也就是下面这些作品:optenv

<launch>
    <!-- works -->
    <rosparam subst_value="true">
        foo: $(env USER)
    </rosparam>
</launch>
Run Code Online (Sandbox Code Playgroud)

对于ROS Kinetic 及更高版本,它在使用外部 YAML 文件时也适用:

<launch>
    <rosparam file="/path/to/conf.yaml" subst_value="true" />
</launch>
Run Code Online (Sandbox Code Playgroud)