@@ -246,8 +246,7 @@ TEST_F(SearchHelperTest, getFootprintState)
246
246
EXPECT_EQ (FreePoseSearch::getFootprintState (costmap, footprint, toPose2D (4.6 , 4.6 , M_PI)).state , state);
247
247
EXPECT_EQ (FreePoseSearch::getFootprintState (costmap, footprint, toPose2D (4.5 , 4.5 , 0 )).state , state);
248
248
EXPECT_EQ (FreePoseSearch::getFootprintState (costmap, footprint, toPose2D (4.4 , 4.4 , 0 )).state , SearchState::FREE);
249
- EXPECT_EQ (FreePoseSearch::getFootprintState (costmap, footprint, toPose2D (4.5 , 4.5 , M_PI_4)).state ,
250
- SearchState::FREE);
249
+ EXPECT_EQ (FreePoseSearch::getFootprintState (costmap, footprint, toPose2D (4.5 , 4.5 , M_PI_4)).state , state);
251
250
EXPECT_EQ (FreePoseSearch::getFootprintState (costmap, footprint, toPose2D (3 , 5 , 0 )).state , SearchState::FREE);
252
251
};
253
252
@@ -280,8 +279,7 @@ TEST_F(SearchHelperTest, findValidOrientation)
280
279
std::vector<geometry_msgs::Point > footprint = { toPoint (-0.5 , -0.5 ), toPoint (0.5 , -0.5 ), toPoint (0.5 , 0.5 ),
281
280
toPoint (-0.5 , 0.5 ) };
282
281
auto sol = FreePoseSearch::findValidOrientation (costmap, footprint, toPose2D (4.6 , 4.6 , 0 ), { M_PI_4 / 2 , M_PI }, viz);
283
- EXPECT_EQ (sol.search_state .state , SearchState::FREE);
284
- EXPECT_NEAR (sol.pose .theta , M_PI_4 / 2 , 1e-6 );
282
+ EXPECT_EQ (sol.search_state .state , SearchState::LETHAL);
285
283
286
284
sol = FreePoseSearch::findValidOrientation (costmap, footprint, toPose2D (4.6 , 4.6 , 0 ), { M_PI, 2 * M_PI }, viz);
287
285
EXPECT_EQ (sol.search_state .state , SearchState::LETHAL);
@@ -323,8 +321,8 @@ TEST_F(SearchHelperTest, search)
323
321
0.5 | 0 0 0 0 0 0 0 254 254 254
324
322
1.5 | 0 0 0 0 0 0 0 254 254 254
325
323
2.5 | 0 0 0 254 254 254 0 0 0 0
326
- 3.5 | 0 0 0 0 0 0 0 0 0 0
327
- 4.5 | 0 0 0 0 0 0 x 0 0 0
324
+ 3.5 | 0 0 0 0 0 0 0 x 0 0
325
+ 4.5 | 0 0 0 0 0 0 0 0 0 0
328
326
5.5 | 0 0 0 0 254 G 0 254 254 254
329
327
6.5 | 0 0 0 0 254 0 0 254 254 254
330
328
7.5 | 0 0 0 0 0 0 0 254 254 254
@@ -337,13 +335,13 @@ TEST_F(SearchHelperTest, search)
337
335
338
336
auto sol = sh.search ();
339
337
EXPECT_EQ (sol.search_state .state , SearchState::FREE);
340
- EXPECT_NEAR (sol.pose .x , 6 .5 , 1e-6 );
341
- EXPECT_NEAR (sol.pose .y , 4 .5 , 1e-6 );
342
- EXPECT_NEAR (sol.pose .theta , -M_PI_4 , 1e-6 );
338
+ EXPECT_NEAR (sol.pose .x , 7 .5 , 1e-6 );
339
+ EXPECT_NEAR (sol.pose .y , 3 .5 , 1e-6 );
340
+ EXPECT_NEAR (sol.pose .theta , 0 , 1e-6 );
343
341
344
- addObstacle (cm, 6 .5 , 4 .5 );
342
+ addObstacle (cm, 7 .5 , 3 .5 );
345
343
map.header .stamp = ros::Time::now ();
346
- map.data [cm.getCostmap ()->getIndex (6 , 4 )] = 100 ;
344
+ map.data [cm.getCostmap ()->getIndex (7 , 3 )] = 100 ;
347
345
map_pub.publish (map);
348
346
349
347
/*
@@ -352,24 +350,24 @@ TEST_F(SearchHelperTest, search)
352
350
0.5 | 0 0 0 0 0 0 0 254 254 254
353
351
1.5 | 0 0 0 0 0 0 0 254 254 254
354
352
2.5 | 0 0 0 254 254 254 0 0 0 0
355
- 3.5 | 0 0 0 0 254 0 0 0 0 0
356
- 4.5 | 0 0 0 0 0 0 254 0 0 0
357
- 5.5 | 0 0 0 0 254 G 0 254 254 254
353
+ 3.5 | 0 0 0 0 254 0 0 254 0 0
354
+ 4.5 | 0 0 0 0 0 0 0 0 0 0
355
+ 5.5 | 0 0 x 0 254 G 0 254 254 254
358
356
6.5 | 0 0 0 0 254 0 0 254 254 254
359
- 7.5 | 0 0 0 0 0 x 0 254 254 254
357
+ 7.5 | 0 0 0 0 0 0 0 254 254 254
360
358
8.5 | 0 0 0 0 0 0 0 0 0 0
361
359
9.5 | 0 0 0 0 0 0 0 0 0 0
362
360
*/
363
361
364
362
sol = sh.search ();
365
363
EXPECT_EQ (sol.search_state .state , SearchState::FREE);
366
- EXPECT_NEAR (sol.pose .x , 5 .5 , 1e-6 );
367
- EXPECT_NEAR (sol.pose .y , 7 .5 , 1e-6 );
368
- EXPECT_NEAR (sol.pose .theta , M_PI_4 , 1e-6 );
364
+ EXPECT_NEAR (sol.pose .x , 2 .5 , 1e-6 );
365
+ EXPECT_NEAR (sol.pose .y , 5 .5 , 1e-6 );
366
+ EXPECT_NEAR (sol.pose .theta , M_PI_2 , 1e-6 );
369
367
370
- addObstacle (cm, 5 .5 , 7 .5 );
368
+ addObstacle (cm, 2 .5 , 5 .5 );
371
369
map.header .stamp = ros::Time::now ();
372
- map.data [cm.getCostmap ()->getIndex (5 , 7 )] = 100 ;
370
+ map.data [cm.getCostmap ()->getIndex (2 , 5 )] = 100 ;
373
371
map_pub.publish (map);
374
372
375
373
/*
@@ -378,24 +376,24 @@ TEST_F(SearchHelperTest, search)
378
376
0.5 | 0 0 0 0 0 0 0 254 254 254
379
377
1.5 | 0 0 0 0 0 0 0 254 254 254
380
378
2.5 | 0 0 0 254 254 254 0 0 0 0
381
- 3.5 | 0 0 0 0 254 0 0 0 0 0
382
- 4.5 | 0 0 0 x 0 0 254 0 0 0
383
- 5.5 | 0 0 0 0 254 G 0 254 254 254
379
+ 3.5 | 0 0 0 0 254 0 0 254 0 0
380
+ 4.5 | 0 0 0 0 0 0 0 0 0 0
381
+ 5.5 | 0 0 254 0 254 G 0 254 254 254
384
382
6.5 | 0 0 0 0 254 0 0 254 254 254
385
- 7.5 | 0 0 0 0 0 254 0 254 254 254
386
- 8.5 | 0 0 0 0 0 0 0 0 0 0
383
+ 7.5 | 0 0 0 0 0 0 0 254 254 254
384
+ 8.5 | 0 0 0 0 0 x 0 0 0 0
387
385
9.5 | 0 0 0 0 0 0 0 0 0 0
388
386
*/
389
387
390
388
sol = sh.search ();
391
389
EXPECT_EQ (sol.search_state .state , SearchState::FREE);
392
- EXPECT_NEAR (sol.pose .x , 3 .5 , 1e-6 );
393
- EXPECT_NEAR (sol.pose .y , 4 .5 , 1e-6 );
394
- EXPECT_NEAR (sol.pose .theta , 3 * M_PI_4 , 1e-6 );
390
+ EXPECT_NEAR (sol.pose .x , 5 .5 , 1e-6 );
391
+ EXPECT_NEAR (sol.pose .y , 8 .5 , 1e-6 );
392
+ EXPECT_NEAR (sol.pose .theta , M_PI , 1e-6 );
395
393
396
- addObstacle (cm, 3 .5 , 4 .5 );
394
+ addObstacle (cm, 5 .5 , 8 .5 );
397
395
map.header .stamp = ros::Time::now ();
398
- map.data [cm.getCostmap ()->getIndex (3 , 4 )] = 100 ;
396
+ map.data [cm.getCostmap ()->getIndex (5 , 8 )] = 100 ;
399
397
map_pub.publish (map);
400
398
401
399
/*
@@ -404,29 +402,29 @@ TEST_F(SearchHelperTest, search)
404
402
0.5 | 0 0 0 0 0 0 0 254 254 254
405
403
1.5 | 0 0 0 0 0 0 0 254 254 254
406
404
2.5 | 0 0 0 254 254 254 0 0 0 0
407
- 3.5 | 0 0 0 0 254 0 0 0 0 0
408
- 4.5 | 0 0 0 254 0 0 254 0 0 0
409
- 5.5 | 0 0 0 0 254 G 0 254 254 254
405
+ 3.5 | 0 0 0 0 254 0 0 254 0 0
406
+ 4.5 | 0 0 0 0 0 0 0 0 0 0
407
+ 5.5 | 0 0 254 0 254 G 0 254 254 254
410
408
6.5 | 0 0 0 0 254 0 0 254 254 254
411
- 7.5 | 0 0 0 x 0 254 0 254 254 254
412
- 8.5 | 0 0 0 0 0 0 0 0 0 0
409
+ 7.5 | 0 0 0 0 0 0 0 254 254 254
410
+ 8.5 | 0 0 0 x 0 254 0 0 0 0
413
411
9.5 | 0 0 0 0 0 0 0 0 0 0
414
412
*/
415
413
416
414
sol = sh.search ();
417
415
EXPECT_EQ (sol.search_state .state , SearchState::FREE);
418
416
EXPECT_NEAR (sol.pose .x , 3.5 , 1e-6 );
419
- EXPECT_NEAR (sol.pose .y , 7 .5 , 1e-6 );
420
- EXPECT_NEAR (sol.pose .theta , M_PI_4 , 1e-6 );
417
+ EXPECT_NEAR (sol.pose .y , 8 .5 , 1e-6 );
418
+ EXPECT_NEAR (sol.pose .theta , - 3.0 / 4 * M_PI , 1e-6 );
421
419
422
420
// Non-zero orientation
423
421
SearchConfig config2{ M_PI_4, M_PI, 5.0 , false , 0.0 , toPose2D (1.5 , 4.5 , M_PI_4) };
424
422
FreePoseSearch sh2 (cm, config2, std::nullopt, viz);
425
423
sol = sh2.search ();
426
424
EXPECT_EQ (sol.search_state .state , SearchState::FREE);
427
425
EXPECT_NEAR (sol.pose .x , 1.5 , 1e-6 );
428
- EXPECT_NEAR (sol.pose .y , 4 .5 , 1e-6 );
429
- EXPECT_NEAR (sol.pose .theta , M_PI_4 , 1e-6 );
426
+ EXPECT_NEAR (sol.pose .y , 3 .5 , 1e-6 );
427
+ EXPECT_NEAR (sol.pose .theta , 3.0 / 2 * M_PI , 1e-6 );
430
428
}
431
429
432
430
TEST_F (SearchHelperTest, service_test)
@@ -488,6 +486,7 @@ TEST_F(SearchHelperTest, enforce_bounds)
488
486
EXPECT_NEAR (sol.pose .y , 0.5 , 1e-6 );
489
487
EXPECT_NEAR (sol.pose .theta , 0 , 1e-6 );
490
488
}
489
+
491
490
} // namespace mbf_costmap_nav::test
492
491
493
492
int main (int argc, char ** argv)
0 commit comments