Comments (7)
Original comment by Luis G. Torres (Bitbucket: [Luis Torres](https://bitbucket.org/Luis Torres), ).
updated readability
from ompl.
Original comment by Ioan Sucan (Bitbucket: isucan, GitHub: isucan).
This looks good. We can add a virtual method to StateSpace to tell whether motions are symmetric. We can use that instead of some of the sanity checks flags too.
from ompl.
Original comment by Luis G. Torres (Bitbucket: [Luis Torres](https://bitbucket.org/Luis Torres), ).
Removed references to "asymmetric metric" since an asymmetric distance function cannot technically define a metric
from ompl.
Original comment by Luis G. Torres (Bitbucket: [Luis Torres](https://bitbucket.org/Luis Torres), ).
In my fork of OMPL, I've added a virtual method hasSymmetricDistance() to StateSpace.
However, it seems that there's more than one notion of symmetry in a given space; there's also the question of whether the state interpolation is symmetric; i.e. whether
interpolate(from, to, t, s) == interpolate(to, from, (1-t), s)
Ideally symmetry would imply that both the distance function and the state interpolation are symmetric, but this may not necessarily be the case. For instance, one may think that the current (asymmetric) DubinsStateSpace::distance() function is too expensive, and therefore opt to use the (symmetric) SE2StateSpace::distance() function instead as a heuristic, but still prefer to use the current (asymmetric) DubinsStateSpace::interpolate() function. In such a case, we'd have a symmetric distance function and an asymmetric interpolation.
Maintaining this distinction in symmetry of interpolation is again important for RRTstar: if interpolation is symmetric, we can assume that if checkMotion(s1, s2) is true, then checkMotion(s2, s1) is true and save some computation time.
Does adding yet another virtual method, StateSpace::hasSymmetricInterpolation(), make sense?
from ompl.
Original comment by Mark Moll (Bitbucket: mamoll, GitHub: mamoll).
Is the member function StateSpace::isMetricSpace() sufficient for your needs, or do you still need StateSpace::hasSymmetricInterpolation()? Given that you are working on this in your own fork, we should just wait for your pull request and close this ticket after you code has been pulled (provided it all looks look to the OMPL developers)? BTW, I think your generalization of RRT* is a great idea.
from ompl.
Original comment by Mark Moll (Bitbucket: mamoll, GitHub: mamoll).
fixed since Luis' branch has been merged
from ompl.
Original comment by Florian Hauer (Bitbucket: hauerflorian, GitHub: hauerflorian).
I'm trying to use RRTStar with asymmetric cost and interpolation. It looks like this is handled in the code, but there is that test:
#!c++
if (!si_->getStateSpace()->hasSymmetricDistance() || !si_->getStateSpace()->hasSymmetricInterpolate())
{
OMPL_WARN("%s requires a state space with symmetric distance and symmetric interpolation.", getName().c_str());
}
in the setup method (line 109 of RRTStar.cpp).
Is that test remaining from before asymmetric cases were handled?
Or are asymmetric cases still not properly handled by the algorithm?
from ompl.
Related Issues (20)
- New Planner in Python HOT 2
- RRT* often does not find a path with more time than RRT HOT 2
- ompl.util._util error HOT 2
- ss.getSolutionPath().asGeometric().printAsMatrix()
- Segmentation fault (core dumped) while using pre-built Python wheel `ompl-1.6.0-cp38-cp38-manylinux_2_28_x86_64` HOT 1
- No QRRT in python
- Unreachable URL for SPOT
- No to_python (by-value) converter found for C++ type: std::pair<bool, bool> HOT 1
- libompl.so cannot be found HOT 1
- Segmentation fault when using ompl::tools:ParallelPlan in Python HOT 3
- AttributeError:module 'ompl.geometric' has no attribute 'vectorSpaceInformation'
- Setting up start and goal state in CompoundStateSpace() HOT 2
- When s0 is a state on the path, why is the cost from s0 to postemp not considered when calculating the cost from s0 to s1? HOT 1
- Implementation of Constraints on the SolutionPath HOT 3
- Crash on an Arm board HOT 1
- STRRTstar module 'ompl.base' has no attribute 'SpaceTimeStateSpace'
- Problem on multi-agent planning with SE2MultiRigidBodyPlanning HOT 2
- change only one dimension between states?
- Extension to other samplers in SE2MultiRigidBodyPlanning.cpp
- Use cache to speed up CI for Python wheels HOT 1
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 ompl.