modified: CLAUDE.md

modified:   src/navigation/obstacle_nav2/include/obstacle_nav2/trajectory_guard.hpp
	modified:   src/navigation/obstacle_nav2/launch/obstacle_nav2.launch.py
	modified:   src/navigation/obstacle_nav2/src/trajectory_guard.cpp
	modified:   src/navigation/obstacle_nav2/src/trajectory_guard_node.cpp
	modified:   src/navigation/obstacle_nav2/test/test_trajectory_guard.cpp
	modified:   src/origincar_base/CMakeLists.txt
	modified:   src/origincar_base/config/ekf.yaml
	new file:   src/origincar_base/include/origincar_base/log.hpp
	modified:   src/origincar_base/include/origincar_base/origincar_base.h
	modified:   src/origincar_base/launch/base_serial.launch.py
	modified:   src/origincar_base/launch/base_serial.launch.py.bak
	new file:   src/origincar_base/src/log.cpp
	modified:   src/origincar_base/src/origincar_base.cpp
	modified:   src/origincar_base/src/origincar_base.cpp.bak
	new file:   src/origincar_base/test/scan_odom_timing_logger_test.cpp
	modified:   src/planner/REAL_ROBOT_RUNBOOK.md
	modified:   src/planner/launch/odom_hybrid_astar.launch.py
	modified:   src/planner/launch/real_hybrid_astar.launch.py
	modified:   "src/planner/\346\223\215\344\275\234\346\211\213\345\206\214.md"
	modified:   src/racing_control/CMakeLists.txt
	modified:   src/racing_control/config/racing_control.yaml
	modified:   src/racing_control/include/racing_control/racing_control.hpp
	modified:   src/racing_control/launch/racing_control.launch.py
	modified:   src/racing_control/package.xml
	new file:   src/racing_control/src/racing_control copy.cpp
	modified:   src/racing_control/src/racing_control.cpp
	modified:   src/racing_control/test/test_racing_control_helpers.cpp
	modified:   "src/racing_control/\347\202\271\344\275\215\346\240\274\345\274\217\350\275\254\346\215\242.md"
This commit is contained in:
2026-08-06 16:34:53 +08:00
parent 71bae6c68c
commit 8991e5208e
29 changed files with 1722 additions and 29 deletions

View File

@@ -141,6 +141,34 @@ TEST(TrajectoryGuard, FindClearRejoinIndexSkipsBlockedArea)
EXPECT_GE(*rejoin, 5u);
}
TEST(TrajectoryGuard, FindClearRejoinIndexCanUsePlannerCostmapBeyondLocalWindow)
{
auto path = straightPath();
auto local_grid = gridWithOrigin(-0.5, -1.0);
local_grid.info.width = 15;
local_grid.data.assign(local_grid.info.width * local_grid.info.height, 0);
auto planner_grid = gridWithOrigin(-1.0, -1.0);
planner_grid.info.width = 80;
planner_grid.data.assign(planner_grid.info.width * planner_grid.info.height, 0);
obstacle_nav2::GuardSettings settings;
settings.rejoin_min_distance = 1.5;
settings.rejoin_max_distance = 3.0;
settings.occupied_threshold = 50;
settings.treat_unknown_as_occupied = true;
settings.footprint_half_length = 0.01;
settings.footprint_half_width = 0.01;
settings.footprint_padding = 0.0;
EXPECT_FALSE(obstacle_nav2::findClearRejoinIndex(path, 0, local_grid, settings).has_value());
const auto rejoin = obstacle_nav2::findClearRejoinIndexWithPlannerCostmap(
path, 0, local_grid, &planner_grid, settings);
ASSERT_TRUE(rejoin.has_value());
EXPECT_GE(*rejoin, 8u);
}
TEST(TrajectoryGuard, RetryBlockedRepairWaitsForCostmapUpdateAndRetryDelay)
{
const std::optional<std::size_t> last_repair_index = 10u;