有没有办法在启动文件期间加载的 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 文件中会更简洁。有推荐的方法吗?
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)