# VIO 与 SLAM

VIO（视觉里程计）和 SLAM（同时定位与地图构建）通过同步的立体、IMU 及其他传感器数据估计相机轨迹，同时构建并更新地图。OAK 设备提供同步感知和灵活的软件路径，你可以从原生 DepthAI 起步，并扩展到外部 SLAM 生态系统。

## 集成路径

 1. 原生集成于 DepthAI v3： 使用 [Basalt VIO + RTAB-Map
    示例](https://docs.luxonis.com/software-v3/depthai/examples/vslam/basalt_vio_rtab.md)，它基于开源项目
    [RTAB-Map](https://github.com/introlab/rtabmap)，并在 DepthAI v3 库中原生运行。
    
    > **原生 VIO/SLAM 当前支持 RVC2；RVC4 为早期体验版**
    > 原生 VIO/SLAM 支持目前适用于 RVC2 设备。RVC4 支持即将推出；如需早期体验，请联系我们。

 2. ROS 2 堆栈： 通过 ROS 2 中的 RTAB-Map 包集成 SLAM。我们提供了易于运行的 rtabmap_ros [OAK
    启动文件](https://docs.luxonis.com/software-v3/depthai/ros/driver.md)，既可以作为独立配置，也可以作为 [RealSense
    相机的即插即用替代方案](https://docs.luxonis.com/software-v3/depthai/ros/driver.md)。示例：
    
    * [RTABMap ROS2 驱动程序](https://docs.luxonis.com/software-v3/depthai/ros/driver.md)
    * 你可以参考我们的 [rtabmap_ros + 轮式里程计在 OAK
      上的应用](https://discuss.luxonis.com/blog/6153-visual-slam-using-wheel-odometry-and-luxonis-oak-d-pro-on-ros-2)，将轮式里程计与 SLAM
      集成。

 3. Spectacular AI： 使用 [Spectacular AI OAK 封装](https://spectacularai.github.io/docs/sdk/wrappers/oak.html)实现实时 VIO/SLAM 流程。

 4. NVIDIA 堆栈： 针对 NVIDIA 和 Isaac 工作流，使用 [PyCuVSLAM](https://github.com/nvidia-isaac/cuVSLAM) 进行构建。

## 典型应用场景

 1. 机器人定位： 在 GNSS 不可用或不可靠时，保持低漂移的位姿估计。
 2. 建图与重定位： 一次性构建环境地图，并在重复运行中可靠地进行重定位。
 3. 空间自主性： 将 VIO 位姿与 [深度](https://docs.luxonis.com/overview/toplevel-features/depth.md) 和
    [AI](https://docs.luxonis.com/overview/toplevel-features/ai_capabilities.md) 结合，实现导航和障碍物感知行为。

## 指南与示例

### DepthAI: Basalt VIO

原生 DepthAI v3 视觉惯性里程计，结合立体 + IMU

[DepthAI: Basalt VIO](https://docs.luxonis.com/software-v3/depthai/examples/vslam/basalt_vio.md)

### DepthAI: Basalt VIO + RTAB-Map

在一条流程中结合 Basalt VIO 与 RTAB-Map SLAM

[DepthAI: Basalt VIO + RTAB-Map](https://docs.luxonis.com/software-v3/depthai/examples/vslam/basalt_vio_rtab.md)

### ROS2 RTAB-Map 集成

使用轮式里程计和 OAK-D Pro 进行视觉 SLAM

[ROS2 RTAB-Map 集成](https://discuss.luxonis.com/blog/6153-visual-slam-using-wheel-odometry-and-luxonis-oak-d-pro-on-ros-2)

### Spectacular AI OAK 封装

在 Spectacular AI SDK 工作流中直接使用 OAK 相机

[Spectacular AI OAK 封装](https://spectacularai.github.io/docs/sdk/wrappers/oak.html)

### NVIDIA PyCuVSLAM

将 OAK 流程集成到 cuVSLAM / Isaac 工作流中

[NVIDIA PyCuVSLAM](https://github.com/nvidia-isaac/cuVSLAM)

### ROS VIO 与 SLAM 文档

关于使用 OAK 相机进行 VIO 和 SLAM 的通用 ROS 指导

[ROS VIO 与 SLAM 文档](https://docs.luxonis.com/software/ros/vio-slam.md)

### 需要帮助？

请前往 [OAKChina 官网](https://www.oakchina.cn/) 获取技术支持或解答您的任何疑问。
