ORB_SLAM之双目

本文介绍了在Ubuntu 14.04 LTS上使用ORB_SLAM进行双目视觉SLAM的初步尝试。首先确保将ORB_SLAM添加到ROS环境变量,接着安装必要的USB和UVC库。使用usb_cam进行摄像头读取,并通过调整lanunch文件适应较低带宽的接口。由于未进行相机标定和校正,目前效果不佳,后续会补充这一过程。
摘要由CSDN通过智能技术生成

ORB_SLAM之双目

手里有个便宜的双目摄像头,打算用来试试orb_slam,到时候直接架上就可以跑了。

先在pc上试试(ubuntu 14.04 LTS)。

在正式使用之前记得把ORB_SLAM加到ROS的环境变量中去。

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM

然后usb摄像头需要用到usb或者uvc,不管那么多,都装装装。

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测量信息来进行相机位姿估计和地图点三角化。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值