ros-navigation / navigation2

ROS 2 Navigation Framework and System
https://nav2.org/
Other
2.35k stars 1.21k forks source link

Enhance planner performance in highly dynamic and uncertain environments #3272

Closed xianglunkai closed 1 year ago

xianglunkai commented 1 year ago

Whether the following functions need to be added later:

  1. The global planner, as the decision-maker, is required to open convex space, the local planner is required to solve the optimal control problem OCP, and finally the trajectory tracker is required to take charge of the closed loop.

  2. The motion prediction of dynamic objects needs to be considered to solve the correct decision planning under highly dynamic environment

  3. The method of partial observable POMDPs needs to be considered to solve the decision planning under perceptual occlusion and other uncertain environments

  4. It is necessary to consider the method of trajectory stitching to solve the problem of frame synchronization between planning unit and control unit

SteveMacenski commented 1 year ago

I'm going to need a little bit more here. You've made some statements but nothing that's directly actionable and lacks context about what's going on. Is this something you're looking to contribute? Are these things you specifically need for a project? Where did these 4 things come from? Are you going to help with design and requirements of these new components? Are you having an actual problem in the actual world you're trying to solve?

The global planner is not the decision maker. That is the application.

Pt 1. I see nothing actionable here. This is how it works now with Hybrid-Planning.

Pt 2. See https://github.com/ros-planning/navigation2/issues/1597

Pt 3. I don't think this is actionable.

Pt 4. That's on you as a system designer for your specific control unit / platform.

I'm inclined to close this since this seems like a set of requirements either from a research paper without much thought on this actual project or requirements for a product at which you're asking us to do a great deal of vague and complex work without context/contribution. We need some more context and detail here.

xianglunkai commented 1 year ago

@SteveMacenski Thank you very much!

I think about how to make NAV2 closer to the decision- planning module in automatic driving.

Mainly, I want to try whether this is possible: separate obstacle avoidance and trajectory tracking from the current controller plugin, so that the local planning unit can calculate the planned trajectory according to the global planning results, environmental information and robot motion constraints, and then output it to the trajectory tracking unit. so as to achieve hierarchical moudle at different frequencies. Txs!

SteveMacenski commented 1 year ago

separate obstacle avoidance and trajectory tracking from the current controller plugin

You're absolutely empowered to create your own algorithms in these APIs to do what you need for your application. If it makes sense for you to separate these capabilities, all power to you!

But right now, I believe what you're describing is already the status quo. The local trajectory planners "calculate the planned trajectory according to the global planning results, environmental information and robot motion constraints" which we dub as the controllers in the language of this project (just as a shorthand so I don't say planner and everyone asks which one?). That's then sent to your robot base motor controller which tries to drive given that velocity command at a much higher frequency.

Optionally, you can have a layer below the navigation stack to modulate it more if you choose using techniques on-CPU before sending off to the robot hardware. An example of that would actually be the velocity smoother in this project that shims between the Controller Server and the Base Controller hardware. It sounds like that's the role of your "trajectory tracking unit".

So I don't think anything needs changing / modification for what you're asking. That's a pretty vanilla use of this project.

xianglunkai commented 1 year ago

Thank you.

Recently, I switched to the autonomous driving project related to ROS2 navigation. I hope I can make more contributions to the community.

Thanks again!