工程(十)——github代码ubuntu20.04在ROS环境运行单目和RGBD相机ORB-SLAM3稠密

这篇具有很好参考价值的文章主要介绍了工程(十)——github代码ubuntu20.04在ROS环境运行单目和RGBD相机ORB-SLAM3稠密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论交流一起学习。

加稠密建图:git@github.com:huashu996/ORB_SLAM3_Dense_YOLO.git

纯净版:git@github.com:huashu996/ORB_SLAM3.git

一. 坑的前言

orb-slam3的整个环境配置还是比较麻烦的,先将一些坑写在前面,供大家参考和避开这些坑。

1.1 主要配置

orb-slam3的配置要求还是很重要的,主要需要安装以下的第三方库和功能包

ubuntu 20.04

ROS noetic

Pangolin 0.6

Eigen 3

Opencv 4.2

usb_cam

1.2 Opencv的坑

其中opencv版本有比较严格的要求,建议先安装ROS中的cv_bridge和libopencv-dev,再安装和libopencv版本号一样的opencv库,这样可以避免opencv的版本冲突问题。

经过博主的多次实验,由于noekit的自带libopencv版本是4.2.0,如果安装opencv3会出现版本冲突使编译不通过。如果安装opencv4但不是4.2.0依然会产生冲突,但编译能够通过,但运行时会出现核心已转储的问题。所以直接安装和libopencv一样的版本。

1.3 Pangolin的坑

Pangolin不要直接选择最新的版本,而是安装0.6的版本,不然同样会出现编译问题。

1.4 核心已转储的坑

不少人在环境配置好和编译成功后,到最后一步运行时出现了核心已转储的问题。博主所遇到的核心已转储问题可以分为两种,一种是运行时闪一下viewer然后直接显示核心已转储,如下图所示。这种情况涉及到的因素主要为opencv的冲突问题以及pangolin的版本,需要重新安装一下。

orb-slam3稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam

另一种是运行一段时间出现核心已转储,如下所示,会出现New Map created的字样。这种问题处理比较简单,修改一下CMakelist文件。


New Map created with 118 points
段错误(核心已转储)

二、环境配置

博主默认大家已经安装好ubuntu,替换好镜像源,安装好ROS等一些最基本的操作,网上的资料也很多。下面直接从配置环境的难点去讲述。

2.1 Opencv库

orb-slam3所用到的opencv主要有两个地方,一个是ROS的cv-bridge数据格式转换,另一个是C++的库。根据1.2的叙述按如下顺序进行安装。

  1. cv_bridge


sudo apt-get install libopencv-dev
sudo apt-get install ros-noekit-cv-bridge
  1. opencv

安装过程看到libopencv版本是4.2.0,所以我们就去opencv官网找4.2.0的包,下载下来。

Releases - OpenCV

orb-slam3稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam
  • 安装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
orb-slam3稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam

2.2 Pangolin库

安装Pangolin 0.6(官网下载地址,不要下载最新master版,编译的时候可能有错误)

  1. 安装依赖项


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
  1. 编译安装


cd Pangolin 
mkdir build && cd build
cmake -DCPP11_NO_BOOST=1 ..
make
sudo make install
  1. 验证


cd ../examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin
#成功会弹出如下窗口
orb-slam3稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam

2.3 Eigen库

直接命令安装即可


sudo apt-get install libeigen3-dev

三.orb-slam3编译运行

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

3.1 编译前修改

