Skip to main content

ros2-parameters

ROS 2 parameter declare/get, YAML overlays, wildcards, type coercion, and empty-array pitfalls. Use when params are ignored, wrong type, YAML does not load, or the user mentions declare_parameter, allow_undeclared, or empty arrays.

来源信息

仓库
guilyx/dotfiles
最近来源活动
2026年8月12日 19:39
检测到的 SKILL.md 语言
英语
星标
0
Forks
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
ros2-parameters
description
ROS 2 parameter declare/get, YAML overlays, wildcards, type coercion, and empty-array pitfalls. Use when params are ignored, wrong type, YAML does not load, or the user mentions declare_parameter, allow_undeclared, or empty arrays.
# ROS 2 Parameters ## Declare first Undeclared params are **ignored** (or rejected) unless `allow_undeclared_parameters`. Always `declare_parameter` (with type/default) before `get`. Overrides win in this order (typical): 1. Node default in code 2. YAML from launch 3. Launch `parameters=[{...}]` dict 4. CLI `--ros-args -p foo:=bar` / `--params-file` ## YAML shape ```yaml /ns/node_name: ros__parameters: rate_hz: 30.0 frame_id: base_link nested: enabled: true ``` - Key must match **fully qualified node name** (namespace + name). Mismatch = silent unused file. - `/**:` wildcards apply broadly — easy to stomp unrelated nodes. - Lists: `[]` is untyped. rclpy/rclcpp may infer `byte[]` vs `string[]` vs `double[]` **wrong**. Empty arrays have bitten SIRB (`fix/empty-parameter-arrays`): prefer a non-empty typed default in `declare_parameter`, or pass typed CLI, or avoid empty as the declared default. ## Types - YAML `1` is int, `1.0` is double. `declare_parameter("x", 1.0)` then YAML `x: 1` can **fail** type check. - Bool: `true`/`false`, not `True`/`yes`. - Nested dicts → nested params (`nested.enabled`), not a single dict object in C++. ## Runtime `ros2 param set` only works if declared (and dynamic callback allows it). Use `add_on_set_parameters_callback` and reject invalid ranges. `ros2 param dump /node` to see what the node actually has — not what you think the YAML said. ## Launch Multiple YAML files + dicts: **last wins per key**. `use_sim_time` forgotten on one node → TF/clock bugs (`ros2-tf-clock`).
在 GitHub 查看