update hieplm

This commit is contained in:
HiepLM 2026-01-05 13:38:02 +07:00
parent a471130273
commit 9b27b9d731
8 changed files with 203 additions and 39 deletions

@ -1 +1 @@
Subproject commit fb03bdf2e8695f3d01ea80a52107bd18d7802062 Subproject commit 5c276afb3469a4618e3d2f3523a27bff2f9fb3c8

View File

@ -1,5 +1,19 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
# ========================================================
# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake
# ========================================================
# Detect if building with Catkin
if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL)
set(BUILDING_WITH_CATKIN TRUE)
message(STATUS "Building robot_nav_2d_msgs with Catkin")
find_package(catkin REQUIRED)
else()
set(BUILDING_WITH_CATKIN FALSE)
message(STATUS "Building robot_nav_2d_msgs with Standalone CMake")
endif()
project(robot_nav_2d_msgs VERSION 1.0.0 LANGUAGES CXX) project(robot_nav_2d_msgs VERSION 1.0.0 LANGUAGES CXX)
# Chun C++ # Chun C++
@ -7,6 +21,22 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
# ========================================================
# Catkin specific configuration
# ========================================================
if(BUILDING_WITH_CATKIN)
## The catkin_package macro generates cmake config files for your package
## Note: Dependencies (robot_std_msgs, geometry_msgs) are not Catkin packages,
## they are built as CMake targets in the same workspace and will be available
## when this package is built. They are linked via target_link_libraries instead of CATKIN_DEPENDS
catkin_package(
INCLUDE_DIRS include
# LIBRARIES không cn vì đây là header-only library
# CATKIN_DEPENDS không cn vì dependencies không phi Catkin packages
)
endif()
# Tìm tt c header files # Tìm tt c header files
file(GLOB_RECURSE HEADERS "include/robot_nav_2d_msgs/*.h") file(GLOB_RECURSE HEADERS "include/robot_nav_2d_msgs/*.h")
@ -28,10 +58,25 @@ target_link_libraries(robot_nav_2d_msgs
geometry_msgs geometry_msgs
) )
# Add include directories from dependencies explicitly for Catkin build
if(BUILDING_WITH_CATKIN)
# Use relative paths from current source directory
# From robot_nav_2d_msgs (pnkx_nav_core/src/Libraries/robot_nav_2d_msgs)
# to robot_std_msgs (pnkx_nav_core/src/Libraries/common_msgs/robot_std_msgs) is ../common_msgs/robot_std_msgs
get_filename_component(ROBOT_STD_MSGS_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/../common_msgs/robot_std_msgs/include" ABSOLUTE)
get_filename_component(GEOMETRY_MSGS_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/../common_msgs/robot_geometry_msgs/include" ABSOLUTE)
target_include_directories(robot_nav_2d_msgs INTERFACE
$<BUILD_INTERFACE:${ROBOT_STD_MSGS_INCLUDE}>
$<BUILD_INTERFACE:${GEOMETRY_MSGS_INCLUDE}>
)
endif()
# Cài đt header files # Cài đt header files
install(DIRECTORY include/robot_nav_2d_msgs if(NOT BUILDING_WITH_CATKIN)
install(DIRECTORY include/robot_nav_2d_msgs
DESTINATION include DESTINATION include
FILES_MATCHING PATTERN "*.h") FILES_MATCHING PATTERN "*.h")
endif()
# Cài đt target # Cài đt target
install(TARGETS robot_nav_2d_msgs install(TARGETS robot_nav_2d_msgs

View File

@ -1,5 +1,19 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
# ========================================================
# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake
# ========================================================
# Detect if building with Catkin
if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL)
set(BUILDING_WITH_CATKIN TRUE)
message(STATUS "Building robot_nav_2d_utils with Catkin")
find_package(catkin REQUIRED)
else()
set(BUILDING_WITH_CATKIN FALSE)
message(STATUS "Building robot_nav_2d_utils with Standalone CMake")
endif()
project(robot_nav_2d_utils VERSION 1.0.0 LANGUAGES CXX) project(robot_nav_2d_utils VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
@ -9,6 +23,24 @@ set(CMAKE_CXX_EXTENSIONS OFF)
# Enable Position Independent Code # Enable Position Independent Code
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Cu hình RPATH đ tránh cycle trong runtime search path
set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR}")
# ========================================================
# Catkin specific configuration
# ========================================================
if(BUILDING_WITH_CATKIN)
catkin_package(
INCLUDE_DIRS include
LIBRARIES conversions path_ops polygons bounds tf_help robot_nav_2d_utils
# CATKIN_DEPENDS không cn vì dependencies không phi Catkin packages
DEPENDS console_bridge Boost
)
endif()
# Find dependencies # Find dependencies
find_package(console_bridge REQUIRED) find_package(console_bridge REQUIRED)
find_package(Boost REQUIRED COMPONENTS system thread) find_package(Boost REQUIRED COMPONENTS system thread)
@ -36,6 +68,8 @@ target_link_libraries(conversions
set_target_properties(conversions PROPERTIES set_target_properties(conversions PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
) )
add_library(path_ops src/path_ops.cpp) add_library(path_ops src/path_ops.cpp)
@ -51,6 +85,12 @@ target_link_libraries(path_ops
robot_cpp robot_cpp
) )
set_target_properties(path_ops PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
)
add_library(polygons src/polygons.cpp src/footprint.cpp) add_library(polygons src/polygons.cpp src/footprint.cpp)
target_include_directories(polygons target_include_directories(polygons
PUBLIC PUBLIC
@ -77,6 +117,8 @@ endif()
set_target_properties(polygons PROPERTIES set_target_properties(polygons PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
) )
add_library(bounds src/bounds.cpp) add_library(bounds src/bounds.cpp)
@ -94,6 +136,8 @@ target_link_libraries(bounds
set_target_properties(bounds PROPERTIES set_target_properties(bounds PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
) )
add_library(tf_help src/tf_help.cpp) add_library(tf_help src/tf_help.cpp)
@ -113,6 +157,8 @@ target_link_libraries(tf_help
set_target_properties(tf_help PROPERTIES set_target_properties(tf_help PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
) )
# Create an INTERFACE library that represents all robot_nav_2d_utils libraries # Create an INTERFACE library that represents all robot_nav_2d_utils libraries
@ -133,14 +179,16 @@ target_link_libraries(robot_nav_2d_utils
) )
# Install header files # Install header files
install(DIRECTORY include/robot_nav_2d_utils if(NOT BUILDING_WITH_CATKIN)
install(DIRECTORY include/robot_nav_2d_utils
DESTINATION include DESTINATION include
FILES_MATCHING PATTERN "*.h") FILES_MATCHING PATTERN "*.h")
# Install mapbox headers # Install mapbox headers
install(DIRECTORY include/mapbox install(DIRECTORY include/mapbox
DESTINATION include DESTINATION include
FILES_MATCHING PATTERN "*.hpp") FILES_MATCHING PATTERN "*.hpp")
endif()
# Install targets # Install targets
install(TARGETS robot_nav_2d_utils conversions path_ops polygons bounds tf_help install(TARGETS robot_nav_2d_utils conversions path_ops polygons bounds tf_help

@ -1 +1 @@
Subproject commit d42ae54383af04a7d7654b4039466ac9c208fdef Subproject commit 504de86ee92a2684564cc3a561f3f534eb798160

View File

@ -1,12 +1,44 @@
cmake_minimum_required(VERSION 3.0.2) cmake_minimum_required(VERSION 3.0.2)
project(tf3) project(tf3)
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Cu hình RPATH đ tránh cycle trong runtime search path
set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR}")
# ========================================================
# Find Packages
# ========================================================
# ========================================================
# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake
# ========================================================
# Detect if building with Catkin
if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL)
set(BUILDING_WITH_CATKIN TRUE)
find_package(catkin REQUIRED COMPONENTS console_bridge)
else()
set(BUILDING_WITH_CATKIN FALSE)
endif()
find_package(console_bridge REQUIRED) find_package(console_bridge REQUIRED)
find_package(Boost REQUIRED COMPONENTS system thread) find_package(Boost REQUIRED COMPONENTS system thread)
# ========================================================
# Catkin specific configuration
# ========================================================
if(BUILDING_WITH_CATKIN)
## The catkin_package macro generates cmake config files for your package
catkin_package(
INCLUDE_DIRS include
LIBRARIES tf3
DEPENDS console_bridge
)
endif()
include_directories(include ${console_bridge_INCLUDE_DIRS}) include_directories(include ${console_bridge_INCLUDE_DIRS})
# export user definitions # export user definitions
@ -16,7 +48,14 @@ add_library(tf3 src/cache.cpp src/buffer_core.cpp src/static_cache.cpp)
target_link_libraries(tf3 ${Boost_LIBRARIES} ${console_bridge_LIBRARIES}) target_link_libraries(tf3 ${Boost_LIBRARIES} ${console_bridge_LIBRARIES})
set_target_properties(tf3 PROPERTIES set_target_properties(tf3 PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
BUILD_RPATH "${CMAKE_BINARY_DIR}"
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"
) )
## Add cmake target dependencies
if(BUILDING_WITH_CATKIN)
add_dependencies(tf3 ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
endif()
target_include_directories(tf3 PUBLIC target_include_directories(tf3 PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>) $<INSTALL_INTERFACE:include>)
@ -27,20 +66,21 @@ target_link_libraries(simple_tf3_example PRIVATE tf3 pthread ${console_bridge_LI
set_target_properties(simple_tf3_example PROPERTIES set_target_properties(simple_tf3_example PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
) )
# Export target trong mi trưng hp đ các target khác có th export và ph thuc vào nó
install(TARGETS tf3 install(TARGETS tf3
EXPORT tf3-targets
ARCHIVE DESTINATION lib ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib LIBRARY DESTINATION lib
RUNTIME DESTINATION bin RUNTIME DESTINATION bin
) )
install(DIRECTORY include/${PROJECT_NAME}/ if(NOT BUILDING_WITH_CATKIN)
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION include/${PROJECT_NAME} DESTINATION include/${PROJECT_NAME}
) )
endif()
install(TARGETS tf3 # Export targets - cn trong mi trưng hp
EXPORT tf3-targets)
# Export targets
install(EXPORT tf3-targets install(EXPORT tf3-targets
FILE tf3-targets.cmake FILE tf3-targets.cmake
NAMESPACE tf3:: NAMESPACE tf3::

View File

@ -1,41 +1,64 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
# Tên d án
project(move_base_core VERSION 1.0.0 LANGUAGES CXX) project(move_base_core VERSION 1.0.0 LANGUAGES CXX)
# Chun C++ # Chun C++
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Cho phép các project khác include đưc header ca move_base_core # ========================================================
set(MOVE_BASE_CORE_INCLUDE_DIRS # Catkin specific configuration
${CMAKE_CURRENT_SOURCE_DIR}/include # ========================================================
PARENT_SCOPE if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL)
) set(BUILDING_WITH_CATKIN TRUE)
message(STATUS "Building move_base_core with Catkin")
else()
set(BUILDING_WITH_CATKIN FALSE)
message(STATUS "Building move_base_core with Standalone CMake")
endif()
include_directories( if(BUILDING_WITH_CATKIN)
${PROJECT_SOURCE_DIR}/include find_package(catkin REQUIRED COMPONENTS tf3 robot_time robot_geometry_msgs robot_protocol_msgs robot_nav_2d_msgs)
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES move_base_core
CATKIN_DEPENDS tf3 robot_time robot_geometry_msgs robot_protocol_msgs robot_nav_2d_msgs
# CATKIN_DEPENDS không cn vì dependencies không phi Catkin packages
)
endif()
# Tìm tt c header files # Tìm tt c header files
file(GLOB HEADERS "include/move_base_core/*.h") file(GLOB HEADERS "include/move_base_core/*.h")
# To INTERFACE library (header-only) # To INTERFACE library (header-only)
add_library(move_base_core INTERFACE) add_library(move_base_core INTERFACE)
target_link_libraries(move_base_core
INTERFACE tf3 robot_time robot_geometry_msgs robot_protocol_msgs)
# Set include directories # Set include directories trưc khi link libraries
target_include_directories(move_base_core target_include_directories(move_base_core
INTERFACE INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include>
) )
# Link vi dependencies - include directories s đưc truyn t đng qua INTERFACE properties
if(BUILDING_WITH_CATKIN)
target_link_libraries(move_base_core INTERFACE ${catkin_TARGETS})
else()
target_link_libraries(move_base_core
INTERFACE
tf3
robot_time
robot_geometry_msgs
robot_protocol_msgs
robot_nav_2d_msgs # Thêm vì navigation.h include robot_nav_2d_msgs/Twist2DStamped.h
)
endif()
# Cài đt header files # Cài đt header files
install(DIRECTORY include/move_base_core if(NOT BUILDING_WITH_CATKIN)
install(DIRECTORY include/move_base_core
DESTINATION include DESTINATION include
FILES_MATCHING PATTERN "*.h") FILES_MATCHING PATTERN "*.h")
endif()
# Cài đt target # Cài đt target
install(TARGETS move_base_core install(TARGETS move_base_core

View File

@ -19,8 +19,16 @@
<buildtool_depend version_gte="0.5.68">catkin</buildtool_depend> <buildtool_depend version_gte="0.5.68">catkin</buildtool_depend>
<build_depend>libconsole-bridge-dev</build_depend> <build_depend>tf3</build_depend>
<build_depend>robot_time</build_depend>
<build_depend>robot_geometry_msgs</build_depend>
<build_depend>robot_protocol_msgs</build_depend>
<build_depend>robot_nav_2d_msgs</build_depend>
<run_depend>libconsole-bridge-dev</run_depend> <run_depend>tf3</run_depend>
<run_depend>robot_time</run_depend>
<run_depend>robot_geometry_msgs</run_depend>
<run_depend>robot_protocol_msgs</run_depend>
<run_depend>robot_nav_2d_msgs</run_depend>
</package> </package>