# SLAMRecorder **Repository Path**: whitbyli/slamrecorder ## Basic Information - **Project Name**: SLAMRecorder - **Description**: 基于鸿蒙 3.0,使用 Java API 7 开发 APP 录制手机(华为 Nova 9)广角相机、IMU、重力计和 GPS 数据。同时搭建物理数据采集平台,在校园和城市道路场景采集数据,同时在 ORB-SLAM2 和 ORB-SLAM3 上进行运行测试。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-11 - **Last Updated**: 2023-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: 鸿蒙开发, SLAM数据采集 ## README # SLAMRecorder ## 介绍 基于鸿蒙 3.0,使用 Java API 7 开发 APP 录制手机(华为 Nova 9)广角相机、IMU、重力计和 GPS 数据。同时搭建物理数据采集平台,在校园和城市道路场景采集数据,同时在 [ORB-SLAM2](https://github.com/raulmur/ORB_SLAM2) 和 [ORB-SLAM3](https://github.com/UZ-SLAMLab/ORB_SLAM3) 上进行运行测试。 ## 传感器标定 ### 广角相机标定 这里使用手机的 800 万像素广角相机,录制分辨率为 1920×1080,录制帧率为 30 fps。笔者使用开源标定算法 Kalibr,Aprilgrid标定板进行标定,部分标定数据如下:
相机标定展示
> 这里选用广角相机主要因为智能手机的主摄相机会自动对焦,会轻微改变相机内参,影响图像定位跟踪效果 智能手机广角相机本身做了一定去畸变处理,这里使用径向-切向畸变模型进行标定,标定结果为: ```bash # 相机投影参数 fx: 880.3842060257779 fy: 880.4146163267155 cx: 939.1481015502462 cy: 542.5638884246227 # 畸变参数 k1: -0.04727872906456901 k2: 0.04543545853401388 p1: 0.0009606739301976519 p2: -0.0008318890478998227 ``` ### IMU 标定 对于手机中的低精度 IMU 传感器,一般基于阿伦方差计算偏置游走。这里使用 imu_utils 标定,标定结果如下: ```bash NoiseGyro: 1.5619335837409199e-03 # 陀螺仪噪声 NoiseAcc: 1.3699261174421261e-02 # 加速度计噪声 GyroWalk: 2.4886931086381720e-05 # 陀螺仪零偏随机游走 AccWalk: 5.5743299958731706e-04 # 加速度计零偏随机游走 ``` ### 相机与 IMU 联合标定 相机与 IMU 联合标定,主要标定二者之间的刚体变换位姿,这里使用 Kalibr 标定结果如下: ```bash T_body_camera:[0.005560297945577966, -0.9999639770283634, -0.006413090703850012, 0.04680557888837452, -0.9998891120617873, -0.005648250819648627, 0.01377900007145867, -0.003064218420416064, -0.01381472645575441, 0.00633576422365484, -0.9998844990420921, -0.02327739312277717, 0.0, 0.0, 0.0, 1.0] ``` 相机与 IMU 在手机中的大概位置(IMU 大约在广角镜头下方 4.7 厘米处)和坐标系如下图所示。
传感器实物展示
### 数据录制 数据录制分为校园场景和城市道路场景,其中校园场景录制,使用三轴云台稳定器步行录制,如下图所示:
手持云台录制
城市道路场景,在三轴云台稳定器基础上,装载一个 Z 轴稳定器,骑行录制,如下图所示。
骑行录制
### 原始数据格式 手机录制的原始数据文件目录如下: ```bash 2023-08-10-135348 ├── gps.txt # GPS 数据(录制频率大约 1 Hz) ├── gravity.txt # 重力计数据 (100 Hz) ├── imu.txt # IMU 数据 (400 Hz) ├── times.txt # 相机帧时间戳,与 video.mp4 帧数一致 └── video.mp4 # 视频文件,HEVC 编码格式 ``` 这里提供一个程序 (https://gitee.com/whitbyli/phone-data-process) 可解析 mp4 文件,转换为图片序列并去除图像畸变,同时整理 imu 、重力计数据,便于后续开发测试。 > 另外值得注意的是,手机录制的图像数据以 MP4 视频格式保存,虽极大降低了存储空间需求,但不可避免会产生一些画质损失,但总体影响不大 这里提供校园场景和城市道路场景各一个下载连接: * 校园场景数据下载:链接: https://pan.baidu.com/s/1qW_nSO6ptrIKBdOnWe4smA 密码: 6nc0 * 城市道路场景数据下载:链接: https://pan.baidu.com/s/1-hHFbiRQPdl4J-TR1cTdbQ 密码: 1gac ### 运行测试 这里仅展示在 ORB-SLAM3 上运行城市道路场景部分运行数据,如下所示(GIF 文件较大,好像需要登录才能加载,并且加载缓慢):
图片未加载
GIF未加载
GIF未加载