rtabmap/(核心库,独立 C++ 项目)
| 目录/文件 | 说明 | |-----------|------| | `corelib/` | SLAM 核心算法(特征匹配、回环检测、图优化) | | `guilib/` | Qt GUI 相关源码 | | `utilite/` | 基础工具库(日志、文件 I/O、数学、线程) | | `app/` | 主应用程序入口 | | `tools/` | 独立命令行工具(rtabmap、rtabmap-databaseViewer 等) | | `examples/` | 示例代码(RGBDMapping、LidarMapping 等) | | `CMakeLists.txt` | CMake 构建文件 | | `package.xml` | ROS 包描述文件 |rtabmap_ros/(ROS 封装层,依赖 rtabmap)
| 目录 | 说明 | |------|------| | `rtabmap_odom/` | ROS 里程计节点 | | `rtabmap_slam/` | ROS SLAM 节点 | | `rtabmap_viz/` | ROS 可视化节点 | | `rtabmap_msgs/` | ROS 消息定义 | | `rtabmap_conversions/` | 消息与 rtabmap 数据格式转换 | | `rtabmap_sync/` | 同步工具 | | `rtabmap_util/` | ROS 工具库 | | `rtabmap_launch/` | Launch 文件 | | `rtabmap_rviz_plugins/` | RViz 插件 | | `rtabmap_costmap_plugins/` | costmap 插件 | | `rtabmap_demos/` | 示例 demo | | `rtabmap_python/` | Python 接口 |**区别:** `rtabmap` 是算法本体,`rtabmap_ros` 是让算法在 ROS 里运行的胶水层。
.构建 rtabmap 核心库 ros1上只需要构建rtabmap_ros库
```bash cd /home/robot/rtabmap_ws/rtabmap mkdir -p build && cd build cmake .. make -j$(nproc) sudo make install构建 rtabmap_ros
```bash cd /home/robot/rtabmap_ws/rtabmap_ros # 确保在 master 分支(ROS1 Noetic),不要用 ros2 分支 git checkout master # 用 catkin_make_isolated 编译(不能用 catkin_make,因为有混合构建类型) source /opt/ros/noetic/setup.bash catkin_make_isolated --source . -DCMAKE_INSTALL_PREFIX=/opt/ros/noetic ```依赖安装
```bash sudo apt install -y \ ros-noetic-costmap-2d \ ros-noetic-nav-core \ ros-noetic-base-local-planner \ ros-noetic-move-base-msgs \ ros-noetic-grid-map-ros \ ros-noetic-apriltag-ros \ ros-noetic-find-object-2d \ ros-noetic-octomap-msgs \ ros-noetic-fiducial-msgs \ ros-noetic-diagnostic-updater \ ros-noetic-rviz ```运行相机
# 启动roscore 和 kinect v1相机 roscore source ~/.bashrc roslaunch openni_launch openni.launch depth_registration:=true启动rtab map
# 刷新环境变量 source /home/robot/rtabmap_ws/rtabmap_ros/devel_isolated/rtabmap_viz/setup.bash roslaunch rtabmap_ros rtabmap.launch rgb_topic:=/camera/rgb/image_raw depth_topic:=/camera/depth_registered/image_raw camera_info_topic:=/camera/rgb/camera_info