# ROS 节点命令行布尔参数读取不到

> 原文链接：https://robotics.hellobike.com/pitfalls/2019-07-29-robotics-se-19113
> 频道：pitfalls | 更新日期：2019-07-29 | 标签：auto, stackexchange, ros, c++
> 核心摘要：用私有命名空间创建 NodeHandle，即可读取 _diagonalSteps:=true 这类命令行参数。

# ROS 节点命令行布尔参数读取不到

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Command line boolean parameters to ros node](https://robotics.stackexchange.com/questions/19113/command-line-boolean-parameters-to-ros-node)（Robotics Stack Exchange #19113）

**状态**：已解决

## 问题

运行 `rosrun nav_astar_nodes astar_controller _diagonalSteps:=true _checkDiagonalStepCorner:=false` 后，`n.getParam` 没有读到布尔参数，终端无输出。

## 环境

ROS Melodic，Gazebo 9.9.0，Ubuntu 18.04.2 LTS。

## 解决办法

1. 将 `ros::NodeHandle n;` 改为 `ros::NodeHandle n("~");`，使用节点私有命名空间。
2. 保持通过命令行传入带下划线的私有参数，如 `_diagonalSteps:=true _checkDiagonalStepCorner:=false`。
3. 之后 `n.getParam("diagonalSteps", doDiagonalSteps)` 会在 `/astar_controller` 命名空间中查找参数。

原问题作者：VansFannel；采纳答案作者：adamconkey。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #19113：Command line boolean parameters to ros node](https://robotics.stackexchange.com/questions/19113/command-line-boolean-parameters-to-ros-node)