Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Nav2] Potential interest in homologating with Nav2? #8

Open
SteveMacenski opened this issue Jan 29, 2021 · 5 comments
Open

[Nav2] Potential interest in homologating with Nav2? #8

SteveMacenski opened this issue Jan 29, 2021 · 5 comments

Comments

@SteveMacenski
Copy link

SteveMacenski commented Jan 29, 2021

Hi,

I've seen this around and thought now would be a good time to start a dialog. We in Nav2 have been hard at work to support many new types of robots that previously did not get first-class support in ROS's flagship navigation project.

Since maybe the last time you took a look, we now support a highly-optimized Hybrid A* implementation supporting forward-only and forward-backward motion, as well very soon to have a Pure Pursuit implementation that also has a bunch of new bells and whistles.

It looks like this work is well aligned with our interests as well in supporting legged robots and ackermann cars and might be worth joining forces to take the best parts of both of our work. In the second half of 2020 I'd like to also work on publishing a follow up paper on the nav2 intro paper showing full-fledged quadruped support and examples of behavior trees for quadruped applications.

Steve

@jelavice
Copy link
Collaborator

jelavice commented Feb 1, 2021

Hi @SteveMacenski ,

thanks for reaching out and I am happy that you think this repo might be useful. I wasn't aware that the nav2 has gained such momentum!!! I am curious to hear what exactly you have in mind and how you plan to integrate legged robots. You can either write here or ping me on the email in the README file. Meanwhile, I'll read up the paper that you have sent to gain a better idea of what you have been up to.

Cheers,
Edo

@SteveMacenski
Copy link
Author

SteveMacenski commented Feb 1, 2021

Hi,

I have a unitree A1 I'm planning on having run with the nav2 stack and use pretty much the same subset of algorithms you have here for use. We have a new pure pursuit planner that implements constant velocity, heuristic velocity (slow near obstacles or in high curvature paths), and adaptive/static lookahead distance parameteriations - as well as a Hybrid-A* planner which I think is analogous for use as your OMPL based solution that meets the needs of both cars and legged robots running.

I think it would be interesting if you familiarized yourself with the Hybrid-A* readme / software and the new regulated Pure Pursuit implementation (I sent you an email with my draft of this work) and see if they meet your needs. If they don't, I think that's a great place for us to start talking about what's missing in them or what other algorithms you think are useful you have here/in your roadmap and see where we can go! Or what your ultimate research / implementations goals are and see if we can accelerate each other towards that.

I think we have nearly aligned goals. I want to support ackermann / legged robots as first-class citizens in Nav2 just as differential/omnidirectional have been in the past. And it looks like you have interest in working with some ackermann / legged robots that might be useful to collaborate on some research to show that we can enable that now in the scalable Nav2 framework!

While you use OMPL + RRT* with ackermann motion models, we use Hybrid-A* which we find is faster and was highly optimized to also enable a state lattice planner to be built in the same framework. It looks like we're on the same page about Pure Pursuit (and we've both added our own bells and whistles) but we're also looking to have ackermann trajectory generators added to the new DWB plugin-based scoring controller so that DWB can be used on legged / quads too (not even much work, just needs someone interested enough to do / test it)! While down the line a bit more, an N-MPC is also on the books though may be a end-of-2021 goal.

@SteveMacenski
Copy link
Author

Any thoughts here?

@jelavice
Copy link
Collaborator

Hi Steve,

apologies for the delay. This code was an outcome of a project that we did about 2 years ago and back then there was not much out of there that would suit our needs. I decided to open-source it as a coding exercise (before it was much worse :P) I will not continue actively developing this code however, I will still merge some work done by some students from our lab in the next month or so (tighter integration with grid_map and support for changing maps). Nowadays, I am mostly working on 3D planning for legged-wheeled robots.

I pretty much agree with the improvements made to the pure pursuit and it would certainly fit my use case. My version here is just a very basic version of what you proposed.

There is one point that you might be interested in. I am planning to integrate an approach pose planner in this repo. Our use case was that we could tell the robot the goal position however not the full pose. Subsequently, we extended the planner to plan approach poses and paths in SE2. Once I add the approach pose planner (in the next two weeks or so) you can see whether that is something that would be useful. We could then potentially improve it and see that it fits use cases that you have in mind.

@SteveMacenski
Copy link
Author

SteveMacenski commented Jul 28, 2023

It been a hot minute but this came back onto my radar. I just wanted to quickly follow up here to mention Nav2 now has:

  • SE2 State Lattice planning
  • SE2 Hybrid-A* planning
  • MPPI controller supporting ackermann and non-circular omni/diff robots for SE2 collision checking
  • RPP controller supporting ackermann and non-circular omni/diff robots for SE2 collision checking

So its a relatively complete solution now over the last ~2 years of work since this thread 😄

https://navigation.ros.org/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants