# Nav2\_config -- real-time Nav2 parameter tuning GUI (no restart needed)

**URL:** <https://discourse.openrobotics.org/t/nav2-config-real-time-nav2-parameter-tuning-gui-no-restart-needed/53633>\
**Category:** Projects\
**Tags:** ros2, nav2\
**Created:** [March 29, 2026, 6:41pm UTC](https://discourse.openrobotics.org/t/nav2-config-real-time-nav2-parameter-tuning-gui-no-restart-needed/53633 "2026-03-29T18:41:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sutharsan](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/sutharsan/32/20280_2.png) [@Sutharsan](https://discourse.openrobotics.org/u/Sutharsan)\
**Post date:** [March 29, 2026, 6:41pm UTC](https://discourse.openrobotics.org/t/nav2-config-real-time-nav2-parameter-tuning-gui-no-restart-needed/53633/1 "2026-03-29T18:41:22Z")

</div>

I have been deploying Nav2 on UV disinfection robots in hospitals for the past year. One thing that kept slowing me down was the kill edit relaunch cycle every time I needed to tweak `inflation_radius`, MPPI cost weights, or DWB critic parameters mid-session. On a real robot in a live environment, that’s not just annoying and it breaks the tuning flow completely.

So I built **nav2\_config** , a PyQt6 desktop app that connects to your running Nav2 stack and lets you change parameters in real-time via `ros2 param set`. No node restart needed for most params.

**What it does:**

- Connects to live Nav2 nodes via the ROS2 node graph, polls every 3 seconds

- 278 parameters with descriptions, ranges, and tuning advice — plus auto-discovery for anything outside the schema (any plugin works automatically)

- Per-param Set button with visual feedback: idle → ready → pending → success/fail

- Automatic post-set service calls — clears costmaps after inflation params, triggers AMCL nomotion update, reloads map for map\_server

- Lifecycle management through `lifecycle_manager` (not direct node transitions, which causes CRITICAL FAILURE)

- Loads/saves your `nav2_params.yaml` as source of truth

- RViz2-native light theme so it looks at home alongside your existing tools

**Screenshot:**

[![Screenshot](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/6/0/605f69d41da08898135d03c928eb127561d3bbcb.png)](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/6/0/605f69d41da08898135d03c928eb127561d3bbcb.png "Screenshot")

[Screenshot1856×1053 118 KB](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/6/0/605f69d41da08898135d03c928eb127561d3bbcb.png "Screenshot")

**Install:**

```auto
cd ~/ros2_ws/src
git clone https://github.com/sutharsan-311/nav2_config.git
sudo apt install python3-pyqt6
cd ~/ros2_ws
colcon build --packages-select nav2_config
source install/setup.bash
ros2 run nav2_config gui

```

**Repo:** [GitHub - sutharsan-311/nav2\_config: Real time Nav2 parameter tuning GUI for ROS2, no kill or relaunch needed · GitHub](https://github.com/sutharsan-311/nav2_config)

Tested on Humble. The APIs are identical across Humble, Iron, and Jazzy so it should work, but haven’t verified on the newer distros yet would appreciate reports if anyone tries.

This came out of a real production deployment so the edge cases around lifecycle and post set service calls are handled from actual debugging, not just the docs. Feedback welcome.

---

<div class="post-metadata">

**Author:** ![Rayman](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/rayman/32/268_2.png) [@Rayman](https://discourse.openrobotics.org/u/Rayman)\
**Post date:** [March 30, 2026, 9:31am UTC](https://discourse.openrobotics.org/t/nav2-config-real-time-nav2-parameter-tuning-gui-no-restart-needed/53633/2 "2026-03-30T09:31:51Z")

</div>

Is this limited to nav2, or can I also use it for all the other nodes that could be running on a robot?

Btw, how does it compare to [rqt\_reconfigure](https://wiki.ros.org/rqt_reconfigure)?

---

<div class="post-metadata">

**Author:** ![Sutharsan](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/sutharsan/32/20280_2.png) [@Sutharsan](https://discourse.openrobotics.org/u/Sutharsan)\
**Post date:** [March 30, 2026, 10:37am UTC](https://discourse.openrobotics.org/t/nav2-config-real-time-nav2-parameter-tuning-gui-no-restart-needed/53633/3 "2026-03-30T10:37:55Z")

</div>

Nav2 specific for now, the UI, schema, post-set service calls, and lifecycle management are all built around Nav2’s structure. That said, the underlying param read/write uses standard ROS2 param services, so technically it talks to any node. The Nav2 specific parts are the schema descriptions, the costmap clear and AMCL update triggers, and the lifecycle handling.

On rqt\_reconfigure, it’s a generic param editor with raw names and no context. nav2\_config knows what the params mean, which ones need follow up actions after being set, and how Nav2’s plugin namespacing works (`FollowPath.max_vel_x`, `inflation_layer.inflation_radius`). rqt\_reconfigure has none of that.
