### Installing ROS2 Lidar Localization Package Components Source: https://github.com/rsasaki0109/lidar_localization_ros2/blob/main/CMakeLists.txt This snippet defines the installation rules for the package, ensuring that the `lidar_localization_node` executable, `lidar_localization_component` library, and the `launch` and `param` directories are installed to their respective ROS2 standard locations. ```CMake ament_export_libraries(lidar_localization_component) install(TARGETS lidar_localization_node DESTINATION lib/${PROJECT_NAME}) install(TARGETS lidar_localization_component ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin) install(DIRECTORY launch param DESTINATION share/${PROJECT_NAME}/ ) ament_package() ``` -------------------------------- ### Running ROS2 Localization Demo Source: https://github.com/rsasaki0109/lidar_localization_ros2/blob/main/README.md This snippet provides the command-line instructions to set up and run a demonstration of the LIDAR localization package. It involves launching RViz2 for visualization, starting the main localization node, and playing a pre-recorded ROS2 bag file containing sensor data. Users must ensure the PCD map file is correctly placed and the `map_path` parameter is configured. ```Shell rviz2 -d src/lidar_localization_ros2/rviz/localization.rviz ros2 launch lidar_localization_ros2 lidar_localization.launch.py ros2 bag play tc_2017-10-15-15-34-02_free_download/ ``` -------------------------------- ### Defining and Linking Lidar Localization Node Executable Source: https://github.com/rsasaki0109/lidar_localization_ros2/blob/main/CMakeLists.txt This section creates the `lidar_localization_node` executable, linking it against the previously defined `lidar_localization_component` library, PCL libraries, and ROS2 lifecycle libraries. It also sets PCL definitions and link directories. ```CMake add_executable(lidar_localization_node src/lidar_localization_node.cpp) target_link_libraries(lidar_localization_node lidar_localization_component ${PCL_LIBRARIES} ${rclcpp_lifecycle_LIBRARIES} ${std_msgs_LIBRARIES} ) link_directories( ${PCL_LIBRARY_DIRS} ) add_definitions(${PCL_DEFINITIONS}) ``` -------------------------------- ### Setting Project and C/C++ Standards in CMake Source: https://github.com/rsasaki0109/lidar_localization_ros2/blob/main/CMakeLists.txt This snippet initializes the CMake project and ensures that C and C++ standards are set to C99 and C++14 respectively, if not already defined. It also applies a default optimization flag for C++. ```CMake cmake_minimum_required(VERSION 3.5) project(lidar_localization_ros2) if(NOT CMAKE_C_STANDARD) set(CMAKE_C_STANDARD 99) endif() if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() SET(CMAKE_CXX_FLAGS "-O2 -g ${CMAKE_CXX_FLAGS}") ``` -------------------------------- ### Defining and Linking Lidar Localization Component Library Source: https://github.com/rsasaki0109/lidar_localization_ros2/blob/main/CMakeLists.txt This snippet defines a shared library `lidar_localization_component` from its source file and specifies its dependencies on various ROS2 packages and PCL-related libraries. It also includes necessary header directories. ```CMake add_library(lidar_localization_component SHARED src/lidar_localization_component.cpp ) ament_target_dependencies(lidar_localization_component rclcpp tf2_ros tf2_geometry_msgs tf2_sensor_msgs tf2_eigen geometry_msgs sensor_msgs nav_msgs pcl_conversions ndt_omp_ros2 ) include_directories( include ${PCL_INCLUDE_DIRS} ${lifecycle_msgs_INCLUDE_DIRS} ${rclcpp_lifecycle_INCLUDE_DIRS} ${rclcpp_INCLUDE_DIRS}) ``` -------------------------------- ### Finding ROS2 and PCL Dependencies in CMake Source: https://github.com/rsasaki0109/lidar_localization_ros2/blob/main/CMakeLists.txt This section uses `find_package` to locate all necessary ROS2 packages (e.g., rclcpp_lifecycle, geometry_msgs, tf2_ros) and PCL, along with ndt_omp_ros2 and OpenMP, which are crucial for the lidar localization functionality. ```CMake find_package(ament_cmake REQUIRED) find_package(rclcpp_lifecycle REQUIRED) find_package(lifecycle_msgs REQUIRED) find_package(geometry_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(nav_msgs REQUIRED) find_package(tf2_ros REQUIRED) find_package(tf2_geometry_msgs REQUIRED) find_package(tf2_sensor_msgs REQUIRED) find_package(tf2_eigen REQUIRED) find_package(pcl_conversions REQUIRED) find_package(PCL REQUIRED) find_package(ndt_omp_ros2 REQUIRED) find_package(OpenMP) if (OPENMP_FOUND) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.