You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS Noetic环境下xacro用变量读取YAML键值报错如何解决

报错原因

核心是xacro表达式语法使用错误:在${}包裹的表达式内部直接引用变量名即可,不需要额外嵌套一层${},你写的${COLORS[${color}]}里的两层${}会导致解析器无法正确识别表达式结构,触发语法报错。

修复方案

将颜色取值的行修改为如下写法即可:

<xacro:property name="YAML_FILE" value="$(find gazebo_ros_model_color)/configs/colors.yaml" />
<xacro:property name="COLORS" value="${load_yaml(YAML_FILE)}"/>
    
<xacro:arg name="color" default="color_0" />
<!-- 仅修改这一行,表达式内直接用变量名color即可 -->
<color>${COLORS[color]}</color>

修改后即可通过传入color参数的方式动态获取YAML中对应的颜色值,比如调用xacro时传入color:=color_2就能拿到对应红色配置。

可选扩展方案

如果需要避免传入不存在的key导致报错,可以加一层逻辑判断做默认值兜底:

<color>${color in COLORS.keys() ? COLORS[color] : COLORS['color_0']}</color>

上述写法会在传入的key不存在时自动降级使用color_0的默认值。


内容的提问来源于stack exchange,提问作者NEET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:15:00