Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 1 addition & 68 deletions patch/ros-lyrical-sbg-driver.patch
Original file line number Diff line number Diff line change
@@ -1,79 +1,12 @@
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).
*/
- SbgVector3(const T* p_raw_data, size_t array_size)
+ 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 <iomanip>
#include <fstream>
#include <ctime>
+#include <chrono>
+#include <thread>

// SbgECom headers
#include <version/sbgVersion.h>
@@ -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));
}

//
178 changes: 2 additions & 176 deletions patch/ros-lyrical-slam-toolbox.win.patch
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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 <thread>
#include <sys/stat.h>
+#ifndef _WIN32
#include <unistd.h>
+#endif
#include <string>
#include <map>
#include <memory>
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 <sys/resource.h>
+#endif
#include <boost/thread.hpp>
#include <string>
#include <map>
@@ -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<Name> 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<Name> 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<Vertex<LocalizedRangeScan> *> MapperGraph::FindNearByVertices(

std::vector<Vertex<LocalizedRangeScan> *> 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<Name> 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 <QLabel>
#include <QFrame>
#include <QRadioButton>
+#undef NO_ERROR
// STL
#include <thread>
#include <chrono>
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<nav_msgs::msg::MapMetaData>(
"/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