FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

caibb16/rtabmap_nav2_stack: ROS2 · GitHub

Latest commit

 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RTAB-Map 导航项目(从零到一)

官方链接:https://github.com/introlab/rtabmap_ros

本仓库用于落地一套分层清晰的 ROS2 导航方案:

  • FAST-LIO 负责雷达惯性里程计(发布 odom -> base_footprint)
  • RTAB-Map 负责全局建图/回环/重定位(发布 map -> odom)
  • Nav2 负责规划、控制与避障执行

0.编译

do_build_all.sh  #直接编译就行

1. 仓库结构

rtabmap_nav2_stack/                 # 工作空间
├── src/                            # ROS 2 工作空间源码目录
│   ├── robot_bringup/              # 高级导航启动包组,包含 Nav2 的精细配置
│   │   ├── launch/                 # 启动脚本存放目录
│   │   │   ├── fastlio_mapping.launch.py # 当前建图主入口(FAST-LIO + RTAB-Map)
│   │   │   ├── bringup.launch.py   # 总启动入口,控制全自动导航的各个模块
│   │   │   └── rtabmap_bridge.launch.py # 负责将 RTAB-Map 的输出桥接到 Nav2 栈
│   │   └── config/                 # 核心参数配置目录
│   │       └── nav2_common.yaml    # Navigation 2 配置
│   ├── FAST_LIO_ROS2/              # FAST-LIO 激光惯性紧耦合里程计(提供 odom 和去畸变点云)
│   ├── livox_ros_driver2/          # Livox MID360 雷达驱动
│   └── rtabmap_ros/                # 官方 RTAB-Map ROS 2 包装层
│       ├── rtabmap_launch/         # (done)通用 Launch 入口,  目前的脚本走的就是这个
│       ├── rtabmap_slam/           # (done)SLAM 核心节点,负责建图、回环检测、图优化与重定位
│       ├── rtabmap_odom/           # (done)视觉/深度/激光前端里程计节点,提供局部连续位姿估计
│       ├── rtabmap_sync/           # (done)多传感器时间同步节点,将 RGB、Depth、Scan、IMU 整理成统一输入
│       ├── rtabmap_util/           # (done)点云、栅格、图像和 TF 处理工具节点集合
│       ├── rtabmap_msgs/           # (done)RTAB-Map  ROS 2 消息与服务类型定义
│       ├── rtabmap_conversions/    # (done)RTAB-Map C++ 核心数据结构与 ROS 消息/TF/OpenCV 之间的转换库
│       ├── rtabmap_rviz_plugins/   # (done)RViz 中显示地图图结构、点云、回环和调试信息的插件
│       ├── rtabmap_viz/            # (done)RTAB-Map 自带可视化界面节点,便于查看节点图、回环和局部地图
│       ├── rtabmap_costmap_plugins/# (done)给 Nav2提供3D体素地图能力,
│       ├── rtabmap_python/         # (done)Python 绑定与脚本接口,便于离线分析和轻量二次开发
│       ├── rtabmap_ros/            # (done)元包/聚合包,用于统一依赖导出和整体发布
│       ├── rtsp_camera_bridge/     # (不用理,不是原生包)RTSP 相机桥接节点,把网络视频流接入 ROS 图像话题
│       ├── rtabmap_examples/       # (done)单体传感器或典型设备(如 Realsense)的使用示例
│       └── rtabmap_demos/          # (done)完整机器人的离线建图仿真与演示程序
├── third_party/                    #
│   └── rtabmap-0.23.4/             # RTAB-Map C++ 核心算法源码,保证版本一致性
├── scripts/                        # 工具和环境脚本
│   ├── extract_pcd_from_db.py      # 从 rtabmap 数据库中导出点云(PCD)
│   ├── export_cloud_map.sh         # 一键导出当前云图/地图数据
│   └── use_rtabmap_0234_env.sh     # 供 colcon 编译时挂载 RTAB-Map 0.23.4 核心库路径的环境脚本

2.建图过程

当前建图主入口为 fastlio_mapping.launch.py,使用 FAST-LIO 取代了之前的 icp_odometry + EKF 方案。

2.1 包协作过程

flowchart LR
    LIVOX["livox_ros_driver2\n/livox/lidar + /livox/imu"] --> FASTLIO["FAST-LIO\nfast_lio"]
    FASTLIO --> ODOM["/Odometry\n+ TF: odom → base_footprint"]
    FASTLIO --> CLOUD_REG["/cloud_registered_body\n(去畸变点云)"]

    ODOM --> SL
    CLOUD_REG --> SL

    subgraph R1["fastlio_mapping.launch.py 当前实际主链"]
        FASTLIO
        subgraph RTAB_LAUNCH["IncludeLaunchDescription: rtabmap_launch/rtabmap.launch.py"]
            SL["rtabmap_slam"]
            VIZ["rtabmap_viz"]
        end
    end

    subgraph R2["RTAB-Map 代码级依赖"]
        SL -.订阅/同步基类.-> SYNC_BASE["rtabmap_sync\nCommonDataSubscriber"]
        SL -.消息接口.-> MSG["rtabmap_msgs"]
        SL -.数据转换.-> CONV["rtabmap_conversions"]
        SL -.地图/工具.-> UTIL["rtabmap_util"]
    end
Loading
  • FAST-LIO 直接消费 /livox/lidar 和 /livox/imu,输出激光惯性紧耦合里程计 /Odometry,同时发布 odom -> base_footprint TF
  • FAST-LIO 还输出去运动畸变后的点云 /cloud_registered_body,供 RTAB-Map 做回环检测和建图
  • rtabmap_slam 消费 /Odometry 和 /cloud_registered_body,执行图优化并发布 map -> odom TF
  • 不再使用 icp_odometry、robot_localization (EKF) 等中间环节,链路更短更简洁

2.2 关键数据流向

flowchart LR
    subgraph A["fastlio_mapping.launch.py 当前实际数据流"]
        CLOUD["/livox/lidar"] --> FASTLIO["FAST-LIO"]
        IMU1["/livox/imu"] --> FASTLIO
        FASTLIO --> ODOM["/Odometry"]
        FASTLIO --> CLOUD_REG["/cloud_registered_body"]

        ODOM --> SLAM["rtabmap_slam"]
        CLOUD_REG --> SLAM
        SLAM --> MAP["/map"]
        SLAM --> TF1["TF: map → odom"]
        SLAM --> DB1["rtabmap.db"]
    end

Loading

最终 TF 主链:

map → odom → base_footprint → base_link → livox_frame
 ↑      ↑        (static)       (static)
rtabmap FAST-LIO

About

ROS2

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages


Back | FazBrowse Home | New Git URL