ROS环境上使用Astra Pro相机实时运行ORB-SLAM3
搭建ORB-SLAM3在Ubuntu下的编译和运行环境
参考 搭建ORB-SLAM3在Ubuntu下的编译和运行环境
ROS环境上使用Astra Pro相机实时运行ORB-SLAM3
ROS版本编译
添加ROS路径到ROS_PACKAGE_PATH
环境变量中,一般在ORB-SLAM3源码下的Examples文件夹或者新的版本在Examples_old文件夹
|
|
用以下命令测试
|
|
添加成功之后进行编译
|
|
注:最新版的ORBSLAM3中Examples没有ROS目录,需要在build_ros.sh
脚本中将Examples改成Examples_old
ROS编译问题
-
OpenCV版本问题
直接在
CMakeLists.txt
中修改自己所装对应版本 -
C++ 标准问题
直接在
CMakeLists.txt
中添加set(CMAKE_CXX_STANDARD 14)
-
提示找不到sophus库
进入
ORB_SLAM3/Thirdparty/Sophus
文件夹下,若未编译请先编译,在编译完成后执行sudo make install
,加入Sophus依赖到系统环境中
以下解决方法会引入cv中的eigen2cv方法,需要在每个修改文件的顶部包含以下文件头文件
|
|
-
解决报错
cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
引入上述两个头文件,将
ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc
代码中这一行修改为:1 2 3 4
cv::Mat Tcw; Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix(); cv::eigen2cv(Tcw_Matrix, Tcw);
-
解决报错
vPoints.push_back(pMP->GetWorldPos());
引入上述两个头文件,将
ROS/ORB_SLAM3/src/AR/ViewerAR.cc
代码中这一行修改为:1 2 3
cv::Mat WorldPos; cv::eigen2cv(pMP->GetWorldPos(), WorldPos); vPoints.push_back(WorldPos);
-
解决报错
cv::Mat Xw = pMP->GetWorldPos();
引入上述两个头文件,将
ROS/ORB_SLAM3/src/AR/ViewerAR.cc
代码中这一行修改为:1 2
cv::Mat Xw; cv::eigen2cv(pMP->GetWorldPos(), Xw);
实时运行
运行Astra Pro相机启动节点:
|
|
Astra Pro相机在ROS环境下的配置使用可参照:Astra Pro 相机配置及使用
运行ORB-SLAM3
|
|
运行截图如下: