diff --git a/README.md b/README.md index aac77eb..bdf69c9 100644 --- a/README.md +++ b/README.md @@ -8,29 +8,53 @@ ### 1.1 代码的编译和运行 -```shell -cd build -# 该命令会在当前目录的上级目录中查找CMakeLists.txt文件,并使用CMake生成Makefile。CMAKE_BUILD_TYPE指定编译的模式,这里指定为# Release,表示编译优化版本,以提高代码的性能 -cmake .. -DCMAKE_BUILD_TYPE=Release -# 该命令会使用Makefile编译和构建代码。Makefile是由CMake生成的,它包含了编译和构建代码所需的所有信息。在运行make命令后,它会# # 编译和构建代码,并在当前目录生成可执行文件或库文件 +​ 代码的编译和运行参考文档`Workspace/README.md` + +## 二、数据的接入与部署 + +### 2.1 单目摄像头加入IMU数据实时接入 + +​ 由于ORB-SLAM3采用的是读取图片和csv文件的方式运行,不适用于小车的实际实时接入数据。所以,我们需要对原本的读取代码进行改进,并且对我们使用的IMU实现一个读取器。伪代码如下: + +```c++ +// 单目摄像头+IMU接入ORB-SLAM3伪代码 + +int main(){ + // 创建IMU数据读取器 + IMUReader imuReader("/dev/ttyUSB0"); + // 创建ORB_SLAM3定位系统 + ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_MONOCULAR, true); + // 默认30fps帧率 + int fps = 30; + // 初始化摄像头 + cv::VideoCapture cap = cv::VideoCapture(0); + cap.set(cv::CAP_PROP_FRAME_WIDTH, 640); + cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480); + // 清空IMU内部缓存,等待1fps的时间用于填充数据 + imuReader.clear(); + delay_ms(1000 / fps); + while(true){ + Mat frame; + // 通过Opencv从摄像头读取视频帧 + cap >> frame; + // 获取当前系统的时间戳 + tframe = get_systemTick(); + // imuReader从串口读取数据 + IMUData vImuMeas; + int statsu = imuReader(vImuMeas); + // 清空IMUReader内部缓存, imuReader内部线程继续读取新的数据 + imuReader.clear(); + // 如果读取IMU状态正确 + if(status){ + // 视觉+IMU VSLAM + SLAM.TrackMonocular(frame,tframe,vImuMeas); + }else{ + // 纯视觉 VSLAM + SLAM.TrackMonocular(frame,tframe); + } + } + return 0; +} -# make -j4 命令用于在Linux或Unix系统上使用多个线程同时编译代码 -make -``` - -### 1.2 代码的运行 - -​ 实际上是执行Examples目录下的mono_euroc_cap程序并提供两个参数信息,分别为ORBvoc.txt和cam2.yaml。 - -​ ORBvoc是ORB-SLA-M2中使用的词汇表(vocabulary),也称为字典。ORB-SLAM2是一种基于特征点的实时单目SLAM算法,用于在机器人或无人机等设备上进行实时定位和建图。ORBvoc词汇表包含了一组视觉特征点的描述符,用于对图像进行特征点匹配和建图。在ORB-SLAM2中,ORB-voc词汇表用于实现回环检测和重定位,以提高定位和建图的准确性和鲁棒性。ORBvoc词汇表是通过使用一些大规模的数据集(如TUM、KITTI等)进行训练得到的,可以通过下载预训练的ORBvoc词汇表来加速ORB-SLAM2的使用。 - -​ cam.yaml是摄像头的标定信息。 - -```shell -# 原版 -# 运行可执行程序 mono_euroc_cap 参数0为ORBvoc.txt 参数1为./Examples/Monocular/cam2.yaml -./Examples/Monocular/mono_euroc_cap ./Vocabulary/ORBvoc.txt ./Examples/Monocular/cam2.yaml -# zhanli整理版 -./Application/mono_euroc_cap ./Vocabulary/ORBvoc.txt ./Application/cam2.yaml ```