MPPI planner + fence-line localization + scan obstacles

- Lightweight MPPI (200 trajectories, 15 steps, endpoint path_align)
- adaptive exploration (more random when stuck)
- fence-line Hough detection + geometric correction
- scan hit points marked at 255 immediately
- forward half-step pre-check for obstacle avoidance
- Ackermann constraint |wz| <= |vx|/min_turn_r
- XORshift RNG (stdlib broken on ARM)
This commit is contained in:
cyy
2026-07-02 21:29:41 +00:00
commit 5156a8d766
26 changed files with 2292 additions and 0 deletions

46
CMakeLists.txt Normal file
View File

@@ -0,0 +1,46 @@
cmake_minimum_required(VERSION 3.8)
project(car_nav_lite)
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(nav_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(tf2 REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(OpenCV REQUIRED)
set(INCLUDE_DIR include)
add_executable(nav_lite_node
src/main.cpp
src/grid_map.cpp
src/localizer.cpp
src/global_planner.cpp
src/local_planner.cpp
src/bt_executor.cpp
)
target_include_directories(nav_lite_node PRIVATE
${INCLUDE_DIR}
${EIGEN3_INCLUDE_DIRS}
)
ament_target_dependencies(nav_lite_node
rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs tf2 tf2_ros
)
target_link_libraries(nav_lite_node ${OpenCV_LIBS})
add_executable(calib_check src/calib_check.cpp)
target_include_directories(calib_check PRIVATE ${INCLUDE_DIR} ${EIGEN3_INCLUDE_DIRS})
ament_target_dependencies(calib_check rclcpp geometry_msgs nav_msgs tf2 tf2_ros)
install(TARGETS nav_lite_node calib_check DESTINATION lib/${PROJECT_NAME})
install(DIRECTORY launch config maps DESTINATION share/${PROJECT_NAME})
ament_package()