Skip to content

Commit 0c20459

Browse files
refactor(lanelet2_map_preprocessor): apply static analysis (#7870)
* refactor based on linter Signed-off-by: a-maumau <maumaumaumaumaumaumaumaumaumau@gmail.com> * style(pre-commit): autofix * apply suggestion Signed-off-by: a-maumau <maumaumaumaumaumaumaumaumaumau@gmail.com> --------- Signed-off-by: a-maumau <maumaumaumaumaumaumaumaumaumau@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 45a0c3a commit 0c20459

6 files changed

+116
-135
lines changed

map/util/lanelet2_map_preprocessor/src/fix_lane_change_tags.cpp

+15-18
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@
2727
#include <unordered_set>
2828
#include <vector>
2929

30-
using lanelet::utils::getId;
31-
using lanelet::utils::to2D;
32-
33-
bool loadLaneletMap(
30+
bool load_lanelet_map(
3431
const std::string & llt_map_path, lanelet::LaneletMapPtr & lanelet_map_ptr,
3532
lanelet::Projector & projector)
3633
{
@@ -48,32 +45,32 @@ bool loadLaneletMap(
4845
return true;
4946
}
5047

51-
lanelet::Lanelets convertToVector(lanelet::LaneletMapPtr & lanelet_map_ptr)
48+
lanelet::Lanelets convert_to_vector(const lanelet::LaneletMapPtr & lanelet_map_ptr)
5249
{
5350
lanelet::Lanelets lanelets;
54-
for (lanelet::Lanelet lanelet : lanelet_map_ptr->laneletLayer) {
55-
lanelets.push_back(lanelet);
56-
}
51+
std::copy(
52+
lanelet_map_ptr->laneletLayer.begin(), lanelet_map_ptr->laneletLayer.end(),
53+
std::back_inserter(lanelets));
5754
return lanelets;
5855
}
59-
void fixTags(lanelet::LaneletMapPtr & lanelet_map_ptr)
56+
void fix_tags(lanelet::LaneletMapPtr & lanelet_map_ptr)
6057
{
61-
auto lanelets = convertToVector(lanelet_map_ptr);
62-
lanelet::traffic_rules::TrafficRulesPtr trafficRules =
58+
auto lanelets = convert_to_vector(lanelet_map_ptr);
59+
lanelet::traffic_rules::TrafficRulesPtr traffic_rules =
6360
lanelet::traffic_rules::TrafficRulesFactory::create(
6461
lanelet::Locations::Germany, lanelet::Participants::Vehicle);
65-
lanelet::routing::RoutingGraphUPtr routingGraph =
66-
lanelet::routing::RoutingGraph::build(*lanelet_map_ptr, *trafficRules);
62+
lanelet::routing::RoutingGraphUPtr routing_graph =
63+
lanelet::routing::RoutingGraph::build(*lanelet_map_ptr, *traffic_rules);
6764

6865
for (auto & llt : lanelets) {
69-
if (!routingGraph->conflicting(llt).empty()) {
66+
if (!routing_graph->conflicting(llt).empty()) {
7067
continue;
7168
}
7269
llt.attributes().erase("turn_direction");
73-
if (!!routingGraph->adjacentRight(llt)) {
70+
if (!!routing_graph->adjacentRight(llt)) {
7471
llt.rightBound().attributes()["lane_change"] = "yes";
7572
}
76-
if (!!routingGraph->adjacentLeft(llt)) {
73+
if (!!routing_graph->adjacentLeft(llt)) {
7774
llt.leftBound().attributes()["lane_change"] = "yes";
7875
}
7976
}
@@ -91,11 +88,11 @@ int main(int argc, char * argv[])
9188
lanelet::LaneletMapPtr llt_map_ptr(new lanelet::LaneletMap);
9289
lanelet::projection::MGRSProjector projector;
9390

94-
if (!loadLaneletMap(llt_map_path, llt_map_ptr, projector)) {
91+
if (!load_lanelet_map(llt_map_path, llt_map_ptr, projector)) {
9592
return EXIT_FAILURE;
9693
}
9794

98-
fixTags(llt_map_ptr);
95+
fix_tags(llt_map_ptr);
9996
lanelet::write(output_path, *llt_map_ptr, projector);
10097

10198
rclcpp::shutdown();

map/util/lanelet2_map_preprocessor/src/fix_z_value_by_pcd.cpp

+22-21
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#include <unordered_set>
2828
#include <vector>
2929

30-
bool loadLaneletMap(
30+
bool load_lanelet_map(
3131
const std::string & llt_map_path, lanelet::LaneletMapPtr & lanelet_map_ptr,
3232
lanelet::Projector & projector)
3333
{
@@ -45,7 +45,8 @@ bool loadLaneletMap(
4545
return true;
4646
}
4747

48-
bool loadPCDMap(const std::string & pcd_map_path, pcl::PointCloud<pcl::PointXYZ>::Ptr & pcd_map_ptr)
48+
bool load_pcd_map(
49+
const std::string & pcd_map_path, pcl::PointCloud<pcl::PointXYZ>::Ptr & pcd_map_ptr)
4950
{
5051
if (pcl::io::loadPCDFile<pcl::PointXYZ>(pcd_map_path, *pcd_map_ptr) == -1) { //* load the file
5152
RCLCPP_ERROR_STREAM(rclcpp::get_logger("loadPCDMap"), "Couldn't read file: " << pcd_map_path);
@@ -56,25 +57,24 @@ bool loadPCDMap(const std::string & pcd_map_path, pcl::PointCloud<pcl::PointXYZ>
5657
return true;
5758
}
5859

59-
double getMinHeightAroundPoint(
60+
double get_min_height_around_point(
6061
const pcl::PointCloud<pcl::PointXYZ>::Ptr & pcd_map_ptr,
6162
const pcl::KdTreeFLANN<pcl::PointXYZ> & kdtree, const pcl::PointXYZ & search_pt,
6263
const double search_radius3d, const double search_radius2d)
6364
{
64-
std::vector<int> pointIdxRadiusSearch;
65-
std::vector<float> pointRadiusSquaredDistance;
65+
std::vector<int> point_idx_radius_search;
66+
std::vector<float> point_radius_squared_distance;
6667
if (
6768
kdtree.radiusSearch(
68-
search_pt, search_radius3d, pointIdxRadiusSearch, pointRadiusSquaredDistance) <= 0) {
69+
search_pt, search_radius3d, point_idx_radius_search, point_radius_squared_distance) <= 0) {
6970
std::cout << "no points found within 3d radius " << search_radius3d << std::endl;
7071
return search_pt.z;
7172
}
7273

7374
double min_height = std::numeric_limits<double>::max();
7475
bool found = false;
7576

76-
for (std::size_t i = 0; i < pointIdxRadiusSearch.size(); i++) {
77-
std::size_t pt_idx = pointIdxRadiusSearch.at(i);
77+
for (auto pt_idx : point_idx_radius_search) {
7878
const auto pt = pcd_map_ptr->points.at(pt_idx);
7979
if (pt.z > min_height) {
8080
continue;
@@ -91,8 +91,9 @@ double getMinHeightAroundPoint(
9191
return min_height;
9292
}
9393

94-
void adjustHeight(
95-
const pcl::PointCloud<pcl::PointXYZ>::Ptr & pcd_map_ptr, lanelet::LaneletMapPtr & lanelet_map_ptr)
94+
void adjust_height(
95+
const pcl::PointCloud<pcl::PointXYZ>::Ptr & pcd_map_ptr,
96+
const lanelet::LaneletMapPtr & lanelet_map_ptr)
9697
{
9798
std::unordered_set<lanelet::Id> done;
9899
double search_radius2d = 0.5;
@@ -107,11 +108,11 @@ void adjustHeight(
107108
continue;
108109
}
109110
pcl::PointXYZ pcl_pt;
110-
pcl_pt.x = pt.x();
111-
pcl_pt.y = pt.y();
112-
pcl_pt.z = pt.z();
111+
pcl_pt.x = static_cast<float>(pt.x());
112+
pcl_pt.y = static_cast<float>(pt.y());
113+
pcl_pt.z = static_cast<float>(pt.z());
113114
double min_height =
114-
getMinHeightAroundPoint(pcd_map_ptr, kdtree, pcl_pt, search_radius3d, search_radius2d);
115+
get_min_height_around_point(pcd_map_ptr, kdtree, pcl_pt, search_radius3d, search_radius2d);
115116
std::cout << "moving from " << pt.z() << " to " << min_height << std::endl;
116117
pt.z() = min_height;
117118
done.insert(pt.id());
@@ -121,11 +122,11 @@ void adjustHeight(
121122
continue;
122123
}
123124
pcl::PointXYZ pcl_pt;
124-
pcl_pt.x = pt.x();
125-
pcl_pt.y = pt.y();
126-
pcl_pt.z = pt.z();
125+
pcl_pt.x = static_cast<float>(pt.x());
126+
pcl_pt.y = static_cast<float>(pt.y());
127+
pcl_pt.z = static_cast<float>(pt.z());
127128
double min_height =
128-
getMinHeightAroundPoint(pcd_map_ptr, kdtree, pcl_pt, search_radius3d, search_radius2d);
129+
get_min_height_around_point(pcd_map_ptr, kdtree, pcl_pt, search_radius3d, search_radius2d);
129130
std::cout << "moving from " << pt.z() << " to " << min_height << std::endl;
130131
pt.z() = min_height;
131132
done.insert(pt.id());
@@ -148,14 +149,14 @@ int main(int argc, char * argv[])
148149

149150
pcl::PointCloud<pcl::PointXYZ>::Ptr pcd_map_ptr(new pcl::PointCloud<pcl::PointXYZ>);
150151

151-
if (!loadLaneletMap(llt_map_path, llt_map_ptr, projector)) {
152+
if (!load_lanelet_map(llt_map_path, llt_map_ptr, projector)) {
152153
return EXIT_FAILURE;
153154
}
154-
if (!loadPCDMap(pcd_map_path, pcd_map_ptr)) {
155+
if (!load_pcd_map(pcd_map_path, pcd_map_ptr)) {
155156
return EXIT_FAILURE;
156157
}
157158

158-
adjustHeight(pcd_map_ptr, llt_map_ptr);
159+
adjust_height(pcd_map_ptr, llt_map_ptr);
159160
lanelet::write(llt_output_path, *llt_map_ptr, projector);
160161

161162
rclcpp::shutdown();

map/util/lanelet2_map_preprocessor/src/merge_close_lines.cpp

+42-56
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@
2626
#include <unordered_set>
2727
#include <vector>
2828

29-
using lanelet::utils::getId;
30-
using lanelet::utils::to2D;
31-
32-
bool loadLaneletMap(
29+
bool load_lanelet_map(
3330
const std::string & llt_map_path, lanelet::LaneletMapPtr & lanelet_map_ptr,
3431
lanelet::Projector & projector)
3532
{
@@ -47,21 +44,17 @@ bool loadLaneletMap(
4744
return true;
4845
}
4946

50-
bool exists(std::unordered_set<lanelet::Id> & set, lanelet::Id element)
51-
{
52-
return set.find(element) != set.end();
53-
}
54-
55-
lanelet::LineStrings3d convertLineLayerToLineStrings(lanelet::LaneletMapPtr & lanelet_map_ptr)
47+
lanelet::LineStrings3d convert_line_layer_to_line_strings(
48+
const lanelet::LaneletMapPtr & lanelet_map_ptr)
5649
{
5750
lanelet::LineStrings3d lines;
58-
for (const lanelet::LineString3d & line : lanelet_map_ptr->lineStringLayer) {
59-
lines.push_back(line);
60-
}
51+
std::copy(
52+
lanelet_map_ptr->lineStringLayer.begin(), lanelet_map_ptr->lineStringLayer.end(),
53+
std::back_inserter(lines));
6154
return lines;
6255
}
6356

64-
lanelet::ConstPoint3d get3DPointFrom2DArcLength(
57+
lanelet::ConstPoint3d get3d_point_from2d_arc_length(
6558
const lanelet::ConstLineString3d & line, const double s)
6659
{
6760
double accumulated_distance2d = 0;
@@ -71,27 +64,23 @@ lanelet::ConstPoint3d get3DPointFrom2DArcLength(
7164
auto prev_pt = line.front();
7265
for (size_t i = 1; i < line.size(); i++) {
7366
const auto & pt = line[i];
74-
double distance2d = lanelet::geometry::distance2d(to2D(prev_pt), to2D(pt));
67+
double distance2d =
68+
lanelet::geometry::distance2d(lanelet::utils::to2D(prev_pt), lanelet::utils::to2D(pt));
7569
if (accumulated_distance2d + distance2d >= s) {
7670
double ratio = (s - accumulated_distance2d) / distance2d;
7771
auto interpolated_pt = prev_pt.basicPoint() * (1 - ratio) + pt.basicPoint() * ratio;
7872
std::cout << interpolated_pt << std::endl;
79-
return lanelet::ConstPoint3d(
80-
lanelet::utils::getId(), interpolated_pt.x(), interpolated_pt.y(), interpolated_pt.z());
73+
return lanelet::ConstPoint3d{
74+
lanelet::utils::getId(), interpolated_pt.x(), interpolated_pt.y(), interpolated_pt.z()};
8175
}
8276
accumulated_distance2d += distance2d;
8377
prev_pt = pt;
8478
}
8579
RCLCPP_ERROR(rclcpp::get_logger("merge_close_lines"), "interpolation failed");
86-
return lanelet::ConstPoint3d();
87-
}
88-
89-
double getLineLength(const lanelet::ConstLineString3d & line)
90-
{
91-
return boost::geometry::length(line.basicLineString());
80+
return {};
9281
}
9382

94-
bool areLinesSame(
83+
bool are_lines_same(
9584
const lanelet::ConstLineString3d & line1, const lanelet::ConstLineString3d & line2)
9685
{
9786
bool same_ends = false;
@@ -105,66 +94,63 @@ bool areLinesSame(
10594
return false;
10695
}
10796

108-
double sum_distance = 0;
109-
for (const auto & pt : line1) {
110-
sum_distance += boost::geometry::distance(pt.basicPoint(), line2);
111-
}
112-
for (const auto & pt : line2) {
113-
sum_distance += boost::geometry::distance(pt.basicPoint(), line1);
114-
}
97+
double sum_distance =
98+
std::accumulate(line1.begin(), line1.end(), 0.0, [&line2](double sum, const auto & pt) {
99+
return sum + boost::geometry::distance(pt.basicPoint(), line2);
100+
});
101+
sum_distance +=
102+
std::accumulate(line2.begin(), line2.end(), 0.0, [&line1](double sum, const auto & pt) {
103+
return sum + boost::geometry::distance(pt.basicPoint(), line1);
104+
});
115105

116-
double avg_distance = sum_distance / (line1.size() + line2.size());
106+
double avg_distance = sum_distance / static_cast<double>(line1.size() + line2.size());
117107
std::cout << line1 << " " << line2 << " " << avg_distance << std::endl;
118-
if (avg_distance < 1.0) {
119-
return true;
120-
} else {
121-
return false;
122-
}
108+
return avg_distance < 1.0;
123109
}
124110

125-
lanelet::BasicPoint3d getClosestPointOnLine(
111+
lanelet::BasicPoint3d get_closest_point_on_line(
126112
const lanelet::BasicPoint3d & search_point, const lanelet::ConstLineString3d & line)
127113
{
128-
auto arc_coordinate = lanelet::geometry::toArcCoordinates(to2D(line), to2D(search_point));
114+
auto arc_coordinate = lanelet::geometry::toArcCoordinates(
115+
lanelet::utils::to2D(line), lanelet::utils::to2D(search_point));
129116
std::cout << arc_coordinate.length << " " << arc_coordinate.distance << std::endl;
130-
return get3DPointFrom2DArcLength(line, arc_coordinate.length).basicPoint();
117+
return get3d_point_from2d_arc_length(line, arc_coordinate.length).basicPoint();
131118
}
132119

133-
lanelet::LineString3d mergeTwoLines(
120+
lanelet::LineString3d merge_two_lines(
134121
const lanelet::LineString3d & line1, const lanelet::ConstLineString3d & line2)
135122
{
136123
lanelet::Points3d new_points;
137124
for (const auto & p1 : line1) {
138-
lanelet::BasicPoint3d p1_basic_point = p1.basicPoint();
139-
lanelet::BasicPoint3d p2_basic_point = getClosestPointOnLine(p1, line2);
125+
const lanelet::BasicPoint3d & p1_basic_point = p1.basicPoint();
126+
lanelet::BasicPoint3d p2_basic_point = get_closest_point_on_line(p1, line2);
140127
lanelet::BasicPoint3d new_basic_point = (p1_basic_point + p2_basic_point) / 2;
141128
lanelet::Point3d new_point(lanelet::utils::getId(), new_basic_point);
142129
new_points.push_back(new_point);
143130
}
144-
return lanelet::LineString3d(lanelet::utils::getId(), new_points);
131+
return lanelet::LineString3d{lanelet::utils::getId(), new_points};
145132
}
146133

147-
void copyData(lanelet::LineString3d & dst, lanelet::LineString3d & src)
134+
void copy_data(lanelet::LineString3d & dst, const lanelet::LineString3d & src)
148135
{
149-
lanelet::Points3d points;
150136
dst.clear();
151-
for (lanelet::Point3d & pt : src) {
152-
dst.push_back(pt);
137+
for (const lanelet::ConstPoint3d & pt : src) {
138+
dst.push_back(static_cast<lanelet::Point3d>(pt));
153139
}
154140
}
155141

156-
void mergeLines(lanelet::LaneletMapPtr & lanelet_map_ptr)
142+
void merge_lines(lanelet::LaneletMapPtr & lanelet_map_ptr)
157143
{
158-
auto lines = convertLineLayerToLineStrings(lanelet_map_ptr);
144+
auto lines = convert_line_layer_to_line_strings(lanelet_map_ptr);
159145

160146
for (size_t i = 0; i < lines.size(); i++) {
161147
auto line_i = lines.at(i);
162148
for (size_t j = 0; j < i; j++) {
163149
auto line_j = lines.at(j);
164-
if (areLinesSame(line_i, line_j)) {
165-
auto merged_line = mergeTwoLines(line_i, line_j);
166-
copyData(line_i, merged_line);
167-
copyData(line_j, merged_line);
150+
if (are_lines_same(line_i, line_j)) {
151+
auto merged_line = merge_two_lines(line_i, line_j);
152+
copy_data(line_i, merged_line);
153+
copy_data(line_j, merged_line);
168154
line_i.setId(line_j.id());
169155
std::cout << line_j << " " << line_i << std::endl;
170156
// lanelet_map_ptr->add(merged_line);
@@ -189,11 +175,11 @@ int main(int argc, char * argv[])
189175
lanelet::LaneletMapPtr llt_map_ptr(new lanelet::LaneletMap);
190176
lanelet::projection::MGRSProjector projector;
191177

192-
if (!loadLaneletMap(llt_map_path, llt_map_ptr, projector)) {
178+
if (!load_lanelet_map(llt_map_path, llt_map_ptr, projector)) {
193179
return EXIT_FAILURE;
194180
}
195181

196-
mergeLines(llt_map_ptr);
182+
merge_lines(llt_map_ptr);
197183
lanelet::write(output_path, *llt_map_ptr, projector);
198184

199185
rclcpp::shutdown();

0 commit comments

Comments
 (0)