手机数据跑VO/VIO记录

19 篇文章 4 订阅
8 篇文章 0 订阅
相机标定:

法1:ROS自带的标定工具
1.打开手机端app获取图像数据
2.ros自带的camera_calibration工具进行标定

rosrun image_transport republish compressed in:=/camera/image raw out:=/cam0/image_raw

rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.024 image:=/cam0/image_raw camera:=/cam0 --no-service-check

然后移动标定板或者相机完成标定。
法2:Opencv 标定工具
参考链接:使用opencv进行相机标定(ubuntu系统下)

IMU标定

法1:使用imu_utils工具标定
编译安装code_utils,imu_utils.
1.静止采集数据(时间越长越好):

rosbag record -O XXX.bag /android/imu

2.修改自己的launch文件Android_imu.launch,并启动

<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/android/imu"/>
        <param name="imu_name" type="string" value= "android"/>
        <param name="data_save_path" type="string" value= "$(find imu_utils)/android_data/"/>
        <param name="max_time_min" type="int" value= "5"/>
        <param name="max_cluster" type="int" value= "100"/>
    </node>
</launch>
roslaunch imu_utils Android_imu.launch

3.加速播放录制的数据

rosbag play -r 100 XXX.bag

牢记一点:launch文件中的时间设置一定要小于bag包录制的数据时间,然后bag包快速播放完,立马就会出结果了。否则会一直wait for imu不出标定结果。(害我电脑白白开了一晚上结果还没算出来。。。。。。)

补充:用Imu_utils标定,原则上最后需要把生成的文件用matlab脚本绘制出Alann曲线再去精确的读出加速度和角速度的bias随机游走和高斯白噪声,实际操作表明直接用imu_utils出的结果也行,只要是在一个数量级上就没啥大问题,有些VIO系统跑步起来主要还是IMU本身的问题。

法2:使用kalibr_allan工具进行标定
参考链接:
1.将录制的bag数据包转mat文件,与bag在同级目录下

rosrun bagconvert bagconvert bag名字 topic名字

2.将生成的mat执行kalibr_allan/matlab目录下的SCRIPT_allan_matparallel.m脚本
3.将第二步生成的结果mat文件执行SCRIPT_process_results.m脚本完成标定并绘制出ALLAN曲线

补充:一开始尝试用octave跑.m脚本显示timeserises未定义,后来才发现我笔记本已经安装了matlab2018b了,但是需要开文件夹权限,执行:sudo chmod -Rf 777 ~/.matlab,然后在matlab里可以正常出结果。(过了几个月忘记咋操作了,这一点就浪费了我两三个小时才逐渐搞定)

最后的标定结果:
在这里插入图片描述
**》**另外Imu_tk工具可以标定确定性误差,这个可选可不选

相机和IMU联合标定

1.修改准备cam.yaml , imu.yaml,target.yaml
2.录制数据(需要3个轴来回运行至少三次)
3.运行dataToEuroc程序,将数据按照时间戳命名转成文件夹存储格式
在这里插入图片描述
4.再将数据文件生成bag包

kalibr_bagcreater --folder /home/fs/Downloads/dataset/android_euroc/. --output-bag calib_data.bag

5.kalibr联合标定

kalibr_calibrate_imu_camera --target xx/target.yaml --cam xx/camchain.yaml --imu xx/imu.yaml --bag xx/xx.bag --bag-from-to 5 45
例子: kalibr_calibrate_imu_camera --target /home/fs/catkin_ws/src/kalibr/data/target.yaml --cam /home/fs/catkin_ws/src/kalibr/data/camera3.yaml --imu /home/fs/catkin_ws/src/kalibr/data/imu3.yaml --bag /home/fs/Downloads/dataset/android_imucam816.bag
跑ORBSLAM2

步骤:
前期工作:使用ROS包camera_calibration标定手机,修改yaml参数配置文件
1.roscore
2.打开手机端数据获取APP(下载地址:git clone https://github.com/hitcm/Android_Camera-IMU.git),IP地址为电脑端IP
3.手机图像topic重命名:rosrun image_transport republish compressed in:=/android/image_raw raw out:=/cam0/image_raw
3.运行ORBSLAM:rosrun ORB_SLAM2 Mono /home/fs/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/fs/catkin_ws/src/ORB_SLAM2/Examples/Monocular/AndroidPhone.yaml

跑ORBSLAM3:

1.编译安装成功后运行失败的问题
解决方法:通过debug发现是Eigen库相关的问题,发现自动找的Eigen版本不对,要求3.1.0以上,切换到自己安装的3.3.7版本即可。需要全部重新编译。
2.运行出现framebuffer with requested attributes not available.的红色提示问题,一开始以为运行失败是这个东西导致的,各种查找解决这个问题的方法无果。最后发现这个并不影响代码运行。
3.如何在clion中debug ros 包
因为 经常会遇到ros包代码运行错误的问题,需要debug查找问题所在。clion在ros环境下启动可以自动加载ros环境。debug时需要在program argument中添加运行所需的参数文件路径(和非ros包程序方式一样)然后点击运行或者debug按钮即可。

运行步骤:
rosrun ORB_SLAM3 Mono_Inertial ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml

录制效果动图

获取鼠标位置:xdotool getmouselocation
动图录制:byzanz-record -x 482 -y 53 -w 452 -h 715 ~/x.gif 默认10s

降低topic频率,标定时用

rosrun topic_tools throttle messages 原topic 4.0 降频后的topic

查看topic的header信息

rostopic echo /cam0/image_raw | grep header -A4

下面内容更新于2022.2.25

标定流程改进:

原始标定方式用kalibr进行cam和imu的联合标定时非常耗时,优化计算需要3个小时以上
用kalibr标定相机800张左右的图片也需要30分钟左右,于是在Ubuntu20系统上重装了kalibr
参考博客:
Ubuntu20.04安装kalibr
20版本kalibr的github链接
安装完成后赶紧试验了相机的标定,速度超级快,800多张图片2分钟就标定完了。
最后总结标定步骤:

1.相机标定
1.一定要先进到bag包所在的路径
2.rosrun kalibr kalibr_calibrate_cameras --target target.yaml --bag imucam_calib.bag --models pinhole-radtan --topics /cam0/image_raw
2.相机IMU联合标定
rosrun kalibr kalibr_calibrate_imu_camera --target target.yaml --imu mate30proimu.yaml --cam mate30procam.yaml --bag imucam_ros.bag --bag-from-to 5 50
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值