cmake_minimum_required(VERSION 3.8) project(g2_2025_odometry_pkg) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # external packages include(FetchContent) FetchContent_Declare( tomlplusplus GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git GIT_TAG v3.4.0 ) FetchContent_MakeAvailable(tomlplusplus) # find dependencies find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(nav_msgs REQUIRED) find_package(geometry_msgs REQUIRED) find_package(std_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(rclcpp REQUIRED) find_package(sensor_msgs REQUIRED) find_package(geometry_msgs REQUIRED) # Add executable for position_speed_approximator_node add_executable(position_speed_approximator_node src/g2_2025_imu_position_approximator_node/nodes/IMUPositionApproximator.cpp src/g2_2025_imu_position_approximator_node/Main.cpp ) target_include_directories(position_speed_approximator_node PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_imu_position_approximator_node ) ament_target_dependencies(position_speed_approximator_node rclcpp sensor_msgs geometry_msgs ) add_executable(database_handler_node src/g2_2025_database_node/Main.cpp src/g2_2025_database_node/nodes/DatabaseHandlerNode.cpp src/database/DatabaseManager.cpp src/config/ConfigManager.cpp ) target_include_directories(database_handler_node PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_database_node ) target_link_libraries(database_handler_node tomlplusplus::tomlplusplus pqxx pq) ament_target_dependencies(database_handler_node rclcpp sensor_msgs geometry_msgs ) install(TARGETS position_speed_approximator_node database_handler_node DESTINATION lib/${PROJECT_NAME} ) find_package(rclcpp REQUIRED) find_package(sensor_msgs REQUIRED) find_package(geometry_msgs REQUIRED) find_package(std_msgs REQUIRED) add_executable(imu_data_simulator_node src/g2_2025_imu_data_simulator_node/nodes/ImuDataSimulator.cpp src/g2_2025_imu_data_simulator_node/main.cpp src/simulator/Simulator.cpp) target_include_directories(imu_data_simulator_node PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_imu_data_simulator_node ) ament_target_dependencies(imu_data_simulator_node rclcpp sensor_msgs geometry_msgs) add_executable(wheel_data_simulator_node src/g2_2025_wheel_data_simulator_node/nodes/WheelDataSimulator.cpp src/g2_2025_wheel_data_simulator_node/main.cpp src/simulator/Simulator.cpp) target_include_directories(wheel_data_simulator_node PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_wheel_data_simulator_node ) ament_target_dependencies(wheel_data_simulator_node rclcpp std_msgs) install(TARGETS imu_data_simulator_node wheel_data_simulator_node DESTINATION lib/${PROJECT_NAME} ) install(DIRECTORY launch config DESTINATION share/${PROJECT_NAME}/ ) # add_executable(odometry_node src/odometry_node.cpp) # ament_target_dependencies(odometry_node rclcpp nav_msgs geometry_msgs) # install(TARGETS # odometry_node # DESTINATION lib/${PROJECT_NAME} # ) add_executable(wheel_position_approximator_node src/g2_2025_wheel_approximator_node/nodes/WheelPositionApproximator.cpp src/g2_2025_wheel_approximator_node/main.cpp ) ament_target_dependencies(wheel_position_approximator_node rclcpp nav_msgs geometry_msgs) add_executable(wheel_data_simulator_node src/g2_2025_wheel_data_simulator_node/nodes/wheel_data_simulator.cpp src/g2_2025_wheel_data_simulator_node/main.cpp src/simulator/Simulator.cpp) target_include_directories(wheel_data_simulator_node PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_wheel_data_simulator_node ) ament_target_dependencies(wheel_data_simulator_node rclcpp std_msgs) install( DIRECTORY launch config DESTINATION share/${PROJECT_NAME}/ ) install(TARGETS wheel_position_approximator_node wheel_data_simulator_node DESTINATION lib/${PROJECT_NAME} ) if(BUILD_TESTING) find_package(ament_cmake_gtest REQUIRED) # Simulator unit tests ament_add_gtest(test_simulator test/TestSimulator.cpp src/simulator/Simulator.cpp) target_include_directories(test_simulator PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) ament_target_dependencies(test_simulator rclcpp) # IMU simulator integration tests ament_add_gtest(test_imu_simulator test/TestImuSimulator.cpp src/g2_2025_imu_data_simulator_node/nodes/ImuDataSimulator.cpp src/simulator/Simulator.cpp) target_include_directories(test_imu_simulator PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_imu_data_simulator_node) ament_target_dependencies(test_imu_simulator rclcpp sensor_msgs geometry_msgs) # Wheel simulator integration tests ament_add_gtest(test_wheel_simulator test/TestWheelSimulator.cpp src/g2_2025_wheel_data_simulator_node/nodes/WheelDataSimulator.cpp src/simulator/Simulator.cpp) target_include_directories(test_wheel_simulator PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src/g2_2025_wheel_data_simulator_node) ament_target_dependencies(test_wheel_simulator rclcpp std_msgs) endif() ament_package()