diff --git a/patch/ros-lyrical-sbg-driver.patch b/patch/ros-lyrical-sbg-driver.patch index efd2b07..b68dcb0 100644 --- a/patch/ros-lyrical-sbg-driver.patch +++ b/patch/ros-lyrical-sbg-driver.patch @@ -1,52 +1,8 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index a4a3964..4063ea2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -23,17 +23,17 @@ find_package(builtin_interfaces REQUIRED) - ## Generate messages in the 'msg' folder - - set (USED_LIBRARIES -- rclcpp -- sensor_msgs -- std_msgs -- std_srvs -- geometry_msgs -- nav_msgs -- rtcm_msgs -- tf2_ros -- tf2_msgs -- tf2_geometry_msgs -- nmea_msgs -+ rclcpp::rclcpp -+ ${sensor_msgs_TARGETS} -+ ${std_msgs_TARGETS} -+ ${std_srvs_TARGETS} -+ ${geometry_msgs_TARGETS} -+ ${nav_msgs_TARGETS} -+ ${rtcm_msgs_TARGETS} -+ tf2_ros::tf2_ros -+ ${tf2_msgs_TARGETS} -+ ${tf2_geometry_msgs_TARGETS} -+ ${nmea_msgs_TARGETS} - ) - - set (msg_files -@@ -125,8 +125,8 @@ endif() - target_link_libraries(sbg_device sbgECom) - target_link_libraries(sbg_device_mag sbgECom) - --ament_target_dependencies(sbg_device ${USED_LIBRARIES}) --ament_target_dependencies(sbg_device_mag ${USED_LIBRARIES}) -+target_link_libraries(sbg_device ${USED_LIBRARIES}) -+target_link_libraries(sbg_device_mag ${USED_LIBRARIES}) - - rosidl_get_typesupport_target(cpp_typesupport_target "${PROJECT_NAME}" "rosidl_typesupport_cpp") - target_link_libraries(sbg_device "${cpp_typesupport_target}") diff --git a/include/sbg_driver/sbg_vector3.h b/include/sbg_driver/sbg_vector3.h index 0bc5b80..0b1b02c 100644 --- a/include/sbg_driver/sbg_vector3.h +++ b/include/sbg_driver/sbg_vector3.h -@@ -115,7 +115,7 @@ public: +@@ -115,6 +115,6 @@ public: * \param[in] p_raw_data Pointer to data array. * \param[in] array_size Array size (Should be defined as 3). */ @@ -54,26 +10,3 @@ index 0bc5b80..0b1b02c 100644 + SbgVector3(const T* p_raw_data, [[maybe_unused]] size_t array_size) { assert(array_size == 3); - -diff --git a/src/sbg_device.cpp b/src/sbg_device.cpp -index 820322e..b802365 100644 ---- a/src/sbg_device.cpp -+++ b/src/sbg_device.cpp -@@ -5,6 +5,8 @@ - #include - #include - #include -+#include -+#include - - // SbgECom headers - #include -@@ -118,7 +120,7 @@ void SbgDevice::onLogReceived(SbgEComClass msg_class, SbgEComMsgId msg, const Sb - log_replay_last_timestamp_ = timestamp; - } - -- usleep(time_to_sleep); -+ std::this_thread::sleep_for(std::chrono::microseconds(time_to_sleep)); - } - - // diff --git a/patch/ros-lyrical-slam-toolbox.win.patch b/patch/ros-lyrical-slam-toolbox.win.patch index 3245b1f..e5e2f00 100644 --- a/patch/ros-lyrical-slam-toolbox.win.patch +++ b/patch/ros-lyrical-slam-toolbox.win.patch @@ -1,28 +1,9 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3880aa7..90ee2a6 100644 +index dfed661..4f7473e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -147,6 +147,11 @@ rosidl_get_typesupport_target(cpp_typesupport_target ${PROJECT_NAME} "rosidl_typ - target_link_libraries(ceres_solver_plugin "${cpp_typesupport_target}") - pluginlib_export_plugin_description_file(slam_toolbox solver_plugins.xml) - -+if(MSVC) -+ add_compile_definitions(_USE_MATH_DEFINES) -+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -+endif() -+ - #### Tool lib for mapping - add_library(toolbox_common src/slam_toolbox_common.cpp src/map_saver.cpp src/loop_closure_assistant.cpp src/laser_utils.cpp src/slam_mapper.cpp) - ament_target_dependencies(toolbox_common -@@ -155,26 +160,43 @@ ament_target_dependencies(toolbox_common - target_link_libraries(toolbox_common kartoSlamToolbox ${Boost_LIBRARIES}) - rosidl_get_typesupport_target(cpp_typesupport_target ${PROJECT_NAME} "rosidl_typesupport_cpp") - target_link_libraries(toolbox_common "${cpp_typesupport_target}") -+set_target_properties(toolbox_common PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) - - #### Mapping executibles +@@ -259,21 +259,33 @@ target_link_libraries(decentralized_multirobot_slam_toolbox_node decentralized_m add_library(async_slam_toolbox src/slam_toolbox_async.cpp) -+set_target_properties(async_slam_toolbox PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) target_link_libraries(async_slam_toolbox toolbox_common kartoSlamToolbox ${Boost_LIBRARIES}) add_executable(async_slam_toolbox_node src/slam_toolbox_async_node.cpp) +if(MSVC) @@ -31,7 +12,6 @@ index 3880aa7..90ee2a6 100644 target_link_libraries(async_slam_toolbox_node async_slam_toolbox) add_library(sync_slam_toolbox src/slam_toolbox_sync.cpp) -+set_target_properties(sync_slam_toolbox PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) target_link_libraries(sync_slam_toolbox toolbox_common kartoSlamToolbox ${Boost_LIBRARIES}) add_executable(sync_slam_toolbox_node src/slam_toolbox_sync_node.cpp) +if(MSVC) @@ -40,7 +20,6 @@ index 3880aa7..90ee2a6 100644 target_link_libraries(sync_slam_toolbox_node sync_slam_toolbox) add_library(localization_slam_toolbox src/slam_toolbox_localization.cpp) -+set_target_properties(localization_slam_toolbox PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) target_link_libraries(localization_slam_toolbox toolbox_common kartoSlamToolbox ${Boost_LIBRARIES}) add_executable(localization_slam_toolbox_node src/slam_toolbox_localization_node.cpp) +if(MSVC) @@ -49,7 +28,6 @@ index 3880aa7..90ee2a6 100644 target_link_libraries(localization_slam_toolbox_node localization_slam_toolbox) add_library(lifelong_slam_toolbox src/experimental/slam_toolbox_lifelong.cpp) -+set_target_properties(lifelong_slam_toolbox PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) target_link_libraries(lifelong_slam_toolbox toolbox_common kartoSlamToolbox ${Boost_LIBRARIES}) add_executable(lifelong_slam_toolbox_node src/experimental/slam_toolbox_lifelong_node.cpp) +if(MSVC) @@ -58,155 +36,3 @@ index 3880aa7..90ee2a6 100644 target_link_libraries(lifelong_slam_toolbox_node lifelong_slam_toolbox) add_library(map_and_localization_slam_toolbox src/experimental/slam_toolbox_map_and_localization.cpp) -diff --git a/include/slam_toolbox/merge_maps_kinematic.hpp b/include/slam_toolbox/merge_maps_kinematic.hpp -index 95c9931..c159ab8 100644 ---- a/include/slam_toolbox/merge_maps_kinematic.hpp -+++ b/include/slam_toolbox/merge_maps_kinematic.hpp -@@ -21,7 +21,9 @@ - - #include - #include -+#ifndef _WIN32 - #include -+#endif - #include - #include - #include -diff --git a/include/slam_toolbox/slam_toolbox_common.hpp b/include/slam_toolbox/slam_toolbox_common.hpp -index 96bd049..d6e9630 100644 ---- a/include/slam_toolbox/slam_toolbox_common.hpp -+++ b/include/slam_toolbox/slam_toolbox_common.hpp -@@ -19,7 +19,9 @@ - #ifndef SLAM_TOOLBOX__SLAM_TOOLBOX_COMMON_HPP_ - #define SLAM_TOOLBOX__SLAM_TOOLBOX_COMMON_HPP_ - -+#ifndef _WIN32 - #include -+#endif - #include - #include - #include -@@ -35,7 +37,7 @@ - #include "bond/msg/constants.hpp" - #include "rclcpp_lifecycle/lifecycle_node.hpp" - #include "rclcpp_lifecycle/lifecycle_publisher.hpp" --#include "message_filters/subscriber.h" -+#include "message_filters/subscriber.hpp" - #include "tf2_ros/transform_broadcaster.h" - #include "tf2_ros/transform_listener.h" - #include "tf2_ros/create_timer_ros.h" -diff --git a/lib/karto_sdk/CMakeLists.txt b/lib/karto_sdk/CMakeLists.txt -index a620bfd..196aab5 100644 ---- a/lib/karto_sdk/CMakeLists.txt -+++ b/lib/karto_sdk/CMakeLists.txt -@@ -5,7 +5,9 @@ if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) - endif() - set(CMAKE_BUILD_TYPE Release) #None, Debug, Release, RelWithDebInfo, MinSizeRel --set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-backtrace-limit=0") -+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-backtrace-limit=0") -+endif() - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") - - find_package(ament_cmake REQUIRED) -@@ -29,6 +31,7 @@ add_definitions(${EIGEN3_DEFINITIONS}) - - include_directories(include ${EIGEN3_INCLUDE_DIRS} ${TBB_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}) - add_library(kartoSlamToolbox SHARED src/Karto.cpp src/Mapper.cpp) -+target_compile_definitions(kartoSlamToolbox PRIVATE KARTO_DYNAMIC) - ament_target_dependencies(kartoSlamToolbox ${dependencies}) - target_link_libraries(kartoSlamToolbox ${Boost_LIBRARIES} TBB::tbb) - -diff --git a/lib/karto_sdk/src/Mapper.cpp b/lib/karto_sdk/src/Mapper.cpp -index e969404..d87d33f 100644 ---- a/lib/karto_sdk/src/Mapper.cpp -+++ b/lib/karto_sdk/src/Mapper.cpp -@@ -405,7 +405,7 @@ void MapperSensorManager::SetRunningScanBufferSize(kt_int32u rScanBufferSize) - m_RunningBufferMaximumSize = rScanBufferSize; - - std::vector names = GetSensorNames(); -- for (uint i = 0; i != names.size(); i++) { -+ for (unsigned int i = 0; i != names.size(); i++) { - GetScanManager(names[i])->SetRunningScanBufferSize(rScanBufferSize); - } - } -@@ -415,7 +415,7 @@ void MapperSensorManager::SetRunningScanBufferMaximumDistance(kt_double rScanBuf - m_RunningBufferMaximumDistance = rScanBufferMaxDistance; - - std::vector names = GetSensorNames(); -- for (uint i = 0; i != names.size(); i++) { -+ for (unsigned int i = 0; i != names.size(); i++) { - GetScanManager(names[i])->SetRunningScanBufferMaximumDistance(rScanBufferMaxDistance); - } - } -@@ -1868,7 +1868,7 @@ std::vector *> MapperGraph::FindNearByVertices( - - std::vector *> rtn_vertices; - rtn_vertices.reserve(ret_matches.size()); -- for (uint i = 0; i != ret_matches.size(); i++) { -+ for (unsigned int i = 0; i != ret_matches.size(); i++) { - rtn_vertices.push_back(vertices_to_search[ret_matches[i].first]); - } - return rtn_vertices; -@@ -2984,7 +2984,7 @@ void Mapper::ClearLocalizationBuffer() - } - - std::vector names = m_pMapperSensorManager->GetSensorNames(); -- for (uint i = 0; i != names.size(); i++) -+ for (unsigned int i = 0; i != names.size(); i++) - { - m_pMapperSensorManager->ClearRunningScans(names[i]); - m_pMapperSensorManager->ClearLastScan(names[i]); -diff --git a/rviz_plugin/slam_toolbox_rviz_plugin.hpp b/rviz_plugin/slam_toolbox_rviz_plugin.hpp -index dafa5d0..905d515 100644 ---- a/rviz_plugin/slam_toolbox_rviz_plugin.hpp -+++ b/rviz_plugin/slam_toolbox_rviz_plugin.hpp -@@ -32,6 +32,7 @@ - #include - #include - #include -+#undef NO_ERROR - // STL - #include - #include -diff --git a/src/merge_maps_kinematic.cpp b/src/merge_maps_kinematic.cpp -index 3ee0bde..cc8e505 100644 ---- a/src/merge_maps_kinematic.cpp -+++ b/src/merge_maps_kinematic.cpp -@@ -105,7 +105,11 @@ bool MergeMapsKinematic::addSubmapCallback( - "/map_" + std::to_string(num_submaps_), rclcpp::QoS(1))); - sstmS_.push_back(this->create_publisher( - "/map_metadata_" + std::to_string(num_submaps_), rclcpp::QoS(1))); -+#ifdef _WIN32 -+ Sleep(1000); -+#else - sleep(1.0); -+#endif - - nav_msgs::srv::GetMap::Response map; - nav_msgs::msg::OccupancyGrid & og = map.map; -diff --git a/src/slam_toolbox_common.cpp b/src/slam_toolbox_common.cpp -index 916a207..18c2fa2 100644 ---- a/src/slam_toolbox_common.cpp -+++ b/src/slam_toolbox_common.cpp -@@ -52,6 +52,11 @@ SlamToolbox::SlamToolbox(rclcpp::NodeOptions options) - this->declare_parameter( - "stack_size_to_use", rclcpp::ParameterType::PARAMETER_INTEGER, descriptor); - if (this->get_parameter("stack_size_to_use", stack_size)) { -+#ifdef _WIN32 -+ if (stack_size != 40'000'000) { -+ RCLCPP_WARN(get_logger(), "Can't dynamically change stack size on Windows to %i. Node using stack size 40000000", (int)stack_size); -+ } -+#else - RCLCPP_INFO(get_logger(), "Node using stack size %i", (int)stack_size); - const rlim_t max_stack_size = stack_size; - struct rlimit stack_limit; -@@ -60,6 +65,7 @@ SlamToolbox::SlamToolbox(rclcpp::NodeOptions options) - stack_limit.rlim_cur = stack_size; - } - setrlimit(RLIMIT_STACK, &stack_limit); -+#endif - } - } - // server side never times out from lifecycle manager