关于EuRoc数据集双目相机之间的基线长度

EUROC数据集提供了双目和IMU数据,可是并没有找到关于双目相机基线长度的直接描述。

查看了一番关于该数据集的论文publisher,设备描述部分并没有关于这一点的细节。

不过数据集中提供了sensor.yaml文件,该文件中,有这个sensor关于Body的T_BS(齐次坐标形式的4×4矩阵,可以参考高博的书籍或者博客)。

根据坐标转换关系:

T_C1C2=T_C1B * T_BC2,写两行代码应该可以算一下。

#include 
using namespace std;
#include 
#include 

int main()
{
  Eigen::Matrix4d T_BC1;
  Eigen::Matrix4d T_BC2;
  T_BC1<<0.0148655429818, -0.999880929698, 0.00414029679422, -0.0216401454975,
	0.999557249008, 0.0149672133247, 0.025715529948, -0.064676986768,
	-0.0257744366974, 0.00375618835797, 0.999660727178, 0.00981073058949,
	0.0, 0.0, 0.0, 1.0;
  T_BC2<<0.0125552670891, -0.999755099723, 0.0182237714554, -0.0198435579556,
	0.999598781151, 0.0130119051815, 0.0251588363115, 0.0453689425024,
	-0.0253898008918, 0.0179005838253, 0.999517347078, 0.00786212447038,
	0.0, 0.0, 0.0, 1.0;
  cout.precision(15);
  cout<<"T_BC1"<

T_BC1和T_BC2的数据来自cam0和cam1文件夹中的sensor.yaml文件。

输出结果如下:

T_BC1
0.0148655429818 -0.999880929698 0.00414029679422 -0.0216401454975
0.999557249008 0.0149672133247 0.025715529948 -0.064676986768
-0.0257744366974 0.00375618835797 0.999660727178 0.00981073058949
         0          0          0          1
T_BC2
0.0125552670891 -0.999755099723 0.0182237714554 -0.0198435579556
0.999598781151 0.0130119051815 0.0251588363115 0.0453689425024
-0.0253898008918 0.0179005838253 0.999517347078 0.00786212447038
         0          0          0          1
T_C1C2
0.999997256477881 0.00231206719242389 0.00037600810241559 -0.110073808127187
-0.00231713572328124 0.999898048506644 0.0140898358466482 0.000399121547014141
-0.000343393120524168 -0.0140906684527146 0.999900662637728 -0.000853702503358044
           0            0            0            1
可以看出来,T_C1C2的 t向量部分(代表平移),只有第一个值不是0(近似)。R矩阵部分近似单位阵也证明两个cam之间没有旋转。

姑且认为这个

0.110073808127187

就是基线的长度,单位:米。(无人机上装载的传感器,10厘米左右的基线貌似也挺合理)

如果哪位看官发现了数据集官方有对基线长度的直接描述,欢迎交流,指正!



你可能感兴趣的:(C++,SLAM学习)