技术标签: 数码相机
目录
标定分为内参和外参标定,其中内参标定是确定传感器自身的模型参数,即确定仅与传感器自身存在关系的参数,所以imu和相机都需要进行内参标定。外参标定则是确定imu和相机之间的刚体变换关系,也就是确定两个传感器坐标之间的三维变换矩阵。
其中相机内参和外参可以使用kalibr标定,具体步骤可以参考下面的kalibr imu-相机标定;
imu标定则需要使用其他工具,如Allan_variance_ros工具、imu-utils工具进行随即误差标定,一般不需要进行imu的系统误差标定,默认imu性能较好,尺度、工装误差(3个轴之间不正交)在出厂时的校正效果可以直接使用,而加速度计和陀螺仪的bias偏差、重力矢量会在标定算法、SLAM算法中估计,无需确定。
此外,最近发现一个已经集成的ros-imu工具箱,可以在rviz中查看imu姿态:https://github.com/CCNYRoboticsLab/imu_tools。
结合之前的几篇博客:
airsim IMU仿真_scjdas的博客-程序员宅基地(介绍Imu误差模型,连续时间误差与离散时间误差)
结合其他几个大牛技术团队的建议,在imu随机误差标定完成后,可以适当放大随机误差,以保证没有被建模到的误差也被融入算法中。
ORB-SLAM3、kalibr、TUM-VI都这样建议(依次展示):
参考:
Kalibr 之 Camera-IMU 标定 (总结)_晨光ABC的博客-程序员宅基地
Kalibr标定工具箱使用详细过程_随机游走321的博客-程序员宅基地
手机上的SLAM(7):Kalibr相机+IMU离线标定 - 知乎
参考官方安装教程:
参考官方安装教程: https://github.com/ethz-asl/kalibr/wiki/installation
安装完成后使用官方提供的数据包测试
双目分为单设备和多设备,我们的双目相机是单设备,也就是双目图像拼接在一起。
使用usb-cam发布ros图像,在其launch文件中设置分辨率的宽度为2倍。这里的分辨率不能乱取,可以根据报错反推对应分辨率!
再写ros包分割拼接在一起的双目图像
相关代码见:
ROS调用USB双目摄像头模组_ros usb_cam_昼行plus的博客-程序员宅基地
rosbag录制
rosbag record /left_cam/image_raw /right_cam/image_raw -O images.bag
标定板配置文件
#example for aprilgrid
# target_type: 'aprilgrid' #gridtype
# tagCols: 6 #number of apriltags
# tagRows: 6 #number of apriltags
# tagSize: 0.088 #size of apriltag, edge to edge [m]
# tagSpacing: 0.3 #ratio of space between tags to tagSize
#example: tagSize=2m, spacing=0.5m --> tagSpacing=0.25[-]
#example for checkerboard
target_type: 'checkerboard' #gridtype
targetCols: 13 #number of internal chessboard corners
targetRows: 11 #number of internal chessboard corners
rowSpacingMeters: 0.05 #size of one chessboard square [m]
colSpacingMeters: 0.05 #size of one chessboard square [m]
标定命令
rosrun kalibr kalibr_calibrate_cameras --target checkBoard_13x11.yaml --bag images.bag --bag-from-to 5 60 --models pinhole-radtan --topics /left_cam/image_raw --show-extraction
checkborad
rosrun kalibr kalibr_calibrate_imu_camera --target checkBoard_13x11.yaml --bag images_imu.bag --bag-from-to 5 60 --cam images-camchain.yaml --imu imu.yaml --imu-models scale-misalignment
april_tag
rosrun kalibr kalibr_calibrate_imu_camera --target april_6x6.yaml --bag images_imu.bag --bag-from-to 5 160 --cam images_imu-camchain.yaml --imu imu.yaml --imu-models calibrated
assert(_bufferTmin <= _time.toScalar() < _bufferTmax) failed [1.40473e+09 <= 1.40473e+09 < 1.40473e+
解决参考:Kalibr进行相机-IMU联合标定踩坑记录RuntimeError: Optimization failed!_HyperZhu的博客-程序员宅基地
但此处要注意,调大博客中提到的参数会导致计算量增大,运行结果的重投影误差也很大,所以要慎重调整参数,一般这里报错说明数据录制效果不好或者设备采集到的数据质量差,需要重新录制或者更换高质量设备
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法