(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

3.2 编译

经过上述修改后,再进行编译,大概率会通过


cd ORB_SLAM3
chmod +x build.sh
./build.sh

一定先编译build.sh通过后再编译ros版本


cd ORB_SLAM3
chmod +x build_ros.sh
./build_ros.sh

3.3 运行

3.3.1 单目

  1. 安装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
  1. 相机标定


#启动摄像头
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。

  1. 运行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
orb-slam3稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam

3.3.2 RGBD

  1. 配置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稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam
  1. 运行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
  1. 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

运行文章来源地址https://www.toymoban.com/news/detail-822785.html


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
orb-slam3稠密建图,智能环境感知工程代码调试,c++,视觉,计算机视觉,slam

到了这里,关于工程(十)——github代码ubuntu20.04在ROS环境运行单目和RGBD相机ORB-SLAM3稠密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu20.04 ROS 环境下使用velodyne激光雷达

    系统版本:ubuntu 20.04 ROS版本:noetic 激光雷达型号:velodyne VLP-16 网线接 PC/工控机 端口 将PC/工控机的网口配置为: ipv4,方式设置为手动 ip地址、掩码以及网关设置成下图 查看当前话题 其中 /velodyne_points 就是 激光雷达发布的点云消息。 终端输入rviz Fiex Frame 写入 velodyne 添加

    2024年02月08日
    浏览(63)
  • ubuntu20.04搭建ROS+UE4+airsim环境

    前两天搭建了ubuntu20.04下ue4+ROS+airsim环境,在这里记录一下,方便后面自己查阅。 主要过程参见链接:Ubuntu18.04搭建AirSim+ROS仿真环境_我只是一只自动小青蛙的博客-CSDN博客_airsim ros 我遇到的问题(根据引文中的标题): 1、github于epic账号绑定问题:需要在epic账号设置中绑定

    2024年02月10日
    浏览(49)
  • RK356x基于Ubuntu20.04搭建ROS开发环境

    CPU:RK356x 操作系统:arm64 Ubuntu20.04 1、首先确保开发板是可以联网的。

    2024年01月20日
    浏览(44)
  • ubuntu20.04_ROS中运行gazebo控制机器人模型报错

    1.无法启动类型为[controller_ manager/spawner]的节点:controller_ manager ERROR: cannot launch node of type [controller_manager/spawner]: controller_manager ROS path [0]=/opt/ros/noetic/share/ros ROS path [1]=/home/lym/catkin_ws/src ROS path [2]=/opt/ros/noetic/share 解决办法:安装controller_manager 2.控制器生成程序找不到预期的控

    2024年02月16日
    浏览(49)
  • Ubuntu20.04 ROS noetic中编译和运行LIO-SAM

    本文是对自己学习过程的一个记录和总结,如果内容有误,请大家指点,感谢。         本文是在已经安装好ROS环境中进行的,不需要提前安装其他库,只需按照步骤进行操作,便能完成LIO-SAM的编译和运行,并且每一步都有我执行时的截图进行参考。 1.【创建工作空间】

    2024年03月24日
    浏览(56)
  • Ubuntu20.04的ROS环境安装ORB-SLAM3详解

    视觉SLAM实验要在Ubuntu20.04系统上使用ROS跑ORB-SLAM3,熟悉一下特征点法的SLAM,把安装过程总结记录下来。 系统 版本 ubuntu 20.04 Pangolin 0.6 Eigen 3 Opencv 4.2 usb_cam 执行命令更新源 1、ROS简介 ROS全称Robot Operating System(机器人操作系统) ROS是适用于机器人的开源元操作系统 ROS集成了大

    2023年04月21日
    浏览(74)
  • 机器人学环境配置(VM-16 + Ubuntu-20.04 + ROS-noetic)

    目录 一、安装好 VMware Pro 16(基于win11) 1. 下载 2. 安装过程 二、成功配置Ubuntu20.04.6 1. 下载 2. 新建虚拟机进行配置 3. 安装操作系统镜像 4. 更改Ubuntu软件源  5. Windows与Ubuntu跨系统复制粘贴 三、成功配置与Ubuntu20.04对应的ROS 1. 按ctrl+alt+t打开终端并在其中依次输入以下代码 2

    2024年02月20日
    浏览(54)
  • ORB-SLAM3复现的详细过程——配置安装及ROS和脚本运行---Ubuntu20.04

    ORB-SLAM3代码下载地址:ORB-SLAM3源码下载 所有的操作都是在完成以下网址中的所有操作内容下进行的:Ubuntu系统安装之后首需要做的事情 本文是总结的比较完善和直接的过程。 其实在整个运行中也遇到了一些问题,也做了一些总结,记录在了文章 ORB-SLAM3复现过程中遇到的问题

    2024年02月09日
    浏览(66)
  • ubuntu20.04环境下安装运行Colmap+OpenMVS

      我创作这篇博客的初衷是因为我在ubuntu20.04环境下跑Colmap+OpenMVS这个算法框架的时候踩了很多坑,一方面是网上现在很多教程都是基于Windows环境下的,而Windows环境和Linux环境相比还是有很大的差异的;二是现在网上的很多教程基本很多步骤一带而过了,而往往这些一带而过

    2024年03月09日
    浏览(61)
  • Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)

    第一次运行,有些坑,然后告诉一下大家该如何自己解决的思路,毕竟每个人的实际运行环境不一样。 系统:联想Y7000,Ubunru20.04(已经安装ros noetic,推荐小鱼的一键安装ros)直接终端输入: 显卡驱动已经安装好,采用的GPU1050Ti 显卡安装,建议就用系统自带的安装方式(设

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包