实测 (二)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图

这篇具有很好参考价值的文章主要介绍了实测 (二)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开发环境:NX+Ubuntu18.04+ROS-melodic

接着上篇,开始orb-slam2稠密回环建图

二、NX + D435i + ORB-SLAM2  稠密回环建图

先上效果图

实测 (二)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图,NX实测,ubuntu,嵌入式硬件,计算机视觉,c++

 这里感谢大神提供一个可回环的稠密地图版本:

https://github.com/xiaobainixi/ORB-SLAM2_RGBD_DENSE_MAP.git

2.1 安装依赖(和orb-slam2环境配置一样,如果已经配置过,可以跳到pcl安装)

(1)Pangolin(推荐0.5版本)

//安装依赖:
sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

//安装编译
git clone https://github.com/stevenlovegrove/Pangolin/tree/v0.5.git    
cd Pangolin
mkdir build
cd build
cmake ..         
make
sudo make install

(2)opencv3.2.0(巨坑!!!)

如果直接使用ros自带的3.2.0版本,这里的安装就可以跳过了,后面ubuntu下编译和ros下编译都是引用usr/基本都没问题,当然你也可以源码安装在/usr/local下,步骤如下:

去官网下载源码然后解压,这里是默认安装在/usr/local下,如果安装其它版本(如opencv3.4.x)的时候想让两个版本共存,就更改安装位置,就把“ CMAKE_INSTALL_PREFIX=/usr/local/ .. ”中的/usr/local改为你自己的路径

但是后续ros下编译需要重新下载cv_bridge编译,否则会有两个版本的 .so文件冲突!!!(恶心的是:编译虽然warning,但是会通过,但是后面一运行就报错)

//安装一些依赖
sudo apt-get install libpng-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libopenexr-dev
sudo apt-get install libtiff-dev
sudo apt-get install libwebp-d
sudo apt-get install libgtk2.0-dev
sudo apt-get install libgtk-3-dev

//安装编译
cd opencv-3.2.0 
mkdir build  
cd build  
cmake -D CMAKE_BUILD_TYPE=Release OPENCV_ENABLE_NONFREE=ON  -DENABLE_PRECOMPILED_HEADERS=OFF -D OPENCV_GENERATE_PKGCONFIG=YES -D  CMAKE_INSTALL_PREFIX=/usr/local/ ..
make
sudo make install

(3)pcl1.8.1+vtk7.1.1

因为我们需要实现稠密点云,这是通过pcl库实现的,因此需要安装pcl,如果你的ros自带了pcl1.8,那么恭喜你,你又可以跳过安装了,如果不放心,可以重新源码安装:

这里小编一开始使用了如下的配置:vtk8.2.0+pcl1.12.0,但是在编译pcl1.12.0的时候报错了:“c++: fatal error: no input files” 原因是cmakelist.txt中C++的标准不对(pcl1.9开始就需要C++14的标准了),可是nx板也支持c++14,这里具体不知道什么原因,最后还是用原始的pcl1.8.1吧,vtk6.3 或者 7.1.1(推荐):

//安装依赖
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui 
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libpcap-dev
sudo apt-get install libflann1.9 libflann-dev   //ubuntu18.04用1.9;ubuntu16.04用1.8
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev 
sudo apt-get install mono-complete
sudo apt-get install libopenni-dev libopenni2-dev
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev

如果需要vtk6.3:

sudo apt-get install vtk6 libvtk6.3 libvtk6-dev libvtk6.3-qt libvtk6-qt-dev 

如果需要vtk7.1.1,去官网下载7.1.1版本的源码、解压:

cd VTK-7.1.1
mkdir build 
cd build
cmake ..
make -j4
sudo make install

若中间报错:Found unsuitable Qt version “” from NOTFOUND, this code requires Qt 4.x
解决办法:sudo apt-get install qt4-default

pcl1.8.1官网源码下载,解压后:

cd pcl-1.8.1
mkdir build 
cd build
cmake -DCMAKE_BUILD_TYPE=None ..
make -j4
sudo make install

若测试程序的时候,执行可执行文件时不显示点云并报错缺少lib.so.1文件,则
1)打开/etc/ld.so.conf文件并在第二行粘贴以下内容后保存
/usr/local/lib/libvtkglew-7.1.so.1
2)sudo ldconfig
然后在测试程序下重新cmake和make即可

2.2 安装编译ORB-SLAM2_RGBD_DENSE_MAP.git

(1)ubuntu下编译: 

