hallo, i was using ros2 humble in ubuntu22 to build rtabmap but failed. i follow the instructions to build.
cd ~/ros2_ws
git clone https://github.com/introlab/rtabmap.git src/rtabmap
git clone --branch ros2 https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
rosdep update && rosdep install --from-paths src --ignore-src -r -y
export MAKEFLAGS="-j6" # Can be ignored if you have a lot of RAM (>16GB)
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
the below is the process:
Starting >>> rtabmap
Starting >>> rtabmap_msgs
Starting >>> rtabmap_python
Finished <<< rtabmap_python [0.89s]
[Processing: rtabmap, rtabmap_msgs]
--- stderr: rtabmap_msgs
CMake Warning:
Manually-specified variables were not used by the project:
CATKIN_INSTALL_INTO_PREFIX_ROOT
---
Finished <<< rtabmap_msgs [51.5s]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
[Processing: rtabmap]
--- stderr: rtabmap
In file included from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:30:
/home/shiqing/ros2_ws/build/rtabmap/guilib/src/rtabmap_gui_autogen/include/ui_mainWindow.h: In member function ‘void Ui_mainWindow::setupUi(QMainWindow*)’:
/home/shiqing/ros2_ws/build/rtabmap/guilib/src/rtabmap_gui_autogen/include/ui_mainWindow.h:641:56: warning: ‘QDockWidget::AllDockWidgetFeatures’ is deprecated [-Wdeprecated-declarations]
641 | dockWidget_posterior->setFeatures(QDockWidget::AllDockWidgetFeatures);
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QDockWidget:1,
from /home/shiqing/ros2_ws/build/rtabmap/guilib/src/rtabmap_gui_autogen/include/ui_mainWindow.h:16,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:30:
/usr/include/x86_64-linux-gnu/qt5/QtWidgets/qdockwidget.h:82:9: note: declared here
82 | AllDockWidgetFeatures Q_DECL_ENUMERATOR_DEPRECATED =
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:30:
/home/shiqing/ros2_ws/build/rtabmap/guilib/src/rtabmap_gui_autogen/include/ui_mainWindow.h:641:56: warning: ‘QDockWidget::AllDockWidgetFeatures’ is deprecated [-Wdeprecated-declarations]
641 | dockWidget_posterior->setFeatures(QDockWidget::AllDockWidgetFeatures);
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QDockWidget:1,
from /home/shiqing/ros2_ws/build/rtabmap/guilib/src/rtabmap_gui_autogen/include/ui_mainWindow.h:16,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:30:
/usr/include/x86_64-linux-gnu/qt5/QtWidgets/qdockwidget.h:82:9: note: declared here
82 | AllDockWidgetFeatures Q_DECL_ENUMERATOR_DEPRECATED =
| ^~~~~~~~~~~~~~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp: In member function ‘void rtabmap::MainWindow::drawKeypoints(const std::multimap<int, cv::KeyPoint>&, const std::multimap<int, cv::KeyPoint>&)’:
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:5051:39: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations]
5051 | _lastIds = QSet<int>::fromList(QList<int>::fromStdList(kpts));
| ^~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QSet:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/MainWindow.h:35,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qset.h:416:9: note: declared here
416 | QSet<T> QSet<T>::fromList(const QList<T> &list)
| ^~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:5051:60: warning: ‘static QList<T> QList<T>::fromStdList(const std::__cxx11::list<T>&) [with T = int]’ is deprecated: Use QList<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations]
5051 | _lastIds = QSet<int>::fromList(QList<int>::fromStdList(kpts));
| ^~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:45,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmainwindow.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMainWindow:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/MainWindow.h:34,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:416:28: note: declared here
416 | static inline QList<T> fromStdList(const std::list<T> &list)
| ^~~~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:5051:71: warning: ‘static QList<T> QList<T>::fromStdList(const std::__cxx11::list<T>&) [with T = int]’ is deprecated: Use QList<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations]
5051 | _lastIds = QSet<int>::fromList(QList<int>::fromStdList(kpts));
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:45,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmainwindow.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMainWindow:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/MainWindow.h:34,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:416:28: note: declared here
416 | static inline QList<T> fromStdList(const std::list<T> &list)
| ^~~~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:5051:47: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations]
5051 | _lastIds = QSet<int>::fromList(QList<int>::fromStdList(kpts));
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QSet:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/MainWindow.h:35,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/MainWindow.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qset.h:416:9: note: declared here
416 | QSet<T> QSet<T>::fromList(const QList<T> &list)
| ^~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp: In member function ‘void UPlotCurve::draw(QPainter*, const QRect&)’:
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:795:74: warning: ‘QLineF::IntersectType QLineF::intersect(const QLineF&, QPointF*) const’ is deprecated: Use intersects() instead [-Wdeprecated-declarations]
795 | type = lineItem->line().intersect(QLineF(limits.topLeft(), limits.bottomLeft()), &intersection);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qmatrix.h:47,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qbrush.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpalette.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:48,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qframe.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QFrame:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/utilite/UPlot.h:25,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qline.h:256:19: note: declared here
256 | IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
| ^~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:806:82: warning: ‘QLineF::IntersectType QLineF::intersect(const QLineF&, QPointF*) const’ is deprecated: Use intersects() instead [-Wdeprecated-declarations]
806 | type = lineItem->line().intersect(QLineF(limits.topLeft(), limits.topRight()), &intersection);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qmatrix.h:47,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qbrush.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpalette.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:48,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qframe.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QFrame:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/utilite/UPlot.h:25,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qline.h:256:19: note: declared here
256 | IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
| ^~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:817:90: warning: ‘QLineF::IntersectType QLineF::intersect(const QLineF&, QPointF*) const’ is deprecated: Use intersects() instead [-Wdeprecated-declarations]
817 | type = lineItem->line().intersect(QLineF(limits.bottomLeft(), limits.bottomRight()), &intersection);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qmatrix.h:47,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qbrush.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpalette.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:48,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qframe.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QFrame:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/utilite/UPlot.h:25,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qline.h:256:19: note: declared here
256 | IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
| ^~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:828:98: warning: ‘QLineF::IntersectType QLineF::intersect(const QLineF&, QPointF*) const’ is deprecated: Use intersects() instead [-Wdeprecated-declarations]
828 | type = lineItem->line().intersect(QLineF(limits.topRight(), limits.bottomRight()), &intersection);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qmatrix.h:47,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qbrush.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtGui/qpalette.h:46,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:48,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qframe.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QFrame:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/utilite/UPlot.h:25,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/utilite/UPlot.cpp:20:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qline.h:256:19: note: declared here
256 | IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
| ^~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp: In member function ‘void rtabmap::DatabaseViewer::updateIds()’:
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp:1722:28: warning: ‘static QList<T> QList<T>::fromStdList(const std::__cxx11::list<T>&) [with T = int]’ is deprecated: Use QList<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations]
1722 | ids_ = QList<int>::fromStdList(std::list<int>(ids.begin(), ids.end()));
| ^~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:45,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmainwindow.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMainWindow:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/DatabaseViewer.h:33,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:416:28: note: declared here
416 | static inline QList<T> fromStdList(const std::list<T> &list)
| ^~~~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp:1722:39: warning: ‘static QList<T> QList<T>::fromStdList(const std::__cxx11::list<T>&) [with T = int]’ is deprecated: Use QList<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations]
1722 | ids_ = QList<int>::fromStdList(std::list<int>(ids.begin(), ids.end()));
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:49,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:45,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmainwindow.h:44,
from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMainWindow:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/DatabaseViewer.h:33,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:416:28: note: declared here
416 | static inline QList<T> fromStdList(const std::list<T> &list)
| ^~~~~~~~~~~
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp: In member function ‘void rtabmap::DatabaseViewer::regenerateCurrentLocalMaps()’:
/home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp:3949:39: warning: ‘QList<T> QSet<T>::toList() const [with T = int]’ is deprecated: Use values() instead. [-Wdeprecated-declarations]
3949 | QList<int> ids = idsSet.toList();
| ~~~~~~~~~~~~~^~
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QSet:1,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/../include/rtabmap/gui/DatabaseViewer.h:36,
from /home/shiqing/ros2_ws/src/rtabmap/guilib/src/DatabaseViewer.cpp:28:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qset.h:265:14: note: declared here
265 | QList<T> toList() const { return values(); }
| ^~~~~~
---
Finished <<< rtabmap [9min 5s]
Starting >>> rtabmap_conversions
--- stderr: rtabmap_conversions
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
---
Finished <<< rtabmap_conversions [15.1s]
Starting >>> rtabmap_sync
Starting >>> rtabmap_util
Starting >>> rtabmap_rviz_plugins
[Processing: rtabmap_rviz_plugins, rtabmap_sync, rtabmap_util]
--- stderr: rtabmap_rviz_plugins
CMake Warning (dev) at /usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreMacros.cmake:44 (message):
qt5_use_modules is not part of the official API, and might be removed in Qt
6.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreMacros.cmake:431 (_qt5_warn_deprecated)
CMakeLists.txt:85 (QT5_USE_MODULES)
This warning is for project developers. Use -Wno-dev to suppress it.
---
Finished <<< rtabmap_rviz_plugins [53.9s]
[Processing: rtabmap_sync, rtabmap_util]
[Processing: rtabmap_sync, rtabmap_util]
[Processing: rtabmap_sync, rtabmap_util]
--- stderr: rtabmap_util
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
In file included from /home/shiqing/ros2_ws/src/rtabmap_ros/rtabmap_util/src/nodelets/imu_to_tf.cpp:30:
/opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp]
35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead
| ^~~~~~~
---
Finished <<< rtabmap_util [2min 45s]
Finished <<< rtabmap_sync [3min 3s]
Starting >>> rtabmap_odom
Starting >>> rtabmap_slam
Starting >>> rtabmap_viz
[Processing: rtabmap_odom, rtabmap_slam, rtabmap_viz]
Finished <<< rtabmap_viz [48.3s]
[Processing: rtabmap_odom, rtabmap_slam]
--- stderr: rtabmap_slam
CMake Warning at CMakeLists.txt:36 (find_package):
By not providing "Findapriltag_msgs.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"apriltag_msgs", but CMake did not find one.
Could not find a package configuration file provided by "apriltag_msgs"
with any of the following names:
apriltag_msgsConfig.cmake
apriltag_msgs-config.cmake
Add the installation prefix of "apriltag_msgs" to CMAKE_PREFIX_PATH or set
"apriltag_msgs_DIR" to a directory containing one of the above files. If
"apriltag_msgs" provides a separate development package or SDK, be sure it
has been installed.
---
Finished <<< rtabmap_slam [1min 42s]
Finished <<< rtabmap_odom [1min 44s]
Starting >>> rtabmap_demos
Starting >>> rtabmap_examples
Starting >>> rtabmap_launch
Finished <<< rtabmap_demos [0.87s]
Finished <<< rtabmap_examples [0.92s]
Finished <<< rtabmap_launch [0.93s]
Starting >>> rtabmap_ros
Finished <<< rtabmap_ros [0.76s]
Summary: 14 packages finished [14min 9s]
6 packages had stderr output: rtabmap rtabmap_conversions rtabmap_msgs rtabmap_rviz_plugins rtabmap_slam rtabmap_util
hallo, i was using ros2 humble in ubuntu22 to build rtabmap but failed. i follow the instructions to build.
the below is the process: