哔哩哔哩网站怎么做视频,wordpress自助广告,网页游戏排行榜回合制,如何自己做框架开发网站提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. … 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. 报错二(1) 问题描述(2) 解决 前言
本次教程运行ORB_SLAM3所需的环境如下 Ubuntu18.04、ros版本melodic Opencv4.5.2、Pangolin0.6、 Boost库1.77.0版本、Eigen3.3.4
注意以下的教程和所遇到的问题解决使用的是v0.4-beta版本的ORB_SLAM源码不同的版本遇到的问题和解决的方法不太一样
一、ORB_SLAM3源码编译
所有的环境配置安装的具体教程和踩坑记录具体可以参考这篇博客
这里就不赘述了
二、ORB_SLAM3实时单目相机测试
以usb单目摄像头为例有安装过相应的驱动的可直接进入下一步若是没有具体的驱动的安装和相应的配置具体参考这篇博客VMware虚拟机中ubuntu使用记录5—— 如何在ubuntu中安装USB相机ros驱动并获取usb摄像头数据
1. 查看摄像头的话题
打开终端1 roscore在相机驱动的工作空间目录下打开终端2 source devel/setup.bash //生效过环境可跳过此步roslaunch usb_cam usb_cam-test.launch //usb_cam为自己的驱动文件的名字运行2终端的同时CtrlAltT打开终端3 rostopic list列出所有的ROS话题其中/usb cam/image_raw为我单目摄像头的话题数据如下图所示 2. 运行测试
(1) 修改ros_mono.cc文件 由于本次测试的时单目故只需在/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src目录下找到ros_mono.cc文件打开找到并修改成我们自己摄像头的订阅话题(usb_cam/imahe_raw)后面的参数“1”不用修改如下图所示 (2) 编译源码 回到src/ORB_SLAM3主目录再次运行
chmod x build_ros.sh
./build_ros.sh(3) ORB_SLAM3运行相机 1启动ROS打开终端1
roscore2开启相机 在自己创建工作空间我的是catkin_ws/目录下打开终端2 source devel/setup.bash //生效过环境可跳过此步roslaunch usb_cam usb_cam-test.launch //改成自己的相机启动文件3运行ORB_SLAM3 在src/ORB_SLAM3目录下的终端输入
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/My_camera.yam指令的参数说明
rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE1.Mono 代表的是运行单目的意思本次测试使用的是单目摄像头
2. PATH_TO_VOCABULARY ORBvoc.txt特征词典文件路径我的路径是
/home/chen/catkin_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt 3. PATH_TO_SETTINGS_FILE 即相机设置文件官方提供的是Asus.yaml可以另复制命名一个文件My_camera.yaml将里面的相机参数修改成自己标定过的参数。
(4)最后运行成功的截图 三. 运行测试可能的报错
1. 报错一
(1) 问题描述
rosrunORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM3/Asus.yaml 时出现如下段错误核心已转储,报错的页面如下图所示 (2) 原因分析
在ORB_SLAM3/Thirdparty/DBoW2/CMakeLists.txt和ORB_SLAM3/CMakeLists.txt中使用的是opencv4版本而在ORB_SLAM3/Examples/ROS/ORB_SLAM3/CMakeLists.txt中要求使用的是OpenCV3的版本所以最后导致segmentation fault(段错误)。
(3) 解决
以下是在v0.4-beta版本的ORB_SLAM源码上进行的修改解决修改opencv版本的最低要求改成统一的opencv3版本 1修改CMakeLists.txt文件的代码 在ORB_SLAM3/CMakeLists.txt修改为 在ORB_SLAM3/Thirdparty/DBoW2/CMakeLists.txt中修改为 在ROS/ORB_SLAM3/CMakeLists.txt中不变 修改完成后再次编译源码
./build.sh2. 报错二
(1) 问题描述
经过上述报错一中的修改之后再次运行./build.sh编译代码时出现报错no match for ‘operator’具体的报错的信息如下所示 (2) 解决
1修改LocalMapping.cc文件 在src/ORB_SLAM3/src目录下的LocalMapping.cc文件大概在628行修改为
x3D cv::Matx31f(x3D_h.get_minor3,1(0,0)(0) / x3D_h(3), x3D_h.get_minor3,1(0,0)(1) / x3D_h(3), x3D_h.get_minor3,1(0,0)(2) / x3D_h(3));修改位置如下图所示 2再次运行./build.sh 报错页面信息如下 解决 修改src/ORB_SLAM3/src/CameraModels目录下的KannalaBrandt8.cpp文件大概在534行修改为
namespace cv
{
templatetypename _Tp, int m, int n static inline
Matx_Tp, m, n operator / (const Matx_Tp, m, n a, float alpha)
{
return Matx_Tp, m, n(a, 1.f / alpha, Matx_ScaleOp());
}
}修改的位置如下 再次执行./build.sh./build_ros.sh不出意外就能编译成功
编译成功后就可以使用自己相机配置文件实时运行ORB_SLAM3