git clone https://github.com/xiaobainixi/ORB-SLAM2_RGBD_DENSE_MAP.git

下载后,先将正常版本的Vocabulary文件夹复制到ORB-SLAM2_RGBD_DENSE_MAP下,打开camkelist.txt ,将44行左右的 “ find_package( PCL 1.7 REQUIRED ) ”中的1.7改为1.8,修改后如下: 

find_package( PCL 1.8 REQUIRED )

将camkelist.txt 的 -march=native 删除,(包括 DBoW2 和 g2o 以及 ros 下的cmakelist.txt) 如下:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3  ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall  -O3 ")

打开include / pointcloudmapping.h,49行“bool loopbusy;”修改如下:

bool loopbusy = false;

打开src / pointcloudmapping.cc,86-88行修改如下,将rgb的颜色修改正确

p.b = color.ptr<uchar>(m)[n*3+2];
p.g = color.ptr<uchar>(m)[n*3+1];
p.r = color.ptr<uchar>(m)[n*3];

在void PointCloudMapping::viewer() 中的while循环后(174-175之间)加入下面一行,用于保存点云地图,同时在开头增加 #include <pcl/io/pcd_io.h>

pcl::io::savePCDFileBinary( "vslam.pcd", *globalMap );

开始ubuntu下编译 

cd ORB-SLAM2_RGBD_DENSE_MAP
chmod +x build.sh
./build.sh

(2)ROS下编译

由于我们需要使用的d435i的RGB信息以及深度信息,因此我们将上一篇中配置的rs_camera.launch文件中的以下imu参数修改为false

 <arg name="enable_gyro"         default="false"/>
 <arg name="enable_accel"        default="false"/>

将 ORB-SLAM2_RGBD_DENSE_MAP/Examples/ROS/ORB_SLAM21/src/ros_rgbd.cc中的topic修改为D435i发布的rgb和对齐后的depth信息

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 100);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/aligned_depth_to_color/image_raw", 100);

打开CMakeLists.txt,将第3行和第6行的opencv、pcl位置就直接删了,并增加下面5行:

find_package(PCL REQUIRED)    //新增这一行

include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${Pangolin_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}     //新增这一行
)

add_definitions(  ${PCL_DEFINITIONS} )     //新增这一行
link_directories(  ${PCL_LIBRARY_DIRS} )  //新增这一行

set(LIBS 
${OpenCV_LIBS} 
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so
${PROJECT_SOURCE_DIR}/../../../lib/libopencv_core3.so
-lboost_system   //新增这一行
)

开始编译:

添加环境配置
gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/nx/你自己的路径/Example/ROS
source ~/.bashrc

开始编译
chmod +x build_ros.sh
./build_ros.sh

如果编译过程中报错:“libboost_filesystem.so :error adding symbols: file in wrong format” 以及“libboost_system.so :error adding symbols: file in wrong format”和“lib/libopencv_core3.so :error adding symbols: file in wrong format” 需要我们将系统自带的3个文件替换到ORB-SLAM2_RGBD_DENSE_MAP/lib 下:

首先删掉lib下的3个 libboost_filesystem.so,libboost_system.so 和 lib/libopencv_core3.so“

找到系统文件所在位置,并复制到lib下,例如针对:libboost_filesystem.so

locate boost_filesystem
sudo cp /usr/lib/aarch64-linux-gnu/libboost_filesystem.so /home/nx/ORB-SLAM2_RGBD_DENSE_MAP/lib

然后再  ./build_ros.sh

编译成功后,我们开始配置D435i所需的yaml文件,修改Asus.yaml中的内参和camera.bf。需要完整版的yaml文件,可以在评论区留下联系邮箱

(3)开始试验

打开相机:

cd realsense_ws
source devel setup.bash
roslaunch realsense2_camera rs_camera.launch 

稠密建图运行:

rosrun ORBSLAM21 RGBD Vocabulary/ORBvoc.bin Examlpe/ROS/ORB_SLAM21/Asus.yaml

下一篇我们将使用奥比中光的Astrapro 相机实现orb-slam2稠密回环,未完待续~文章来源地址https://www.toymoban.com/news/detail-719297.html

