orb_slam3双目惯性的函数调用关系
时间: 2024-01-16 16:04:35 浏览: 26
在ORB-SLAM3中,双目惯性的函数调用关系如下:
1. 在System.cc文件中,调用System::System函数创建系统对象。
2. 在System::System函数中,调用TrackWithIMU函数开始跟踪。
3. 在TrackWithIMU函数中,调用TrackStereo函数进行双目跟踪。
4. 在TrackStereo函数中,调用TrackStereoInitialization函数进行双目初始化。
5. 在TrackStereoInitialization函数中,调用CreateInitialMapMonocular函数创建初始地图。
6. 在CreateInitialMapMonocular函数中,调用CreateInitialMapStereo函数创建初始双目地图。
7. 在CreateInitialMapStereo函数中,调用TrackReferenceKeyFrame函数跟踪参考关键帧。
8. 在TrackReferenceKeyFrame函数中,调用TrackWithMotionModel函数进行基于运动模型的跟踪。
9. 在TrackWithMotionModel函数中,调用SearchLocalPoints函数在局部地图中搜索点。
10. 在SearchLocalPoints函数中,调用TrackLocalMap函数对局部地图进行跟踪。
11. 在TrackLocalMap函数中,调用SearchByProjection函数进行投影匹配。
12. 在SearchByProjection函数中,调用TriangulateNewPoints函数三角化新的地图点。
13. 在TriangulateNewPoints函数中,调用CreateNewKeyFrame函数创建新的关键帧。
14. 在CreateNewKeyFrame函数中,调用CreateNewMapPoints函数创建新的地图点。
15. 在CreateNewMapPoints函数中,调用SearchLocalPoints函数在局部地图中搜索点。
16. 在SearchLocalPoints函数中,调用TrackLocalMap函数对局部地图进行跟踪。
17. 在TrackLocalMap函数中,调用SearchByProjection函数进行投影匹配。
18. 在SearchByProjection函数中,调用TriangulateNewPoints函数三角化新的地图点。
19. 在TriangulateNewPoints函数中,将新的地图点加入到地图中。
20. 在TrackLocalMap函数中,调用OptimizeLocalMap函数对局部地图进行优化。
21. 在OptimizeLocalMap函数中,调用OptimizeEssentialGraph函数进行基于本质图的优化。
22. 在OptimizeEssentialGraph函数中,调用OptimizePoseGraph函数进行基于位姿图的优化。
23. 在OptimizePoseGraph函数中,调用OptimizeMapPoints函数进行地图点优化。
24. 在OptimizeMapPoints函数中,调用OptimizeMapPoint函数对每个地图点进行优化。
25. 在OptimizeMapPoint函数中,调用OptimizeOnePoint函数对一个地图点进行优化。
26. 在OptimizeOnePoint函数中,调用OptimizePointFunction函数构造地图点的误差函数。
27. 在OptimizePointFunction函数中,调用ProjectPointToImage函数将地图点投影到图像平面上。
28. 在ProjectPointToImage函数中,调用GetPose函数获取相机位姿。
29. 在GetPose函数中,调用IMU预积分函数进行预积分。
30. 在IMU预积分函数中,调用IMU预积分构造函数进行预积分。
31. 在IMU预积分构造函数中,调用IMUPreintegratedMeasurements函数进行预积分计算。
32. 在IMUPreintegratedMeasurements函数中,调用IntegrateMidPoint函数进行中点积分。
33. 在IntegrateMidPoint函数中,调用IntegrateSingleIMU函数进行单次IMU积分。
34. 在IntegrateSingleIMU函数中,调用Rotate函数进行旋转变换。
35. 在Rotate函数中,调用Exp函数进行李代数转换。
36. 在Exp函数中,调用Expmap函数进行李代数转换。
37. 在Expmap函数中,调用Rodrigues函数进行李代数转换。
38. 在Rodrigues函数中,计算李代数的指数映射。
39. 在IMUPreintegratedMeasurements函数中,计算预积分结果。
40. 在OptimizePointFunction函数中,计算地图点的误差。
41. 在OptimizeOnePoint函数中,计算地图点的雅克比矩阵。
42. 在OptimizeMapPoint函数中,计算所有地图点的误差和雅克比矩阵。
43. 在OptimizePoseGraph函数中,调用OptimizePoseFunction函数构造位姿的误差函数。
44. 在OptimizePoseFunction函数中,调用GetPose函数获取相机位姿。
45. 在OptimizePoseGraph函数中,计算位姿的误差和雅克比矩阵。
46. 在OptimizeEssentialGraph函数中,计算本质图的误差和雅克比矩阵。
47. 在OptimizeLocalMap函数中,调用OptimizeBA函数进行BA优化。
48. 在OptimizeBA函数中,调用OptimizeBAFunction函数构造BA的误差函数。
49. 在OptimizeBAFunction函数中,调用GetPose函数获取相机位姿。
50. 在OptimizeBAFunction函数中,计算BA的误差和雅克比矩阵。
51. 在OptimizeBA函数中,调用SolveBA函数进行BA求解。
52. 在SolveBA函数中,调用LevenbergMarquardt函数进行LM算法优化。
53. 在LevenbergMarquardt函数中,计算LM算法的增量。
54. 在LevenbergMarquardt函数中,计算LM算法的Hessian矩阵和梯度向量。
55. 在LevenbergMarquardt函数中,计算LM算法的lambda参数。
56. 在LevenbergMarquardt函数中,更新相机位姿和地图点的坐标。
57. 在OptimizeLocalMap函数中,更新所有地图点的信息。
58. 在TrackLocalMap函数中,更新当前帧的位姿。
59. 在TrackStereo函数中,调用UpdateLastFrame函数更新上一帧的信息。
60. 在UpdateLastFrame函数中,调用TrackLocalMap函数更新上一帧的地图点信息。
61. 在TrackStereo函数中,调用UpdateMotionModel函数更新运动模型。
62. 在UpdateMotionModel函数中,调用IMU预积分函数进行预积分。
63. 在IMU预积分函数中,调用IMU预积分构造函数进行预积分计算。
64. 在IMUPreintegratedMeasurements函数中,调用IntegrateMidPoint函数进行中点积分。
65. 在IntegrateMidPoint函数中,调用IntegrateSingleIMU函数进行单次IMU积分。
66. 在IntegrateSingleIMU函数中,调用Rotate函数进行旋转变换。
67. 在Rotate函数中,调用Exp函数进行李代数转换。
68. 在Exp函数中,调用Expmap函数进行李代数转换。
69. 在Expmap函数中,调用Rodrigues函数进行李代数转换。
70. 在Rodrigues函数中,计算李代数的指数映射。
71. 在IMUPreintegratedMeasurements函数中,计算预积分结果。
72. 在UpdateMotionModel函数中,计算IMU测量的速度和角速度。
73. 在UpdateMotionModel函数中,计算相机的速度和角速度。
74. 在UpdateMotionModel函数中,更新运动模型。
75. 在TrackStereo函数中,返回跟踪结果。
总体来说,ORB-SLAM3中的双目惯性跟踪过程经过多个函数的调用和数据交互,涉及到了相机位姿估计、地图点三角化、运动模型更新等多个方面。其中,IMU预积分函数在跟踪过程中起到了重要作用,可以在没有特征点可用时,通过IMU测量信息来进行相机位姿估计和地图点三角化。