上一个vins-mono环境配置测试完成后,初步建立好实验环境,接下来开始进行数据采集(cam+imu)、打包、标定、运行。
记录一下后续要更新的内容吧:
*ros打包、另外两种标定方式、手机在线测试、另一种app的测试情况 、IMU数据的调参 *
更新一下:2023-05-11,之前有些理解不到位的地方做了修改,多余的步骤删减。
更新:2023-10-22,对imu数据调整进行了解释;对于在ubuntu18.04下运行新版(36个package)的kalibr运行前要加rosrun做了修改
一、采集数据
cam+imu传感器组合可以看作视觉惯导slam的一种组合方法,基于安卓平台可以在人人都有的安卓手机上进行实验。本次实验采用的app:说明
之前用的是第一个版本,部分机型确实会出现闪退的情况,作者也开源了2.0版本,主要更新了对焦后一直跳动的bug,有需要的可以去下载安装,两个app不能同时存在于你的手机上。
https://github.com/OSUPCVLab/mobile-ar-sensor-logger/releases
对于版本这个问题,因为某些机型确实会闪退,还是根据需要来选择版本吧!
该App能调用摄像头的同时调用手机中的IMU,离线采集,方便导入,适配华为手机效果较好。
我自己测试了很多手机,从五六年前发布的华为nova3(Kirin 970)、到18年的华为旗舰Mate20(Kirin 980)、nova6(Kirin 990)最后还试了遥遥领先的Mate40 Pro(kirin 9000)和发热严重(doge)…的Mate50Pro,可以说从低端到入门,再到高端旗舰都试了一遍,效果可以说非常好了。(我甚至觉得nova效果比旗舰都好hh,异常的稳定)。
其他品牌例如安卓之光小米11Ultra、手感极好的小米12S、红米K30S Ultra、红米K50 Ultra、vivo X80(发哥9000)、oppo find x3、荣耀V8(还有一些不记得了),只能说差点意思。当然,这个环节影响最大的是IMU标定那一步,当时我在最后说直接利用公制参数来联合标定其实也是不准确的(如果你的手机标定实在太差,记得有一次某个品牌标定十次,十次都天差地别…,也是可以直接上公制参数的)。
哦对了,之前说到了手机越贵越新效果也就越好其实也是有点问题的,手机并不是越新越好,太高的版本系统不兼容老App的问题也存在。
安装完成后,开始记录record,结束stop。分辨率建议640×480。
该数据记录保存在本地的Android文件夹下,类似小米华为系列的手机需要打开开发者模式并进入USB调试才可以找到。为了方便,我们将文件直接将文件发送到电脑也好,找到一个不需要权限的文件夹放入也好,反正怎么简单怎么来~
发现本地文件:
是以一个采集时间来命名的文件,进入发现里面有许多数据,其中movie.mp4是视频流信息,gyro_accel.csv是imu的含有时间戳、加速度计和陀螺仪的数据,frame_timestamp.mp4是视频帧时间戳数据。其它目前用不到,涉及地磁、GPS等信息,也说明该app可以多数据源融合
新更新的2.0版本砍掉了不需要的地磁和GNSS数据,整体非常精简!(作者也很热心,有问题基本都是很快回复的~~谢谢大佬)
最近做实验需要用的地磁信息,作者在issue中有回复,需要apk的话可以去找,
二、打包
打包目前有两种方法,一种是直接在ROS下打包,另一种是通过kalibr_bagcreater.py脚本来进行打包。
更新:手机离线采集有专门的脚本,用ros命令打包一般是相机,下面是一些ROS打包的过程
【INDEMIND相机运行SLAM】
我们采用kalibr提供的脚本打包方式,打包脚本程序kalibr_bagcreater
拷贝到Ubuntu下,试运行发现缺少一个叫utility_functions.py的第三方库,添加以后发现可以运行了。
库的地址: utility_functions.py
本地创建一个文件,起名dataset2,放入视频和imu的时间戳以及MP4
编译后会生成一个pyc文件,是生成的中间文件,不需要在意。
记录一下输入参数的过程:
通过阅读kalibr_bagcreater.py代码,输入-h或–help后会显示帮助文档,按照提示输入参数。
按照这样填入参数,运行!当然你也可以指定包的名字。
ubuntu16.04下,运行Python脚本的方式是直接:
./kalibr_bagcreater_imu.py --video movie.mp4 --imu gyro_accel.csv --video_time_file frame_timestamps.txt --output imu.bag
ubuntu18.04下,前面要加上Python 运行甲脚本:
python ./kalibr_bagcreater_imu.py --video movie.mp4 --imu gyro_accel.csv --video_time_file frame_timestamps.txt --output imu.bag
出现打包的画面,说明正在录制。
如果不填写保存位置的参数,得到的.bag文件也是自动保存到这个文件夹下,我们发现出现了一个output.bag的文件。
这样就打包完成了,接下来任务就是如何配置launch文件,设置yaml参数,让bag包在vins-mono下运行。
文章来源:https://www.toymoban.com/news/detail-510836.html
三、简单测试
第一次打包完成后,可以简单的在vins下跑一跑,看看有没有问题。在运行之前,要修改launch启动文件和yaml配置文件。
简单起见,就在本地文件夹vins-mono下添加修改即可。
1.修改yaml文件。
进入catkin_ws工作空间,找到存放源代码的文件夹s文章来源地址https://www.toymoban.com/news/detail-510836.html
到了这里,关于【VINS-MONO测试】安卓手机采集mono+imu数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!