Comments (12)
I see. Linestrings that have duplicated points are not allowed in general. There are too many algorithms (also in boost::geometry) that rely on this. We should update or docs to reflect that. Linestings that have one single point are allowed however.
from lanelet2.
I think you can workaround this problem by adjusting the border to a very small line:
from lanelet2.
yea that's what I have done. I just ask them if it should be an issue or not
from lanelet2.
Hm, that looks like a bug. I'll try to find the time to look into it this week. Thanks for reporting!
from lanelet2.
This is probably due to miscalculation of the orientation of boundaries.
You cannot calculate signed distance against a point(linestring with length 0).
Since the lane boundary is treated as wrong direction in some cases, lane graph would be corrupted and thus routing fails.
from lanelet2.
That shouldn't be the reason. This function checks which of the two linestrings of the lanelet has nonzero length and uses that for the signed distance calculation to the other boundary. There is even a unittest that covers this case. This kind of problem should also be visible in the debug routing graph.
But you are right in that it is most probably related to the problem that it is hard to determine neighborhood relationships for linestrings with zero length. Its not impossible, but hard to get right.
from lanelet2.
This function checks which of the two linestrings of the lanelet has nonzero length and uses that for the signed distance calculation to the other boundary.
Are you referring to this line?
if (!rightOfLeft && left.size() > 1) {
left = left.invert();
}
What it is checking is the size of the linestring, not the length.
I believe if the boundary has multiple points with the same location, then this error could still happen.
from lanelet2.
@amastrobera can you confirm that this problem is solved by using a single-point-linestring?
I tried to reproduce your issue and with my test cases everything worked fine with them.
from lanelet2.
@poggenhans yes I tried it just now. LineString3d of 1 point for border makes the path planning work.
from lanelet2.
Ok, thanks for checking. We have updated the doc and added a new validator to lanelet2_validation
for this case.
from lanelet2.
How do you generate a "single-node"-way in josm?
from lanelet2.
Afaik, its not possible directly within JOSM. If you remove the second-last node from a way, the way will be deleted as well. But at least JOSM will not remove existing single node ways from loaded OSM files.
To create one, you would have to create it directly within lanelet2 or modify the osm file by hand.
from lanelet2.
Related Issues (20)
- Pip install not working HOT 3
- [Cmake] HOT 4
- Lanelet2 pip wheel incompatible with `GLIBC_2.28` HOT 4
- [Question] Copy Lanelet Object HOT 4
- __init__() of Lanelet2.core.ReguratoryElement not supported in Python HOT 1
- [Question] Possible Paths other than shortest path from start to end lanelets HOT 6
- Add support for python type hints in python package HOT 6
- Map of Karlsruhe HOT 4
- Python: add node to existing lineString HOT 3
- How to do the same job as BinParser in lanelet2_io in Python HOT 5
- lanelet2_core build fails HOT 3
- Lanelet2_validation fail while catkin build HOT 3
- lanelet2_core fails to build on ROS 2 Rolling HOT 1
- Remove dependency of mrt_cmake_modules HOT 3
- lanelet2_io [ Exited with code 2 ] HOT 2
- How to load an .osm file with the Geocentric projection to get the data in ECEF HOT 6
- When load an OSM file, is tag: one_way work? HOT 1
- lanelet2 don't output anything HOT 2
- Broken Links within Mkdocs Documentation HOT 2
- Route search by specifying impassable lanes HOT 4
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 lanelet2.