@@ -159,3 +159,61 @@ TEST(GeographyUtilsProjection, ProjectForwardAndReverseLocalCartesianUTMOrigin)
159
159
EXPECT_NEAR (converted_geo_point.longitude , geo_point.longitude , 0.0001 );
160
160
EXPECT_NEAR (converted_geo_point.altitude , geo_point.altitude , 0.0001 );
161
161
}
162
+
163
+ TEST (GeographyUtilsProjection, ProjectForwardToLocalCartesianOrigin)
164
+ {
165
+ // source point
166
+ geographic_msgs::msg::GeoPoint geo_point;
167
+ geo_point.latitude = 35.62406 ;
168
+ geo_point.longitude = 139.74252 ;
169
+ geo_point.altitude = 10.0 ;
170
+
171
+ // target point
172
+ geometry_msgs::msg::Point local_point;
173
+ local_point.x = 0.0 ;
174
+ local_point.y = -22.18 ;
175
+ local_point.z = 20.0 ;
176
+
177
+ // projector info
178
+ autoware_map_msgs::msg::MapProjectorInfo projector_info;
179
+ projector_info.projector_type = autoware_map_msgs::msg::MapProjectorInfo::LOCAL_CARTESIAN;
180
+ projector_info.vertical_datum = autoware_map_msgs::msg::MapProjectorInfo::WGS84;
181
+ projector_info.map_origin .latitude = 35.62426 ;
182
+ projector_info.map_origin .longitude = 139.74252 ;
183
+ projector_info.map_origin .altitude = -10.0 ;
184
+
185
+ // conversion
186
+ const geometry_msgs::msg::Point converted_point =
187
+ autoware::geography_utils::project_forward (geo_point, projector_info);
188
+
189
+ EXPECT_NEAR (converted_point.x , local_point.x , 1.0 );
190
+ EXPECT_NEAR (converted_point.y , local_point.y , 1.0 );
191
+ EXPECT_NEAR (converted_point.z , local_point.z , 1.0 );
192
+ }
193
+
194
+ TEST (GeographyUtilsProjection, ProjectForwardAndReverseLocalCartesianOrigin)
195
+ {
196
+ // source point
197
+ geographic_msgs::msg::GeoPoint geo_point;
198
+ geo_point.latitude = 35.62426 ;
199
+ geo_point.longitude = 139.74252 ;
200
+ geo_point.altitude = 10.0 ;
201
+
202
+ // projector info
203
+ autoware_map_msgs::msg::MapProjectorInfo projector_info;
204
+ projector_info.projector_type = autoware_map_msgs::msg::MapProjectorInfo::LOCAL_CARTESIAN;
205
+ projector_info.vertical_datum = autoware_map_msgs::msg::MapProjectorInfo::WGS84;
206
+ projector_info.map_origin .latitude = 35.0 ;
207
+ projector_info.map_origin .longitude = 139.0 ;
208
+ projector_info.map_origin .altitude = 0.0 ;
209
+
210
+ // conversion
211
+ const geometry_msgs::msg::Point converted_local_point =
212
+ autoware::geography_utils::project_forward (geo_point, projector_info);
213
+ const geographic_msgs::msg::GeoPoint converted_geo_point =
214
+ autoware::geography_utils::project_reverse (converted_local_point, projector_info);
215
+
216
+ EXPECT_NEAR (converted_geo_point.latitude , geo_point.latitude , 0.0001 );
217
+ EXPECT_NEAR (converted_geo_point.longitude , geo_point.longitude , 0.0001 );
218
+ EXPECT_NEAR (converted_geo_point.altitude , geo_point.altitude , 0.0001 );
219
+ }
0 commit comments