From bed854549152d6ae0d298d9f8da3f77386139bf9 Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Thu, 30 May 2024 23:04:02 +0200 Subject: [PATCH 1/5] removed odt --- Tutorial_Lidar_Tobias.odt | Bin 69561 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Tutorial_Lidar_Tobias.odt diff --git a/Tutorial_Lidar_Tobias.odt b/Tutorial_Lidar_Tobias.odt deleted file mode 100644 index 216478e3b7e7f2c1676a890e0bd3e1d07a4b35bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69561 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 From eb368bf822bfd112412e12687f2aedb806011a25 Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Fri, 31 May 2024 00:29:23 +0200 Subject: [PATCH 2/5] added default parameters according to ros docs --- slam_gmapping/CMakeLists.txt | 48 ++++-- slam_gmapping/config/slam_gmapping.yaml | 49 ++++++ .../include/slam_gmapping/slam_gmapping.h | 8 +- slam_gmapping/launch/slam_gmapping.launch.py | 19 ++- slam_gmapping/package.xml | 1 + slam_gmapping/src/slam_gmapping.cpp | 147 ++++++++++-------- 6 files changed, 183 insertions(+), 89 deletions(-) create mode 100644 slam_gmapping/config/slam_gmapping.yaml diff --git a/slam_gmapping/CMakeLists.txt b/slam_gmapping/CMakeLists.txt index d0115c0..2e0a9e0 100644 --- a/slam_gmapping/CMakeLists.txt +++ b/slam_gmapping/CMakeLists.txt @@ -14,8 +14,7 @@ endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld -Wl,--disable-new-dtags") -message(${CMAKE_SHARED_LINKER_FLAGS}) + # find dependencies find_package(ament_cmake REQUIRED) find_package(std_msgs REQUIRED) @@ -25,6 +24,7 @@ find_package(tf2_ros REQUIRED) find_package(tf2_geometry_msgs REQUIRED) find_package(message_filters REQUIRED) find_package(rclcpp REQUIRED) +find_package(rclcpp_components REQUIRED) find_package(sensor_msgs REQUIRED) find_package(visualization_msgs REQUIRED) find_package(openslam_gmapping REQUIRED) @@ -40,24 +40,38 @@ if(BUILD_TESTING) ament_lint_auto_find_test_dependencies() endif() -include_directories(include) +# include_directories(include) + +add_library(slam_gmapping SHARED + src/slam_gmapping.cpp) -add_executable(slam_gmapping src/slam_gmapping.cpp) +target_include_directories(slam_gmapping +PRIVATE + $ + $) ament_target_dependencies(slam_gmapping - rclcpp - tf2 - tf2_ros - message_filters - sensor_msgs - nav_msgs - tf2_geometry_msgs - openslam_gmapping) - -install(TARGETS slam_gmapping - DESTINATION lib/${PROJECT_NAME}) - -install(DIRECTORY launch + rclcpp + rclcpp_components + tf2 + tf2_ros + message_filters + sensor_msgs + nav_msgs + tf2_geometry_msgs + openslam_gmapping) + +rclcpp_components_register_node(slam_gmapping + PLUGIN "SlamGmapping" + EXECUTABLE slam_gmapping_node) + +install(TARGETS slam_gmapping + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin +) + +install(DIRECTORY launch config DESTINATION share/${PROJECT_NAME}) ament_package() \ No newline at end of file diff --git a/slam_gmapping/config/slam_gmapping.yaml b/slam_gmapping/config/slam_gmapping.yaml new file mode 100644 index 0000000..906e04f --- /dev/null +++ b/slam_gmapping/config/slam_gmapping.yaml @@ -0,0 +1,49 @@ +slam_gmapping: + ros__parameters: + base_frame: "base_link" + odom_frame: "odom" + map_frame: "map" + map_update_interval: 5.0 + + # Default: autodetect. Set maxUrange and maxRange for manual settings + # maxUrange: 10.0 + # maxRange: 10.0 + minimumScore: 0 + + sigma: 0.05 + kernelSize: 1 + lstep: 0.05 + astep: 0.05 + iterations: 5 + lsigma: 0.075 + ogain: 3.0 + lskip: 0 + + srr: 0.1 + srt: 0.2 + str: 0.1 + stt: 0.2 + + linearUpdate: 1.0 + angularUpdate: 0.5 + temporalUpdate: -1.0 + + resampleThreshold: 0.5 + particles: 30 + + # Initial Map Size & Resolution + xmin: -100.0 + ymin: -100.0 + xmax: 100.0 + ymax: 100.0 + delta: 0.05 + + llsamplerange: 0.01 + llsamplestep: 0.01 + lasamplerange: 0.005 + lasamplestep: 0.005 + + transform_publish_period: 0.05 + occ_thresh: 0.25 + + tf_delay: 0.1 \ No newline at end of file diff --git a/slam_gmapping/include/slam_gmapping/slam_gmapping.h b/slam_gmapping/include/slam_gmapping/slam_gmapping.h index 1ee2e5c..885f3fc 100644 --- a/slam_gmapping/include/slam_gmapping/slam_gmapping.h +++ b/slam_gmapping/include/slam_gmapping/slam_gmapping.h @@ -35,7 +35,7 @@ #include "geometry_msgs/msg/pose.hpp" #include "geometry_msgs/msg/pose_stamped.hpp" #include "geometry_msgs/msg/transform_stamped.hpp" -#include "tf2_geometry_msgs/tf2_geometry_msgs.h" +#include "tf2_geometry_msgs/tf2_geometry_msgs.hpp" #include "tf2_ros/transform_listener.h" #include "tf2_ros/transform_broadcaster.h" #include "tf2/utils.h" @@ -47,9 +47,9 @@ #include "gmapping/sensor/sensor_range/rangesensor.h" #include "gmapping/sensor/sensor_odometry/odometrysensor.h" -class SlamGmapping : public rclcpp::Node{ +class SlamGmapping : public rclcpp::Node { public: - SlamGmapping(); + explicit SlamGmapping(const rclcpp::NodeOptions& options = rclcpp::NodeOptions()); ~SlamGmapping() override; void init(); @@ -59,7 +59,6 @@ class SlamGmapping : public rclcpp::Node{ void publishLoop(double transform_publish_period); private: - rclcpp::Node::SharedPtr node_; rclcpp::Publisher::SharedPtr entropy_publisher_; rclcpp::Publisher::SharedPtr sst_; rclcpp::Publisher::SharedPtr sstm_; @@ -111,6 +110,7 @@ class SlamGmapping : public rclcpp::Node{ double computePoseEntropy(); // Parameters used by GMapping + bool autoRange_; double maxRange_; double maxUrange_; double maxrange_; diff --git a/slam_gmapping/launch/slam_gmapping.launch.py b/slam_gmapping/launch/slam_gmapping.launch.py index cfd68fe..7d81123 100644 --- a/slam_gmapping/launch/slam_gmapping.launch.py +++ b/slam_gmapping/launch/slam_gmapping.launch.py @@ -1,15 +1,28 @@ from launch import LaunchDescription +from ament_index_python.packages import get_package_share_directory from launch.substitutions import LaunchConfiguration from launch_ros.actions import Node +import os +from launch.actions import DeclareLaunchArgument def generate_launch_description(): - use_sim_time = LaunchConfiguration('use_sim_time', default='true') + use_sim_time = LaunchConfiguration('use_sim_time') + use_sim_time_arg = DeclareLaunchArgument( + 'use_sim_time', + default_value='false' + ) + return LaunchDescription([ + use_sim_time_arg, Node( package='slam_gmapping', - executable='slam_gmapping', + executable='slam_gmapping_node', + name='slam_gmapping', output='screen', - parameters=[{'use_sim_time': use_sim_time}] + parameters=[ + {'use_sim_time': use_sim_time}, + os.path.join(get_package_share_directory("slam_gmapping"), 'config', 'slam_gmapping.yaml') + ] ), ]) diff --git a/slam_gmapping/package.xml b/slam_gmapping/package.xml index 66e0ac7..f5e8d0d 100644 --- a/slam_gmapping/package.xml +++ b/slam_gmapping/package.xml @@ -23,6 +23,7 @@ tf2_geometry_msgs message_filters rclcpp + rclcpp_components sensor_msgs visualization_msgs openslam_gmapping diff --git a/slam_gmapping/src/slam_gmapping.cpp b/slam_gmapping/src/slam_gmapping.cpp index 8500f8e..8d4e20a 100644 --- a/slam_gmapping/src/slam_gmapping.cpp +++ b/slam_gmapping/src/slam_gmapping.cpp @@ -29,28 +29,28 @@ using std::placeholders::_1; -SlamGmapping::SlamGmapping(): - Node("slam_gmapping"), +SlamGmapping::SlamGmapping(const rclcpp::NodeOptions& options): + Node("slam_gmapping", options), scan_filter_sub_(nullptr), scan_filter_(nullptr), laser_count_(0), transform_thread_(nullptr) { buffer_ = std::make_shared(get_clock()); - auto timer_interface = std::make_shared( - get_node_base_interface(), - get_node_timers_interface()); + auto timer_interface = std::make_shared( + get_node_base_interface(), + get_node_timers_interface()); buffer_->setCreateTimerInterface(timer_interface); tfl_ = std::make_shared(*buffer_); - node_ = std::shared_ptr(this, [](rclcpp::Node *) {}); - tfB_ = std::make_shared(node_); + tfB_ = std::make_shared(this); map_to_odom_.setIdentity(); seed_ = static_cast(time(nullptr)); init(); startLiveSlam(); } -void SlamGmapping::init() { +void SlamGmapping::init() +{ gsp_ = new GMapping::GridSlamProcessor(); gsp_laser_ = nullptr; @@ -59,58 +59,68 @@ void SlamGmapping::init() { got_map_ = false; throttle_scans_ = 1; - base_frame_ = "base_link"; - map_frame_ = "map"; - odom_frame_ = "odom"; - transform_publish_period_ = 0.05; - - map_update_interval_ = tf2::durationFromSec(0.5); - maxUrange_ = 80.0; maxRange_ = 0.0; - minimum_score_ = 0; - sigma_ = 0.05; - kernelSize_ = 1; - lstep_ = 0.05; - astep_ = 0.05; - iterations_ = 5; - lsigma_ = 0.075; - ogain_ = 3.0; - lskip_ = 0; - srr_ = 0.1; - srt_ = 0.2; - str_ = 0.1; - stt_ = 0.2; - linearUpdate_ = 1.0; - angularUpdate_ = 0.5; - temporalUpdate_ = 1.0; - resampleThreshold_ = 0.5; - particles_ = 30; - xmin_ = -10.0; - ymin_ = -10.0; - xmax_ = 10.0; - ymax_ = 10.0; - delta_ = 0.05; - occ_thresh_ = 0.25; - llsamplerange_ = 0.01; - llsamplestep_ = 0.01; - lasamplerange_ = 0.005; - lasamplestep_ = 0.005; - tf_delay_ = transform_publish_period_; + + base_frame_ = declare_parameter("base_frame", "base_link"); + + map_frame_ = declare_parameter("map_frame", "map"); + odom_frame_ = declare_parameter("odom_frame", "odom"); + transform_publish_period_ = declare_parameter("transform_publish_period", 0.05); + + map_update_interval_ = tf2::durationFromSec(declare_parameter("map_update_interval", 5.0)); + + autoRange_ = declare_parameter("autoRange", true); + maxUrange_ = declare_parameter("maxUrange", 50.0); + maxRange_ = declare_parameter("maxRange", 50.0); + + minimum_score_ = declare_parameter("minimumScore", 0); + sigma_ = declare_parameter("sigma", 0.05); + kernelSize_ = declare_parameter("kernelSize", 1); + lstep_ = declare_parameter("lstep", 0.05); + astep_ = declare_parameter("astep", 0.05); + iterations_ = declare_parameter("iterations", 5); + lsigma_ = declare_parameter("lsigma", 0.075); + ogain_ = declare_parameter("ogain", 3.0); + lskip_ = declare_parameter("lskip", 0); + srr_ = declare_parameter("srr", 0.1); + srt_ = declare_parameter("srt", 0.2); + str_ = declare_parameter("str", 0.1); + stt_ = declare_parameter("stt", 0.2); + linearUpdate_ = declare_parameter("linearUpdate", 1.0); + angularUpdate_ = declare_parameter("angularUpdate", 0.5); + temporalUpdate_ = declare_parameter("temporalUpdate", 1.0); + resampleThreshold_ = declare_parameter("resampleThreshold", 0.5); + particles_ = declare_parameter("particles", 30); + xmin_ = declare_parameter("xmin", -100.0); + ymin_ = declare_parameter("ymin", -100.0); + xmax_ = declare_parameter("xmax", 100.0); + ymax_ = declare_parameter("ymax", 100.0); + delta_ = declare_parameter("delta", 0.05); + occ_thresh_ = declare_parameter("occ_thresh", 0.25); + llsamplerange_ = declare_parameter("llsamplerange", 0.01); + llsamplestep_ = declare_parameter("llsamplestep", 0.01); + lasamplerange_ = declare_parameter("lasamplerange", 0.005); + lasamplestep_ = declare_parameter("lasamplestep", 0.005); + + tf_delay_ = declare_parameter("tf_delay", transform_publish_period_); } -void SlamGmapping::startLiveSlam() { - entropy_publisher_ = this->create_publisher("entropy", rclcpp::SystemDefaultsQoS()); - sst_ = this->create_publisher("map", rclcpp::SystemDefaultsQoS()); - sstm_ = this->create_publisher("map_metadata", rclcpp::SystemDefaultsQoS()); - scan_filter_sub_ = std::make_shared> - (node_, "scan", rclcpp::SensorDataQoS().get_rmw_qos_profile()); +void SlamGmapping::startLiveSlam() +{ + std::cout << "startLiveSlam()" << std::endl; + entropy_publisher_ = this->create_publisher("entropy", rclcpp::SystemDefaultsQoS()); + sst_ = this->create_publisher("map", rclcpp::SystemDefaultsQoS()); + sstm_ = this->create_publisher("map_metadata", rclcpp::SystemDefaultsQoS()); + scan_filter_sub_ = std::make_shared> + (this, "scan", rclcpp::SystemDefaultsQoS().get_rmw_qos_profile()); // sub_ = this->create_subscription( // "scan", rclcpp::SensorDataQoS(), // std::bind(&SlamGmapping::laserCallback, this, std::placeholders::_1)); - scan_filter_ = std::make_shared> - (*scan_filter_sub_, *buffer_, odom_frame_, 10, node_); - scan_filter_->registerCallback(std::bind(&SlamGmapping::laserCallback, this, std::placeholders::_1)); - transform_thread_ = std::make_shared - (std::bind(&SlamGmapping::publishLoop, this, transform_publish_period_)); + scan_filter_ = std::make_shared> + (*scan_filter_sub_, *buffer_, odom_frame_, 10, + get_node_logging_interface(), get_node_clock_interface()); + scan_filter_->registerCallback(std::bind(&SlamGmapping::laserCallback, this, std::placeholders::_1)); + transform_thread_ = std::make_shared + (std::bind(&SlamGmapping::publishLoop, this, transform_publish_period_)); } void SlamGmapping::publishLoop(double transform_publish_period){ @@ -250,9 +260,13 @@ bool SlamGmapping::initMapper(const sensor_msgs::msg::LaserScan::ConstSharedPtr GMapping::OrientedPoint gmap_pose(0, 0, 0); // setting maxRange and maxUrange here so we can set a reasonable default - maxRange_ = scan->range_max - 0.01; - maxUrange_ = maxRange_; - + + if(autoRange_) + { + maxRange_ = scan->range_max - 0.01; + maxUrange_ = maxRange_; + } + // The laser must be called "FLASER". // We pass in the absolute value of the computed angle increment, on the // assumption that GMapping requires a positive angle increment. If the @@ -531,11 +545,14 @@ void SlamGmapping::publishTransform() map_to_odom_mutex_.unlock(); } -int main(int argc, char* argv[]) -{ - rclcpp::init(argc, argv); +#include "rclcpp_components/register_node_macro.hpp" +RCLCPP_COMPONENTS_REGISTER_NODE(SlamGmapping) - auto slam_gmapping_node = std::make_shared(); - rclcpp::spin(slam_gmapping_node); - return(0); -} +// int main(int argc, char* argv[]) +// { +// rclcpp::init(argc, argv); + +// auto slam_gmapping_node = std::make_shared(); +// rclcpp::spin(slam_gmapping_node); +// return(0); +// } From f9e5b571d079c73044663fa793489d4194b1d13a Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Fri, 31 May 2024 00:44:45 +0200 Subject: [PATCH 3/5] cleanup --- openslam_gmapping/CMakeLists.txt | 11 +++++++++-- openslam_gmapping/gridfastslam/gridslamprocessor.cpp | 4 +++- slam_gmapping/CMakeLists.txt | 7 +++++++ slam_gmapping/src/slam_gmapping.cpp | 1 - 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/openslam_gmapping/CMakeLists.txt b/openslam_gmapping/CMakeLists.txt index b63faba..8b4f927 100644 --- a/openslam_gmapping/CMakeLists.txt +++ b/openslam_gmapping/CMakeLists.txt @@ -11,10 +11,17 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-O3 -funroll-loops) +# DEFAULT RELEASE +if (NOT EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt) + if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE) + endif() endif() +# if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +# add_compile_options(-O3 -funroll-loops) +# endif() + add_compile_options(-fPIC) find_package(ament_cmake REQUIRED) diff --git a/openslam_gmapping/gridfastslam/gridslamprocessor.cpp b/openslam_gmapping/gridfastslam/gridslamprocessor.cpp index a4a510e..831bae9 100644 --- a/openslam_gmapping/gridfastslam/gridslamprocessor.cpp +++ b/openslam_gmapping/gridfastslam/gridslamprocessor.cpp @@ -17,7 +17,9 @@ const double m_distanceThresholdCheck = 20; using namespace std; - GridSlamProcessor::GridSlamProcessor(): m_infoStream(cout){ + + GridSlamProcessor::GridSlamProcessor() + :m_infoStream(cout){ period_ = 5.0; m_obsSigmaGain=1; diff --git a/slam_gmapping/CMakeLists.txt b/slam_gmapping/CMakeLists.txt index 2e0a9e0..2fb6728 100644 --- a/slam_gmapping/CMakeLists.txt +++ b/slam_gmapping/CMakeLists.txt @@ -11,6 +11,13 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() +# DEFAULT RELEASE +if (NOT EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt) + if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE) + endif() +endif() + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() diff --git a/slam_gmapping/src/slam_gmapping.cpp b/slam_gmapping/src/slam_gmapping.cpp index 8d4e20a..9473626 100644 --- a/slam_gmapping/src/slam_gmapping.cpp +++ b/slam_gmapping/src/slam_gmapping.cpp @@ -106,7 +106,6 @@ void SlamGmapping::init() void SlamGmapping::startLiveSlam() { - std::cout << "startLiveSlam()" << std::endl; entropy_publisher_ = this->create_publisher("entropy", rclcpp::SystemDefaultsQoS()); sst_ = this->create_publisher("map", rclcpp::SystemDefaultsQoS()); sstm_ = this->create_publisher("map_metadata", rclcpp::SystemDefaultsQoS()); From 29328b07cc3f8463bb9e6bf2ac14dab443393527 Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Fri, 31 May 2024 00:45:34 +0200 Subject: [PATCH 4/5] cleanup 2 --- slam_gmapping/src/slam_gmapping.cpp | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/slam_gmapping/src/slam_gmapping.cpp b/slam_gmapping/src/slam_gmapping.cpp index 9473626..af064e3 100644 --- a/slam_gmapping/src/slam_gmapping.cpp +++ b/slam_gmapping/src/slam_gmapping.cpp @@ -545,13 +545,4 @@ void SlamGmapping::publishTransform() } #include "rclcpp_components/register_node_macro.hpp" -RCLCPP_COMPONENTS_REGISTER_NODE(SlamGmapping) - -// int main(int argc, char* argv[]) -// { -// rclcpp::init(argc, argv); - -// auto slam_gmapping_node = std::make_shared(); -// rclcpp::spin(slam_gmapping_node); -// return(0); -// } +RCLCPP_COMPONENTS_REGISTER_NODE(SlamGmapping) \ No newline at end of file From 0cfdb0d27b515834ddd6e7fac0da9b8ed3cc92db Mon Sep 17 00:00:00 2001 From: Alexander Mock Date: Mon, 3 Jun 2024 23:02:38 +0200 Subject: [PATCH 5/5] changed map publisher to transient local to be compatible with nav2 --- slam_gmapping/src/slam_gmapping.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slam_gmapping/src/slam_gmapping.cpp b/slam_gmapping/src/slam_gmapping.cpp index af064e3..2d97cb0 100644 --- a/slam_gmapping/src/slam_gmapping.cpp +++ b/slam_gmapping/src/slam_gmapping.cpp @@ -107,8 +107,8 @@ void SlamGmapping::init() void SlamGmapping::startLiveSlam() { entropy_publisher_ = this->create_publisher("entropy", rclcpp::SystemDefaultsQoS()); - sst_ = this->create_publisher("map", rclcpp::SystemDefaultsQoS()); - sstm_ = this->create_publisher("map_metadata", rclcpp::SystemDefaultsQoS()); + sst_ = this->create_publisher("map", rclcpp::QoS(rclcpp::KeepLast(1)).transient_local().reliable()); + sstm_ = this->create_publisher("map_metadata", rclcpp::QoS(rclcpp::KeepLast(1)).transient_local().reliable()); scan_filter_sub_ = std::make_shared> (this, "scan", rclcpp::SystemDefaultsQoS().get_rmw_qos_profile()); // sub_ = this->create_subscription(