Skip to content

Commit

Permalink
Implement signed curvature (#355)
Browse files Browse the repository at this point in the history
  • Loading branch information
johannes-fischer authored Oct 25, 2024
1 parent 55c1f41 commit 3573ce8
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 1 deletion.
12 changes: 12 additions & 0 deletions lanelet2_core/include/lanelet2_core/geometry/LineString.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,18 @@ double signedDistance(const LineString2dT& lineString, const BasicPoint2d& p);
template <typename Point2dT>
double curvature2d(const Point2dT& p1, const Point2dT& p2, const Point2dT& p3);

/**
* Calculate the signed curvature value given 3 consecutive points.
* The signed curvature value is positive if the consecutive points describe a left turn, negative otherwise.
*
* @param p1, p2, p3 are the points
* @return curvature value.
*
* If any 2 of the 3 points duplicate, return infinity.
*/
template <typename Point2dT>
double signedCurvature2d(const Point2dT& p1, const Point2dT& p2, const Point2dT& p3);

/**
*
* @brief Transform a point to the coordinates of the linestring
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -703,6 +703,11 @@ double signedDistance(const LineString2dT& lineString, const BasicPoint2d& p) {

template <typename Point2dT>
double curvature2d(const Point2dT& p1, const Point2dT& p2, const Point2dT& p3) {
return std::fabs(signedCurvature2d(p1, p2, p3));
}

template <typename Point2dT>
double signedCurvature2d(const Point2dT& p1, const Point2dT& p2, const Point2dT& p3) {
// see https://en.wikipedia.org/wiki/Menger_curvature#Definition
const double area = 0.5 * ((p2.x() - p1.x()) * (p3.y() - p1.y()) - (p2.y() - p1.y()) * (p3.x() - p1.x()));
const double side1 = distance(p1, p2);
Expand All @@ -712,7 +717,7 @@ double curvature2d(const Point2dT& p1, const Point2dT& p2, const Point2dT& p3) {
if (product < 1e-20) {
return std::numeric_limits<double>::infinity();
}
return std::fabs(4 * area / product);
return 4 * area / product;
}

template <typename LineString2dT>
Expand Down
6 changes: 6 additions & 0 deletions lanelet2_core/test/test_linestring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,12 @@ TYPED_TEST(AllLineStringsTest, segmentsInverse) { // NOLINT
TYPED_TEST(TwoDPointsTest, checkCurvature) {
EXPECT_DOUBLE_EQ(1., geometry::curvature2d(this->p1, this->p2, this->p3));
EXPECT_DOUBLE_EQ(std::numeric_limits<double>::infinity(), geometry::curvature2d(this->p1, this->p2, this->p4));
EXPECT_DOUBLE_EQ(1., geometry::curvature2d(this->p3, this->p2, this->p1));
EXPECT_DOUBLE_EQ(std::numeric_limits<double>::infinity(), geometry::curvature2d(this->p3, this->p2, this->p4));
EXPECT_DOUBLE_EQ(1., geometry::signedCurvature2d(this->p1, this->p2, this->p3));
EXPECT_DOUBLE_EQ(std::numeric_limits<double>::infinity(), geometry::signedCurvature2d(this->p1, this->p2, this->p4));
EXPECT_DOUBLE_EQ(-1., geometry::signedCurvature2d(this->p3, this->p2, this->p1));
EXPECT_DOUBLE_EQ(std::numeric_limits<double>::infinity(), geometry::signedCurvature2d(this->p3, this->p2, this->p4));
}

TYPED_TEST(TwoDLineStringsTest, signedDistance) { // NOLINT
Expand Down
6 changes: 6 additions & 0 deletions lanelet2_python/python_api/geometry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,12 @@ BOOST_PYTHON_MODULE(PYTHON_API_MODULE_NAME) { // NOLINT
def("area", boost::geometry::area<BasicPolygon2d>);
def("area", boost::geometry::area<ConstHybridPolygon2d>);

def("curvature2d", lg::curvature2d<BasicPoint2d>);
def("curvature2d", lg::curvature2d<ConstPoint2d>);

def("signedCurvature2d", lg::signedCurvature2d<BasicPoint2d>);
def("signedCurvature2d", lg::signedCurvature2d<ConstPoint2d>);

class_<ArcCoordinates>("ArcCoordinates", "Coordinates along an arc", no_init)
.def("__init__", make_constructor(
+[](double length, double distance) {
Expand Down

1 comment on commit 3573ce8

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LCOV of commit [3573ce8] during Lanelet2 CI #215

Summary coverage rate:
  lines......: 91.1% (13151 of 14435 lines)
  functions..: 80.1% (5815 of 7261 functions)
  branches...: no data found
File coverage rate:
                                                                                                                                 |Lines       |Functions  |Branches    
  Filename                                                                                                                       |Rate     Num|Rate    Num|Rate     Num
  =====================================================================================================================================================================
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/Attribute.h                                         |86.5%     37|90.5%    21|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/Exceptions.h                                        |11.1%      9|33.3%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/LaneletMap.h                                        |82.8%     29|70.0%    70|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/BoundingBox.h                              | 100%      7| 100%    19|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/GeometryHelper.h                           |93.8%     16| 100%    36|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/LineString.h                               | 100%      1| 100%    10|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/Point.h                                    | 100%     15|58.9%   175|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/Polygon.h                                  | 100%     14| 100%    16|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/RegulatoryElement.h                        | 100%      4| 100%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/impl/Area.h                                |94.5%     73|92.5%    40|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/impl/Lanelet.h                             |84.4%     90|83.3%    42|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/impl/LaneletMap.h                          | 100%     24|22.7%   176|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/impl/LineString.h                          |94.1%    388|96.7%   304|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/geometry/impl/Polygon.h                             |96.3%     27|72.0%    25|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/Area.h                                   |71.0%    100|88.0%    50|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/BasicRegulatoryElements.h                | 100%     13| 100%     6|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/BoundingBox.h                            | 100%     34| 100%    13|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/CompoundLineString.h                     |93.1%     58|86.0%   107|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/CompoundPolygon.h                        | 100%     12| 100%    11|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/Lanelet.h                                |90.7%     86|87.5%    72|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/LaneletOrArea.h                          |95.1%     41| 100%    29|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/LaneletSequence.h                        |70.6%     51|86.8%    38|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/LineString.h                             |87.6%    161|91.0%   188|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/LineStringOrPolygon.h                    |86.8%     38|73.0%    37|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/Point.h                                  |92.9%     56|95.0%    40|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/Polygon.h                                |64.4%     45|62.2%    37|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/Primitive.h                              |92.9%     56|83.9%   168|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/RegulatoryElement.h                      |77.4%     93|84.1%    63|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/primitives/Traits.h                                 | 100%     16|85.7%    77|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/utility/CompoundIterator.h                          |95.7%     70| 100%    14|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/utility/HybridMap.h                                 |96.2%    105|78.8%    80|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/utility/ReverseAndForwardIterator.h                 | 100%     19|94.9%    39|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/utility/TransformIterator.h                         | 100%     11|96.3%    82|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/utility/Units.h                                     | 100%      8| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/include/lanelet2_core/utility/Utilities.h                                 |99.0%    103|85.0%   552|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/Attribute.cpp                                                         |94.9%     78| 100%    27|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/BasicRegulatoryElements.cpp                                           |75.6%    275|67.0%    94|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/Lanelet.cpp                                                           | 100%    170|96.8%    31|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/LaneletMap.cpp                                                        |79.8%    524|60.7%   501|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/LaneletSequence.cpp                                                   |89.5%     19|75.0%     8|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/LineStringGeometry.cpp                                                |88.7%    222|56.8%   329|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/PolygonTriangulationGeometry.cpp                                      |87.6%    209|95.3%    43|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/RegulatoryElement.cpp                                                 |60.6%     94|56.8%    37|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/src/RegulatoryElementGeometry.cpp                                         |82.6%     46|89.5%    19|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/lanelet_map_test_case.h                                              | 100%     40| 100%    36|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_area.cpp                                                        | 100%    188| 100%    51|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_attribute.cpp                                                   | 100%     80| 100%    22|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_lanelet.cpp                                                     | 100%    267| 100%    60|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_lanelet_map.cpp                                                 | 100%    205| 100%    95|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_lanelet_map_geometry.cpp                                        | 100%    113| 100%    57|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_lanelet_or_area.cpp                                             | 100%     33| 100%     9|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_lanelet_sequence.cpp                                            | 100%     54| 100%    17|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_linestring.cpp                                                  | 100%    467| 100%   338|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_point.cpp                                                       | 100%     81| 100%    18|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_polygon.cpp                                                     |99.4%    169| 100%   105|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_core/test/test_regulatory_element.cpp                                          | 100%    179| 100%    48|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/include/lanelet2_examples/internal/ExampleHelpers.h                   | 100%     27| 100%     7|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/01_dealing_with_lanelet_primitives/main.cpp                       | 100%    181| 100%     8|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/02_regulatory_elements/main.cpp                                   | 100%     41| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/03_lanelet_map/main.cpp                                           | 100%     73| 100%     6|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/04_reading_and_writing/main.cpp                                   |97.1%     34| 100%     8|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/05_traffic_rules/main.cpp                                         | 100%     49| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/06_routing/main.cpp                                               | 100%     62| 100%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_examples/src/07_matching/main.cpp                                              | 100%     90| 100%     9|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/Io.h                                                    | 100%      4|    -     0|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/Projection.h                                            | 100%     18|90.9%    11|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/BinHandler.h                                | 100%      4| 100%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/Factory.h                                   | 100%     12| 100%    12|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/IoHandler.h                                 |85.7%      7|75.0%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/OsmFile.h                                   |96.2%     26|92.9%    28|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/OsmHandler.h                                | 100%      4| 100%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/Parser.h                                    | 0.0%      2| 0.0%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/Serialize.h                                 |94.6%    277|95.3%    86|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/include/lanelet2_io/io_handlers/Writer.h                                    | 0.0%      4| 0.0%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/src/BinHandler.cpp                                                          |90.0%     20| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/src/Factory.cpp                                                             |87.3%     79|92.3%    13|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/src/Io.cpp                                                                  |91.1%     45|86.7%    15|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/src/OsmFile.cpp                                                             |97.6%    205| 100%    25|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/src/OsmHandlerLoad.cpp                                                      |77.5%    258|83.3%    48|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/src/OsmHandlerWrite.cpp                                                     |74.3%    179|86.2%    29|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/test/TestBinHandler.cpp                                                     | 100%     70| 100%    26|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/test/TestLanelet2Io.cpp                                                     | 100%     15| 100%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/test/TestOsmFile.cpp                                                        | 100%     93| 100%    12|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/test/TestOsmHandler.cpp                                                     | 100%     89| 100%    20|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/test/TestSetup.h                                                            |98.8%     86|93.9%    33|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_io/test/TestSimpleUsage.cpp                                                    | 100%      8| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_matching/include/lanelet2_matching/LaneletMatching.h                           | 100%     11| 100%    10|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_matching/include/lanelet2_matching/Utilities.h                                 | 100%      4| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_matching/src/LaneletMatching.cpp                                               | 100%     38| 100%    12|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_matching/src/Utilities.cpp                                                     | 100%     33| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_matching/test/lanelet2_matching.cpp                                            |97.0%    133| 100%    26|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/include/lanelet2_projection/Geocentric.h                            | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/include/lanelet2_projection/Mercator.h                              | 100%     24| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/src/Geocentric.cpp                                                  | 100%     15| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/src/LocalCartesian.cpp                                              | 100%     18| 100%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/src/UTM.cpp                                                         |93.3%     45| 100%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/test/test_Geocentric.cpp                                            | 100%     13| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/test/test_LocalCartesian.cpp                                        | 100%     13| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/test/test_Mercator.cpp                                              | 100%     16| 100%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_projection/test/test_UTM.cpp                                                   | 100%     41| 100%    15|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/include/lanelet2_python/internal/converter.h                            |55.3%     85|30.0%   200|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/core.cpp                                                     |78.4%    906|36.0%   317|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/geometry.cpp                                                 |78.6%    345|56.8%   148|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/io.cpp                                                       |94.6%     56|91.7%    12|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/matching.cpp                                                 |96.4%     84| 100%    13|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/projection.cpp                                               | 100%     14| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/routing.cpp                                                  |77.4%    190|20.0%    25|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_python/python_api/traffic_rules.cpp                                            |75.4%     65|25.8%    31|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/Forward.h                                     |81.4%     43| 100%     7|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/LaneletPath.h                                 |88.0%     25|90.0%    20|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/Route.h                                       | 100%      3| 100%     6|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/RoutingCost.h                                 |87.9%     33|86.7%    15|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/RoutingGraph.h                                | 100%      4|50.0%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/RoutingGraphContainer.h                       |97.0%     33| 100%     7|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/Types.h                                       | 100%      2| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/internal/Graph.h                              |92.4%     79|95.5%    44|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/internal/GraphUtils.h                         | 100%    146| 100%    71|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/internal/RouteBuilder.h                       | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/internal/RoutingGraphVisualization.h          |96.0%     50|81.8%    11|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/include/lanelet2_routing/internal/ShortestPath.h                       | 100%     35|89.0%    91|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/src/LaneletPath.cpp                                                    |88.4%    215| 100%    28|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/src/Route.cpp                                                          |78.1%    256|84.8%    46|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/src/RouteBuilder.cpp                                                   |99.1%    228| 100%    51|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/src/RoutingCost.cpp                                                    |88.2%     17| 100%     7|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/src/RoutingGraph.cpp                                                   |83.5%    514|83.7%   153|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/src/RoutingGraphBuilder.cpp                                            |98.4%    245| 100%    38|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_lanelet_or_area_path.cpp                                     | 100%    152| 100%    26|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_relations.cpp                                                | 100%    393| 100%    81|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_route.cpp                                                    | 100%    254|91.2%   171|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_routing.cpp                                                  | 100%    373| 100%   104|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_routing_graph_container.cpp                                  | 100%     66| 100%    14|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_routing_map.h                                                | 100%    419| 100%    16|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_routing/test/test_routing_visualization.cpp                                    |98.4%     64| 100%    20|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/include/lanelet2_traffic_rules/GermanTrafficRules.h              |72.7%     11|77.8%     9|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/include/lanelet2_traffic_rules/TrafficRules.h                    | 100%      2|66.7%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/include/lanelet2_traffic_rules/TrafficRulesFactory.h             | 100%      8| 100%     8|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/src/GenericTrafficRules.cpp                                      |92.7%    193|95.0%    40|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/src/GermanTrafficRules.cpp                                       |94.1%     17| 100%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/src/TrafficRulesFactory.cpp                                      |72.2%     18|50.0%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_traffic_rules/test/lanelet2_traffic_rules.cpp                                  | 100%    408| 100%   145|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/BasicValidator.h                        | 100%      2|50.0%     4|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/Issue.h                                 |61.1%     36| 100%     5|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/Validation.h                            | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/ValidatorFactory.h                      | 100%      7| 100%    17|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/BoolTags.h           | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/CurvatureTooBig.h    | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/DuplicatedPoints.h   | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/MandatoryTags.h      | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/PointsTooClose.h     | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/UnknownTagValue.h    | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/mapping/UnknownTags.h        | 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/include/lanelet2_validation/validators/routing/RoutingGraphIsValid.h| 100%      1| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/Cli.cpp                                                         |76.4%     55| 100%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/Validation.cpp                                                  |91.3%     92|90.0%    20|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/ValidatorFactory.cpp                                            |93.2%     44|88.9%    27|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/validators/CheckTags.cpp                                        |92.7%    151| 100%    44|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/validators/CurvatureTooBig.cpp                                  |85.7%     14| 100%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/validators/DuplicatedPoints.cpp                                 |75.0%     20|66.7%     3|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/validators/PointsTooClose.cpp                                   | 100%     11| 100%     1|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/src/validators/RoutingGraphIsValid.cpp                              | 100%      3|50.0%     2|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/test/lanelet2_validation.cpp                                        | 100%     46| 100%    10|    -      0
  /home/developer/workspace/src/lanelet2/lanelet2_validation/tools/lanelet2_validate/main.cpp                                    | 0.0%      3| 0.0%     1|    -      0

Please sign in to comment.