SLAM APP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SLAM APP相关的知识,希望对你有一定的参考价值。

发布一个自己写的Android slam app

安装环境

Android 10 and later.

UI设计

Data record功能页

功能介绍

相机流设置

是否录制相机流

如果选择,按下录制按钮时相机流将按照设置要求打开,相机流预览窗口将实时显示相机画面,得到的数据文件夹中将包含以单帧图像时间戳命名的png文件和全部图像时间戳的列表文件;如果不选,相机流将不会打开,得到的数据文件夹中将不含有图片和图像时间戳数据。

相机id选取

app在启动时会自动检查设备上满足如下要求的相机,并将它们的id添加到下拉菜单中以供选择。这些要求是:

  1. 在安卓camera api定义中,该相机为physical camera,而不是logical camera;
  2. 该相机为后置相机;
  3. 该相机在打开AE时,支持60hz帧率;
  4. 该相机支持yuv_420_888图像格式;
  5. 该相机同时支持640x480,1080x720,1920x1080分辨率;

如果没有找到符合上述要求的相机,则会默认向下拉菜单中添加一个id “0”,这是绝大多数安卓设备都可以打开的相机编号。如果能打开,这个camera 0大概率是一个logical camera, 即多个physical camera的组合。

相机流分辨率选取

从包含640x480,1080x720,1920x1080的下拉菜单中选择一个想要的图像分辨率。相机流预览窗口的尺寸将根据所选的分辨率发生变化。

录制60hz相机流

如果选择,相机将工作在AE模式下,并尽量达到60hz帧率。但根据当前拍摄场景的明暗程度不同,相机流的实际帧率会在30~60hz区间浮动。如果不选,相机流帧率会尽量保持在30hz,工作在AE模式。

图像时间戳文件格式

从包含csv, txt的下拉菜单中选择想要的文件格式。

imu数据流设置

是否录制imu数据

如果选择,acc和gyr传感器数据流将打开,得到的数据文件夹中将至少包含一个acc数据和一个gyr数据的文本文件。注意,手机上的惯性传感器芯片中,acc和gyr为两个独立的sensor共享一条数据总线输出,而非直接对齐好的imu数据。

是否生成时间戳对齐的imu数据

如果选择,得到的数据文件夹中将额外包含一个对齐后imu数据的文本文件。

imu帧率选取

app启动时,会自动查询当前设备支持的惯性传感器帧率并将查询结果加入下拉菜单中以供选择,这里笼统地称为imu帧率,实际上有的安卓设备acc和gyr的帧率可以不相同。下拉菜单中可能提供的帧率值为200,400,800,实际数据流的帧率可能并不完全一直,取决于设备厂商采用的惯性传感器芯片和HAL层的实现。

imu数据文件格式

从包含csv, txt的下拉菜单中选择想要的文件格式。

对齐的imu数据文件中,acc和gyr的先后顺序

如果选择了生成时间戳对齐的imu数据,该下拉菜单中acc in front 和 gyr in front分别对应在imu数据文件中acc在前和gyr在前。

数据文件夹名称

Data folder name可输入文本框

如果不输入,默认值为 "default"。

postfix with time

如果选择,将会在输入的data folder name后面添加格式为\'-D\'yyyy-MM-dd\'-T\'HH-mm-ss的年月日和时分秒后缀。

数据流帧率和数据包大小

相机流帧率

需要注意的是,这里的current cam fps为真实的数据流帧率,而非预览帧率。比如,当选择1920x1080分辨率时,current cam fps显示60hz时的预览会没有640x480分辨率下60hz的预览流畅,那是因为,图像过大时,预览窗口后台的内存swap速度跟不上,导致预览帧率小于真实数据流帧率。不过,在得到的数据文件夹中,图片依然是以真实数据流帧率保存的。

数据包大小

当选择较大的图像分辨率或60hz帧率时,current data size所显示的数据包大小会滞后于当前时刻真实的文件夹大小。这是因为,为了不阻塞数据流,数据文件存储为异步工作模式。也就是说,当前的数据缓存(内存中的数据结构)中还有没被写进文件夹的内容,而current data size显示的是数据文件夹此刻占用的空间大小。

录制开关

关于结束录制时按钮不会立刻重置

当选择较大的图像分辨率或60hz帧率时,按下按钮结束录制时,录制开关会阻塞app一段时间后才重置。这是为了表征数据缓存中还有未被写进文件夹的内容,待数据缓存清空,录制开关就会重置,app可以重新开始下一次录制。

关于重复使用相同的文件夹名称

如果这次的数据文件夹名称用了与上一次录制相同的值,按下录制开关后app会首先将上一次的录制结果完全清空,然后再开始这次的录制。

录制数据存储路径

App在设备中使用的存储根目录为 /sdcard/slam_app/, 每次录制得到的数据文件夹保存在 /sdcard/slam_app/RecordedData/"本次录制文件夹名称"/ 的目录下。该目录下还会包含一个名为record_config的json文件,内容为本次录制所使用的配置,如:


  "folder_name": "",
  "post_with_time": false,
  "time_postfix": "-D2022-03-01-T18-26-30",
  "record_camera": true,
  "save_image": true,
  "camera_id": "0",
  "camera_resolution": 0,   //0:640x480, 1:1080x720,2:1920x1080
  "enable60hz": true,
  "image_ts_file_type": "csv",
  "record_imu": true,
  "sync_acc_gyr": true,
  "imu_freq": 0,            //0:200,1:400,2:800
  "imu_file_type": "csv",
  "acc_gyr_order": 0,       //0:acc in front, 1:gyr in front
  "pack_rosbag": false

App永久下载链接

下载二维码
后续App有更新时,会在联网状态下自动下载更新并提示安装。

以上是关于SLAM APP的主要内容,如果未能解决你的问题,请参考以下文章

SLAM---初识SLAM

SLAM---初识SLAM

激光SLAM与视觉SLAM的区别

激光SLAM技术总结激光SLAM对比视觉V-SLAM

激光SLAM技术总结激光SLAM对比视觉V-SLAM

SLAM算法总结——经典SLAM算法框架总结