-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
I was reading about DWPP https://github.com/Decwest/nav2_dynamic_window_pure_pursuit_controller, which shows that it has better performance than RPP. I noticed that it has an option to choose open loop/closed loop in the plugin, https://github.com/Decwest/nav2_dynamic_window_pure_pursuit_controller/blob/bf281cd92d74d748794aea386f767f9c8d67f78f/src/dynamic_window_pure_pursuit_controller.cpp#L257-L264
Currently in the codebase, we have only closed loop mode in controller server, except for rotation shim, which was introduced in #4880. For velocity smoother, we have closed loop / open loop(default), which means by default, we will have:
- Controller Server (closed loop)
- Velocity Smoother (open loop)
From the description of velocity smoother's parameters:
Type of feedback to use for the current state of the robot’s velocity. In OPEN_LOOP, it will use the last commanded velocity as the next iteration’s current velocity. When acceleration limits are set appropriately, this is a good assumption. In CLOSED_LOOP, it will use the odometry from the odom topic to estimate the robot’s current speed. In closed loop mode, it is important that the odometry is high rate and low latency, relative to the smoothing frequency.
I am actually curious about what happen if we set it to open loop + open loop, for example when we have set the acceleration limits appropriately, or when we do not have high rate odometry. Will the result be better theoretically?
I have actually tried closed loop + closed loop (I have a high rate odometry) a few weeks ago, but the result is worse than closed loop + open loop, I guess I didn't set the limits appropriately