到了这里,关于实测 (二)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • d435i 相机和imu标定

    使用 imu_utils 功能包标定 IMU,由于imu_utils功能包的编译依赖于code_utils,需要先编译code_utils,主要参考 相机与IMU联合标定_熊猫飞天的博客-CSDN博客 Ubuntu20.04编译并运行imu_utils,并且标定IMU_学无止境的小龟的博客-CSDN博客 1.1 编译 code_utils 创建工作空间 1.1.1 修改 CMakeLists.txt 文件

    2024年02月09日
    浏览(60)
  • Realsense d435i驱动安装、配置及校准

    写在前面 本文是在ubuntu20.04下安装,其它版本大同小异。可能出现的问题,主要由各自安装相关库版本不一致导致,故问题不一,但一般很好解决,正常情况下不会出现。 Intel Realsense 深度摄像头D435i将D435强大的深度感知能力和惯性测量单元(IMU)结合起来,可满足RGBD、单目、

    2024年02月02日
    浏览(50)
  • ROS D435I识别目标并获取深度数据

    使用D435I相机,并基于ros获取到彩色图像和匹配后的深度数据,通过OPENCV对彩色图像进行目标识别,得到目标所在的像素范围,随后得到深度数据 重点在于:转换ros图像数据到opencv格式,得到目标像素点的实际深度值 d435i启动与修改 使用上述指令启动d435i,可以在里面进行分

    2024年02月10日
    浏览(47)
  • intel realsense d435i相机标定中文文档

    此文档参考了官方的英文文档,原地址面向英特尔®实感™深度摄像头的 IMU 校准工具 (intelrealsense.com) IMU概述:惯性测量单元(imu)通常由加速度计组成,加速度通常以国际系统(SI)的米/秒为单位输出平方(m/s^2)和陀螺仪,陀螺仪通常以SI单位测量角速度弧度/秒(rad/s)。英特尔Real

    2024年02月09日
    浏览(51)
  • 使用D435i相机录制TUM格式的数据集

    本文写于2023年3月14日。 D435i相机的rgb图像与depth图像的像素没有对齐,在此记录一下如何像素对齐 Ubuntu18.04 + ROS melodic 这一步需要使用 InterRealSenseD435i SDK2 ,可以参考此链接安装。 打开 Intel RealSense Viewer 。设置 Depth Stream 以及 Color Stream 的图像分辨率为 640 × 480 ,设置采集帧率

    2024年02月09日
    浏览(50)
  • 【D435i深度相机YOLO V5结合实现目标检测】

    参考:Ubutntu下使用realsense d435i(三):使用yolo v5测量目标物中心点三维坐标 欢迎大家阅读2345VOR的博客【D435i深度相机YOLO V5结合实现目标检测】🥳🥳🥳 2345VOR鹏鹏主页: 已获得CSDN《嵌入式领域优质创作者》称号👻👻👻,座右铭:脚踏实地,仰望星空🛹🛹🛹 本文章属于

    2024年02月08日
    浏览(78)
  • python实现d435i深度相机测量两点之间的距离

    本文介绍python方法实现intel公司realsense系列d435i深度相机测量彩色图像上两点之间的距离。 原理很简单,就是将相机获得的彩色图像流与深度流对齐,这样彩色图像上的每个像素就会对应一个深度值,作为z坐标,然后通过相机内参获得该像素的x坐标和y坐标。我们获得的x、

    2024年02月16日
    浏览(39)
  • ROS编译D435i过程中的问题及解决

    编译出现第一个问题 `-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ – ~~ traversing 5 packages in topological order: – ~~ - realsense2_camera_msgs (plain cmake) – ~~ - realsense2_description (plain cmake) – ~~ - ddynamic_reconfigure – ~~ - realsense2_camera (plain cmake) – ~~ - usb_cam – ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    2023年04月08日
    浏览(51)
  • Ubuntu 20.04 Intel RealSense D435i 相机标定教程

    报错:sumpixel_test.cpp:2:10: fatal error: backward.hpp: 没有那个文件或目录,将sumpixel_test.cpp中# include \\\"backward.hpp\\\"改为:#include “code_utils/backward.hpp”。 报错 创建rs_imu_calibration.launch 找到realsense-ros包,进入/catkin_ws/src/realsense2_camera/launch(路径仅供参考),复制其中的rs_camera.launch,并重

    2024年01月16日
    浏览(48)
  • ORB_SLAM3 ROS编译及使用D435I运行

    本文介绍ORB_SLAM3编译、运行中遇到问题,尤其涉及到ORB_SLAM3 ROS编译遇到的问题。最后通过使用D435I完成在室内环境下运行。 本文运行环境在Ubuntu20.04 + ROS noetic。 一、ORB_SLAM3 依赖安装 ORB_SLAM3 依赖的安装,有同学喜欢上来就baidu,按照别人介绍的安装,这样做大多数时候会出现

    2024年02月03日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包