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

news/2024/11/29 4:48:37/

来了!接着上篇,开始orb-slam3 的稠密回环建图实测(奥比中光Astrapro 相机)

老样子,先上效果图:

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

四、NX + Astrapro 相机+orb-slam3  稠密回环建图

首先小白老师分享的ORB-SLAM3的可回环的稠密地图版本,具体在这篇博客,下载但是却没有相关的具体实现教程,这里我们先使用 奥比中光Astrapro 两款相机进行配置实现

4.1 配置环境

其实与orb-slam2的环境配置一样,使用的仍然是pagolin0.5,和opencv3.2.0版本(3.4.x也可以),pcl1.8.1+vtk7.1.1 这里不重复,具体配置可以去我之前写的实测 (二),里面的依赖使用的是相同的配置。

4.2 安装编译

(1)下载源码

链接如下:http://t.csdn.cn/nMOZx

(2)修改pointcloudmapping.cc

打开src / pointcloudmapping.cc,110-112行修改如下,将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循环里的最后(200-201之间)加入下面一行,用于保存点云地图,同时在开头增加 #include <pcl/io/pcd_io.h>

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


(3)修改camkelist.txt

打开CMakeLists.txt ,将48行左右的 “ find_package( PCL 1.12 REQUIRED ) ”中的1.12改为1.8,修改后如下: 

find_package( PCL 1.8 REQUIRED )

(4)开始ubuntu下编译  

打开build.sh,在 make 后 加上 -j4 ,提高编译速度,然后开始编译:

cd ORB_SLAM3_detailed_comments-dense_map_newchmod +x build.sh./build.sh

(5)ROS下编译 

打开CMakeLists.txt,增加下面4行:

find_package(Eigen3 3.1.0 REQUIRED)
find_package(Pangolin REQUIRED)
find_package(PCL REQUIRED)    //新增这一行include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${PROJECT_SOURCE_DIR}/../../../include/CameraModels
${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus
${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_SLAM3.so
-lboost_system
)

修改 Examples/ROS/ORB_SLAM3/src/ros_rgbd.cc的topic

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/depth_registered/image_raw", 1);

开始编译:

添加环境配置
gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/nx/你自己的路径/Example/ROS
source ~/.bashrc开始编译
chmod +x build_ros.sh
./build_ros.sh

编译成功后,配置所需的yaml文件

4.3 开始试验


(1)启动相机

sudo su  //不运行su命令,直接打开会丢失深度信息
souce devel setup.bash
roslaunch astra_carma astrapro.launch

(2)稠密建图

rosrun ORBSLAM3 RGBD Vocabulary/ORBvoc.txt Examlpe/ROS/ORB_SLAM3/astrapro.yaml


http://www.ppmy.cn/news/234517.html

相关文章

【面向对象设计原则】SOLID

单一职责原则&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09; 描述 There should never be more than one reason for a class to change。仅有一种原因引起类的改变。一个类只负责一个职责 特点 一个类负责一个单一职责&#xff0c;避免职责上的…

C语言7:输入若干个学生的成绩,统计出平均成绩

在程序编辑区编写程序&#xff0c;给定程序功能是: 从键盘上输入若干个学生的成绩&#xff0c;统计出平均成绩&#xff0c;并输出低于平均分的学生成绩&#xff0c;用输入负数结束输入。 例如输入: 70 80 90 -1 输出: ave 80.00 --------OUTPUT----------- 70.0 程序有…

「HTML和CSS入门指南」td 标签详解

什么是 td 标签? 在 HTML 中,td 标签用于创建表格中的普通单元格。每个单元格都包含了一个数据值,可以包含文本、图像、链接等内容。 td 标签的基本语法 以下是 td 标签的基本语法: <table><tr><td>单元格1</td><td>单元格2</td><…

逍遥自在学C语言 | for循环详解

前言 C语言中的循环结构时&#xff0c;for循环是最常用的一种。它允许重复执行一段代码&#xff0c;直到满足特定条件为止。 本文将详细介绍for循环的用法&#xff0c;并提供相关的可编译运行的C代码示例。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直教我们C语…

联想win11无线鼠标连接不上

问题&#xff1a;充了电,无法连接上 解决:将壳中的电池拿下来&#xff0c;重装一下就好(注意别装反了&#xff01;)

联想小新笔记本关机后鼠标灯仍保持常亮解决方法

开机时按F2Fn按键进入bios 界面/F10也可以进入&#xff0c;F10 按住后选择setup即可。 配置界面 将低功耗模式下持续给usb设备供电选项关闭&#xff0c;设置为disable 即可

联想小新3.0蓝牙鼠标连接win10系统

等待前蓝灯快速闪在放松。 蓝灯灭。

联想E14笔记本 不插鼠标出现鼠标自动漂移乱串

环境&#xff1a; 电脑&#xff1a;联想 ThinkPad E14 系统&#xff1a;Windows 10 专业版 64位 问题描述&#xff1a; 联想E14 不插鼠标出现鼠标自动漂移乱串 解决方案&#xff1a; 1.安装最新触控面板驱动&#xff08;未解决&#xff09; 2.卸载停用触控面板&#xff…