Comments (8)
We realized that making the maximum curvature and its diff smaller remove many of the loops. So basically if a loop is detected, we compute the same turn with smaller curv and diff curv. Constants are values that worked fine for our setting. It would be awesome to have a better solution than this
from fields2cover.
No I think the PR doesn't need reversion, just refinement. I think the PR still works in many cases, and is better than what it was before.
from fields2cover.
Hi @vinnnyr, PR merged.
from fields2cover.
@Gonzalo-Mier Can you explain how that heurisitc for removing loops works?
Is there anything special about the contants used here?
CC00_Dubins_State_Space ss(
robot.getMaxCurv() / (1+0.05*n),
robot.getMaxDiffCurv() / (1+0.2*n),
discretization,
true);
I am finding that I am still getting loops in certain situations, even with this patch merged in. I am having trouble tracking down if it's the heuristic, the max number of iterations, or the loop detection itself.
from fields2cover.
@Gonzalo-Mier Maybe I am mistaken, but I actually think we want to make the max diff larger every iteration of this loop.
Loops are caused by overconstraining the problem, but making the max allowed curvature diff smaller every iteration is adding more constraint. So I believe that we actually want
CC00_Dubins_State_Space ss(
robot.getMaxCurv() / (1+0.05*n),
robot.getMaxDiffCurv() * (1+0.2*n),
discretization,
true);
Maybe in your case, the reduction of max curvature overpowered the affect of changing the max diff so you haven't seen this issue yet.
Do you agree?
from fields2cover.
Hi @vinnnyr,
As mention in the PR, the max sharpness is a constrain because the sharpness should not be higher than that. In cases where sharpness is not a constrain, we could use Dubins instead assuming that max sharpness is infinite.
from fields2cover.
Ok, good point. I see what you are saying. For applications in which the sharpness bound needs to absolutely respected then yes my proposal would be a bad change. I will think about this some more to see if there is something we can do to meet both use cases or figure out why I am seeing more loops than usual even with the original change merged in.
from fields2cover.
Probably because the routes require middle points to travel through the headlands, which create those loops. I have tried to search a good solution but couldn't find one yet.
Do you think I need to revert the PR then?
from fields2cover.
Related Issues (20)
- ROS Noetic, CMake could not find Fiels2Cover package
- Crossing inner cells HOT 3
- ROS buildfarm does not compile F2C properly HOT 18
- Packaging for distribution is needed, as the build subsequently fails because of the many unspecified dependencies HOT 3
- Fields2Cover build breaks other ROS packages build (Eigen error) HOT 2
- Install swig from package manager HOT 7
- Python syntax to specify options for planCovPath and planCovRoute HOT 3
- CMake error with v2 changes on libabsl_log_severity.a HOT 14
- Add figure_size() function to allow control of output size of visualiser.
- Idea - add minimum distance cost/penalty for ortools::RoutingModel for emergent snake/spiral behaviour. HOT 1
- Segfault at exit. HOT 6
- Virtual Superclasses Should Have Virtual Destructors
- Installing f2c as a local package to venv
- Undefined Reference to GLIB HOT 2
- Wrong Repo
- Get USE_ORTOOLS_FETCH_SRC=ON to work again. HOT 3
- Working with WGS84 HOT 6
- Generate swaths start with a angle and point ? HOT 3
- ability to bypass static obstacles while generating CPP trajectory HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fields2cover.