Skip to content

Open Loop vs Closed Loop in Controller Server, Velocity Smoother #5524

@mini-1235

Description

@mini-1235

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions