加稠密建图:git@github.com:huashu996/ORB_SLAM3_Dense_YOLO.git
纯净版:git@github.com:huashu996/ORB_SLAM3.git
orb-slam3的整个环境配置还是比较麻烦的,先将一些坑写在前面,供大家参考和避开这些坑。
orb-slam3的配置要求还是很重要的,主要需要安装以下的第三方库和功能包
ubuntu 20.04
ROS noetic
Pangolin 0.6
Eigen 3
Opencv 4.2
usb_cam
其中opencv版本有比较严格的要求,建议先安装ROS中的cv_bridge和libopencv-dev,再安装和libopencv版本号一样的opencv库,这样可以避免opencv的版本冲突问题。
经过博主的多次实验,由于noekit的自带libopencv版本是4.2.0,如果安装opencv3会出现版本冲突使编译不通过。如果安装opencv4但不是4.2.0依然会产生冲突,但编译能够通过,但运行时会出现核心已转储的问题。所以直接安装和libopencv一样的版本。
Pangolin不要直接选择最新的版本,而是安装0.6的版本,不然同样会出现编译问题。
不少人在环境配置好和编译成功后,到最后一步运行时出现了核心已转储的问题。博主所遇到的核心已转储问题可以分为两种,一种是运行时闪一下viewer然后直接显示核心已转储,如下图所示。这种情况涉及到的因素主要为opencv的冲突问题以及pangolin的版本,需要重新安装一下。
另一种是运行一段时间出现核心已转储,如下所示,会出现New Map created的字样。这种问题处理比较简单,修改一下CMakelist文件。
New Map created with 118 points
段错误(核心已转储)
博主默认大家已经安装好ubuntu,替换好镜像源,安装好ROS等一些最基本的操作,网上的资料也很多。下面直接从配置环境的难点去讲述。
orb-slam3所用到的opencv主要有两个地方,一个是ROS的cv-bridge数据格式转换,另一个是C++的库。根据1.2的叙述按如下顺序进行安装。
cv_bridge
sudo apt-get install libopencv-dev
sudo apt-get install ros-noekit-cv-bridge
opencv
安装过程看到libopencv版本是4.2.0,所以我们就去opencv官网找4.2.0的包,下载下来。
安装opencv的依赖
sudo apt-get install build-essential cmake git
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev
sudo apt-get install libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy python3-dev python3-numpy
sudo apt-get install libtbb2 libtbb-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
将opencv解压到主目录下
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
#电脑性能差可去掉-j4,性能很好可增加数字(线程)
make -j4
sudo make install
opencv在make过程出现ippicv的下载问题
到官方网址下载对应的ippicv
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv
#1.将ippicv放入opencv源码中新建立的ippicv文件夹
cd opencv-4.2.0
mkdir ippicv
#2.修改opencv的cmake ippicv下载源
gedit ~opencv-4.2.0/3rdparty/ippicv/ippicv.cmake
# 将47行的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
# 改为步骤1中手动下载的文件的本地路径(也就是将网络下载的模式改为本地文件下载的模式):
"/home/cxl/opencv-4.2.0/ippicv/"
重新make opencv即可
添加环境路径
配置OpenCV变量,编辑文件 /etc/ld.so.conf.d/opencv.conf(如果没有就会自动创建):
sudo gedit /etc/ld.so.conf.d/opencv.conf
然后添加 OpenCV4 的 lib 路径:
/usr/local/opencv4/lib
保存退出,执行:
sudo ldconfig
编辑 ~/.bashrc 文件:
sudo gedit ~/.bashrc
最后添加:
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opencv4/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:./usr/local/opencv4/lib
保存退出
source ~/.bashrc
验证opencv是否安装
pkg-config --modversion opencv
安装Pangolin 0.6(官网下载地址,不要下载最新master版,编译的时候可能有错误)
安装依赖项
sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libpng-dev
编译安装
cd Pangolin
mkdir build && cd build
cmake -DCPP11_NO_BOOST=1 ..
make
sudo make install
验证
cd ../examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin
#成功会弹出如下窗口
直接命令安装即可
sudo apt-get install libeigen3-dev
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
(1)解压源文件修改CMakeLists.txt中的opencv路径:
注意需要改两个CMakeLists.txt
ORB_SLAM3/CMakeLists.txt
ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
set(CMAKE_PREFIX_PATH "/usr/local/opencv4.2.0")
find_package(OpenCV 4.2.0 REQUIRED)
(2)CMakeLists.txt最上方添加:
注意需要改两个CMakeLists.txt
ORB_SLAM3/CMakeLists.txt
ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")改为
set(CMAKE_CXX_STANDARD 14)
(3)去掉-march=native,避免运行一段时间后核心已转储的问题
注意需要改4个CMakeLists.txt
ORB_SLAM3/CMakeLists.txt
ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/CMakeLists.txt
ORB_SLAM3/Thirdparty/DBoW2 /CMakeLists.txt
ORB_SLAM3/Thirdparty/g2o/CMakeLists.txt
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3")
(4)将find_package(Eigen3 3.1.0 REQUIRED)修改为:
find_package(Eigen3 REQUIRED)
(5)安装python2.7:
sudoaptinstall libpython2.7-dev
(6)添加ROS环境:
在编译ros版本时候需要初始化ROS
sudo gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/cxl/workspace/ORB_SLAM3/Examples/ROS
#保存退出
source ~/.bashrc
经过上述修改后,再进行编译,大概率会通过
cd ORB_SLAM3
chmod +x build.sh
./build.sh
一定先编译build.sh通过后再编译ros版本
cd ORB_SLAM3
chmod +x build_ros.sh
./build_ros.sh
安装usb_cam
sudo apt-get install ros-noetic-camera-calibration
#启动摄像头
roslaunch usb_cam usb_cam-test.launch
或者源码安装usb_cam
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
ctakin_make
source ./devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
相机标定
#启动摄像头
roslaunch usb_cam usb_cam-test.launch
#新开一个终端,开始标定
rosrun camera_calibration cameracalibrator.py --size 10x7 --square 0.0085 image:=/usb_cam/image_raw camera:=/usb_cam --k-coefficients=4
cameracalibrator.py 标定程序需要以下几个输入参数:
–size为棋盘格的规格(内部角点行列个数),
–square为棋盘格的大小(棋盘格的边长,单位是m),
image:=指定了图像的TOPIC,
–k-coefficients为畸变模型参数个数,
camera:=/usb_cam摄像头
–no-service-check禁用
set_camera_info检查服务
都变成绿色位置了就按下CALIBRATE按钮,等一段时间就可以完成标定。完成后点击SAVE保存标定使用的图像以及标定结果,会显示保存地址,可以打开查看,然后再COMMIT退出程序,标定完成。找到标定结果文件后,按照其数据修改Examples_Old/ROS/ORB_SLAM3目录下Asus.yaml。
运行orb_slam3
在运行程序之前,需要将ORB_SLAM3/Examples_Old/ROS/ORB_SLAM3/src/ros_mono.cc和ORB_SLAM3/Examples_Old/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc的接收话题名称更改
ros::NodeHandle nodeHandler;
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);
ros::spin();
之后再运行代码
source /home/cxl/workspace/ORB_SLAM3/Examples/ROS/ORB_SLAM3/build/devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
配置RealSense D435驱动
#Install ROS Kinetic, on Ubuntu 16.04, ROS Melodic on Ubuntu 18.04 or ROS Noetic on Ubuntu 20.04.
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
sudo apt-get install ros-noetic-rgbd-launch
#无点云
roslaunch realsense2_camera rs_camera.launch
#有点云生成
roslaunch realsense2_camera demo_pointcloud.launch
# 生成对齐的深度图像
roslaunch realsense2_camera rs_rgbd.launch align_depth:=true
#其他使用说明见官方文档
https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy
#可以进入/opt/ros/noetic/share/realsense2_camera对源码进行修改
运行orb_slam3
在运行程序之前,需要将ORB_SLAM3/Examples_Old/ROS/ORB_SLAM3/src/ros_rgbd.cc的接收话题名称修改
ros::NodeHandle nh;
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_rect_color", 100);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/aligned_depth_to_color/image_raw", 100);
typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::Image, sensor_msgs::Image> sync_pol;
message_filters::Synchronizer<sync_pol> sync(sync_pol(10), rgb_sub,depth_sub);
sync.registerCallback(boost::bind(&ImageGrabber::GrabRGBD,&igb,_1,_2));
之后编译运行代码
roslaunch realsense2_camera rs_rgbd.launch align_depth:=true
#一定加上align_depth:=true这样深度图和可见光才能对齐
rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/RealSense_D435i.yaml
RGBD稠密建图
编译
#加入ROS环境
gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/cxl/workspace/ORB_SLAM3_Dense_YOLO/Examples/ROS/YOLO_ORB_SLAM3_with_pointcloud_map
source ~/.bashrc
#编译
chmod +x build.sh
chmod +x build_ros.sh
./build.sh
./build_ros.sh
运行
roslaunch realsense2_camera rs_rgbd.launch align_depth:=true
roslaunch YOLO_ORB_SLAM3_with_pointcloud_map camera_topic_remap.launch
rosrun ORB_SLAM3_Dense_YOLO RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/RealSense_D435i.yaml
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我使用Jekyll运行博客,并认为我会解决RedcarpetMarkdown解释器,因为它是developedandusedbyGitHub.好吧,我只是碰巧遇到了一个错误,去检查问题,然后foundthis.Maintainersays,"Asyouprobablyhavenoticed(harharharhar)Idon'thavetimetomaintainRedcarpetanymore.It'snotapriorityforme(IfindMarkdownthoroughlyboring)andit'snotapriorityforGitHub,becausewenolong
我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da
我们正在使用Vagrant进行部署,我们最终希望将此集群部署在Rackspace上。vagrant-rackspace插件是一个自然的选择,但它有一些错误,这些错误未包含在最新的0.1.1版本中(notablythatvagrantprovisiondoesn'twork)。我已经在我的personalfork中解决了这个问题通过合并其他人的工作来对存储库进行改造。是否可以从github安装vagrant插件?显而易见的事情没有奏效:[unix]$vagrantplugininstallvagrant-rackspace--plugin-sourcehttps://github.com
我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack
我有一个使用Jekyll托管在GitHub上的静态网站。问题是,我真的不需要master分支,因为存储库唯一包含的是网站。这样我就必须gitcheckoutgh-pages,然后gitmergemaster,然后gitpushorigingh-pages。有什么简单的方法可以摆脱gh-pages分支并直接从master推送? 最佳答案 Theproblemis,Idon'treallyneedthemasterbranch,astheonlythingtherepositorycontainsisthewebsite.Isthere