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

RootRework: Better navigation? #107

Open
MoffKalast opened this issue Mar 22, 2022 · 10 comments
Open

RootRework: Better navigation? #107

MoffKalast opened this issue Mar 22, 2022 · 10 comments
Assignees

Comments

@MoffKalast
Copy link
Contributor

MoffKalast commented Mar 22, 2022

As discussed we'll try to implement two types of path planning:

  • A* paths to do collision avoidance (Janez)
  • a system that doesn't use occupancy grids (Jan)

We can open separate issues for each once we have more of an idea about what's the end goal for each.

@JanezCim
Copy link
Contributor

JanezCim commented Mar 24, 2022

OK with a* this is where i am now:
output

robot ran in Gazebo, slam with iris lama, in rviz you set a nav goal, ros navigation global planner calculates path to it using a*, outputs goal and magni follows it using move_basic
Next planned work: recaculate that path every x meters/ y seconds, recalculate goal if obstacle on path

@MoffKalast
Copy link
Contributor Author

and magni follows it using move_basic

Wait, does move basic actually have path following capabilities?

@JanezCim
Copy link
Contributor

Nope, goal manager is passing the specific points through actions

@MoffKalast
Copy link
Contributor Author

Ah ok, so how does it determine which points to send? Something like the farthest one in direct view?

@JanezCim
Copy link
Contributor

currently path is divided into 0.2m parts, and those points get sent to move basic to reach

@JanezCim
Copy link
Contributor

JanezCim commented Mar 24, 2022

Here is an addition of path tracing. Whenever there appears an obstacle on the path, simply resends the end goal and let the astar do the rest:
output

a couple of observations:

  • move basic stops at every intermediate point on the path so that is why the robot is so slow and clunky
  • astar takes shortest path in known space (drives on unknown space but wants to get off it asap) - which is good
  • when obstacle goes away, the lidar rays need to hit something behind it to actually delete it from occupancy grid - that way you can easily get ghost obstacles.
  • updaing of global occupancy grid can be quite slow (not good for fast driving)

@MoffKalast
Copy link
Contributor Author

MoffKalast commented Mar 25, 2022

Hmm I wonder if we could instead do this with sort of local map that updates faster. Instead of relying on a slam node, we could instead take the laserscan and treat any detections as obstacles to avoid and the rest as open space. There has been a lot of demand for very fast driving so that should probably be considered here.

Likely not as reliable but should be much faster I would think?

@JanezCim
Copy link
Contributor

JanezCim commented Mar 28, 2022

Im not sure that raspberry would be up to the task but we can try. But when we add the local planner then that is basically 80% of move base added haha. Might as well implement the whole damn thing

@JanezCim
Copy link
Contributor

JanezCim commented Mar 28, 2022

Teb local planner in action:

output

Comments:

  • works fine in gazebo with ok processing power
  • teb has lots of parameters but generally works ok out of the box
  • might be tough on RPI processors if this was actually running on the robot, so that remains to be seen.
  • If this was imeplemented then move basic would actually not be usable, since teb local planner actually calculates the cmd_vel. In this case our vornoi planner would actually have to be written as a global planner plugin to the move-base

@JanezCim
Copy link
Contributor

JanezCim commented Apr 20, 2022

Plan: @JanezCim tries out a* on real robot

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

3 participants