Repository navigation
Add rtabmap_ros - #109
Merged
Merged
Add rtabmap_ros#109
Conversation
Ports RoboStack/ros-lyrical#83, refreshed for 0.23.13 (all of humble, jazzy and lyrical after their syncs; rolling has no rtabmap_ros release): the aarch64 find_library probes stay optional (upstream made them optional for rtabmap_msgs/rtabmap_sync/rtabmap_viz, the other four still need it), OpenCV 5 headers and constants, and rtabmap_viz's macOS OpenGL context fix. Co-authored-by: Kamil Baradziej <49471097+baradejoo@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
humble's rtabmap was configured with WITH_QT=OFF (and GTSAM off on Windows) when it was at 0.22.1, to avoid porting the GUI to OpenCV 5. After the sync it's 0.23.13 like jazzy, with the same patch, and rtabmap_viz needs the gui component, so use jazzy's settings. rtabmap needs a rebuild for humble. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reverts the previous commit: rtabmap takes its Qt version from VTK, which is Qt 6 on conda-forge, while humble's RViz is Qt 5, so rtabmap with its GUI breaks rtabmap_rviz_plugins (Qt5 and Qt6 targets in one target). Keep humble's rtabmap without Qt as before and exclude rtabmap_viz, the package that needs the GUI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It links PCL, whose VTK is built against Qt 6 on conda-forge, into a Qt 5 RViz plugin: "INTERFACE_QT_MAJOR_VERSION of Qt6::OpenGL does not agree with QT_MAJOR_VERSION" (tried locally, with rtabmap built without Qt). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rtabmap_util asks for find_package(RTABMap COMPONENTS gui), but none of its sources use the GUI, and humble's rtabmap is built without Qt (see the exclusions of rtabmap_viz and rtabmap_rviz_plugins). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
As on humble: the plugin links PCL, whose VTK is Qt 6 on conda-forge, into jazzy's Qt 5 RViz, and CMake refuses the mix (INTERFACE_QT_MAJOR_VERSION of Qt6::OpenGL). Unlike humble, jazzy's rtabmap_viz builds and links only Qt 6 (rtabmap's own), so it stays. Found by a linux-64 build on top of the jazzy sync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Turns the local checks of this PR into a recipe test, so later rebuilds keep them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Human Tobi: looks good to go once the sync PRs are in |
# Conflicts: # distros/jazzy/vinca.yaml
Export all symbols of the rtabmap_ros libraries on Windows (their visibility headers are unused, nothing is dllexported otherwise). Recipe test on Windows: the rtabmap executable is installed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… visibility headers check They define RTABMAP_ROS_BUILDING_LIBRARY, but visibility.h only dllexports with RTABMAP_<PKG>_BUILDING_DLL, so on Windows the plugin class was dllimport inside its own DLL (LNK2019 on the constructor). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Exporting every symbol of rtabmap_sync exceeds the 65535-object limit of an import library (LNK1189): dllexport CommonDataSubscriber via its visibility macro instead, and export all of rtabmap_sync_plugins only. rtabmap_viz has no library, so it needs no exports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ath and NOMINMAX rtabmap::core links some PCL libraries by bare name (pcl_visualization, pcl_keypoints; RTABMapConfig.cmake defines no imported target for them), so LINK could not find them (LNK1181): add %LIBRARY_LIB% to the link path. NOMINMAX for Eigen's Parallelizer next to windows.h (C2589), and std::array::data() instead of begin() for memcpy in db_player (C2664). The Windows-only cmake args no longer touch the other platforms. humble needs its own copy of the .win.patch next to its ros2-rtabmap-util.patch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ticStatus::ERROR Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…scan: _USE_MATH_DEFINES on Windows velodyne_laserscan comes in on Windows through rtabmap_examples. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its shared library exports no symbols, so MSVC writes no import library and velodyne_laserscan_node failed to link (LNK1181: cannot open input file 'Release\velodyne_laserscan.lib'). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
velodyne_driver reads the sensor over POSIX sockets (netinet/in.h, C1083) and needs libpcap, so velodyne, velodyne_driver and velodyne_pointcloud are left out on Windows (packages_exclude also drops them from rtabmap_examples, which only uses them for its Velodyne launch files). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports RoboStack/ros-lyrical#83 by @baradejoo: adds
rtabmap_rosto the shared selection, on all platforms. Thertabmaplibrary is already selected.The PR's patches, refreshed for 0.23.13 (humble, jazzy and lyrical after their syncs; rolling has no
rtabmap_rosrelease), as shared patches:rtabmap_conversions,rtabmap_odom,rtabmap_rviz_plugins,rtabmap_slam: the aarch64find_libraryprobes notREQUIRED, OpenCV 5 (features.hpp,cv::COLOR_BGR2GRAY); unchanged from the PR.rtabmap_viz: only the macOS OpenGL context fix inGuiNode.cpp; its CMake hunk is upstream in 0.23.13.rtabmap_msgs,rtabmap_sync: no longer needed (upstream made those probes optional).rtabmap_vizandrtabmap_rviz_pluginsare excluded, both because humble's RViz and Qt stack is Qt 5 while conda-forge's VTK (and so PCL, and rtabmap's GUI) is Qt 6.rtabmap_rviz_pluginslinks PCL into a Qt 5 RViz plugin ("INTERFACE_QT_MAJOR_VERSION of Qt6::OpenGL does not agree"), andrtabmap_vizneeds rtabmap's GUI, which humble builds without Qt for the same reason (tried locally). - jazzy:rtabmap_rviz_pluginsis excluded for the same reason (its RViz is Qt 5 too; same CMake error on linux-64). jazzy'srtabmap_vizbuilds and stays: it links only rtabmap's Qt 6 (no RViz).Windows:
rtabmap_conversions,rtabmap_odom,rtabmap_slam,rtabmap_util: export all symbols;rtabmap_odom/slam/util/vizadd%LIBRARY_LIB%to the link path (rtabmap's config links some PCL libraries by bare name) andNOMINMAX.rtabmap_syncexports itsCommonDataSubscriberclass explicitly (C2487),rtabmap_odom/rtabmap_slamundefinewindows.h'sERROR,rtabmap_vizusessignal()instead ofsigaction,rtabmap_costmap_plugins/rtabmap_rviz_pluginsdefine the macro their visibility headers check.velodyne_laserscan(pulled in byrtabmap_examples):_USE_MATH_DEFINESand exports all symbols.velodyne,velodyne_driver,velodyne_pointcloudare excluded on Windows (packages_exclude): the driver reads the sensor over POSIX sockets and needs libpcap. Sortabmap_exampleson Windows comes without its velodyne dependencies.Recipe test: the
rtabmapSLAM node starts and keeps running (shared/tests/ros2-rtabmap-slam.yaml).Built locally
rtabmap_*packages incl. recipe tests;rtabmap(rtabmap_slam) starts andrtabmap_vizis installed.rtabmap_*packages except the two excluded ones, and thertabmap_rosmetapackage, incl. recipe tests;rtabmap_utilneeded a humble patch (it asks for rtabmap'sguicomponent without using it).rtabmap_vizandrgbd_image_viewerlink Qt 6 only;rtabmap_rviz_pluginsfailed as on humble, hence the exclusion. With it excluded, all 14 otherrtabmap_*packages and thertabmap_rosmetapackage build, with their recipe tests.CI: full PR build green on humble, jazzy and lyrical (rolling has no
rtabmap_rosrelease), all platforms (linux-64, linux-aarch64, osx-64, osx-arm64, win-64). The rosdistro syncs this was prepared on are merged.🤖 Generated with Claude Code