ROS研究员 2024-03-20 12:18 采纳率: 35.7%
浏览 39
已结题

orbslam3编译错误

/home/sunrise/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc: In member function ‘void ImageGrabber::GrabImage(const ImageConstPtr&)’:/home/sunrise/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:151:41: error: conversion from ‘Sophus::SE3f’ {aka ‘Sophus::SE3’} to non-scalar type ‘cv::Mat’ requested 151 | cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~make[2]: *** [CMakeFiles/MonoAR.dir/build.make:118:CMakeFiles/MonoAR.dir/src/AR/ros_mono_ar.cc.o] 错误 1make[1]: *** [CMakeFiles/Makefile2:599:CMakeFiles/MonoAR.dir/all] 错误 2make: *** [Makefile:130:all] 错误 2



  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-03-20 12:18
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这段错误信息是编译时出现的错误,错误的原因是在第151行代码中,将Sophus::SE3f类型的变量转换成了cv::Mat类型,这是一个不允许的操作。 解决该问题的方法是将Sophus::SE3f类型的变量转换成cv::Mat类型,可以使用cv::Mat的构造函数进行转换。例如: cv::Mat Tcw = cv::Mat(mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec())).inv(); 其中,inv()函数会对矩阵进行求逆操作,将矩阵从Sophus::SE3f类型转换为cv::Mat类型。 需要注意的是,这只是一个可能的解决方法,具体解决方法可能因情况而异。
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月20日
  • 创建了问题 3月20日