从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(五):稠密点云建图

本文涉及的产品
资源编排,不限时长
简介: 从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(五):稠密点云建图

1 下载稠密点云工程

2 修改工程

2.1 增加RGB点云

2.2 增加点云保存功能

3 编译工程

3.1 普通模式

3.2 ROS模式

4 测试工程

4.1 普通模式

4.2 ROS模式

前文:

从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(一):安装与配置

从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(二):相机测试与标定

从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(三):使用USB相机运行ORBSLAM

从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(四):ORBSLAM评估工具EVO的使用


特别感谢:https://www.jianshu.com/p/5e7b8358893f提供的指导

1 下载稠密点云工程

cd pointCloud
git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git

将原 ORB SLAM2 中的 Vocabulary及其内ORBvoc.txt.tar.gz拷贝到pointCloud的ORB_SLAM2_modified 文件夹下,删除ORB_SLAM2_modified/Thirdparty/DBoW2/build 和 ORB_SLAM2_modified/Thirdparty/g2o/build

2 修改工程

2.1 增加RGB点云

若不进行修改,生成的稠密点云只有灰度,修改步骤如下:

1.在Tracking.h中声明RGB矩阵

Frame mCurrentFrame;
cv::Mat mImRGB; //new declared
cv::Mat mImGray;

2.在Tracking.cc中定义RGB矩阵

cv::Mat Tracking::GrabImageRGBD(const cv::Mat &imRGB,const cv::Mat &imD, const double &timestamp)
{
mImRGB = imRGB;   // new
mImGray = imRGB;
......

3.在Tracking.cc中定义RGB点云映射

mpPointCloudMapping->insertKeyFrame( pKF, this->mImGray, this->mImDepth );//change the mImGray to mImRGB as next row
mpPointCloudMapping->insertKeyFrame( pKF, this->mImRGB, this->mImDepth );// new

2.2 增加点云保存功能

1.修改pcl

sudo gedit ORB_SLAM2_modified/src/pointcloudmapping.cc

加入头文件

#include <pcl/io/pcd_io.h>

在void PointCloudMapping::viewer() 函数中加入保存地图的命令:

...
for ( size_t i=lastKeyframeSize; i<N ; i++ )
{
    PointCloud::Ptr p = generatePointCloud( keyframes[i], colorImgs[i], depthImgs[i] );
    *globalMap += *p;
}
pcl::io::savePCDFileBinary("vslam.pcd", *globalMap);   // new
...

2.查看pcd点云文

sudo apt-get install pcl-tools
pcl_viewer vslam.pcd

3 编译工程

3.1 普通模式

cd ORB_SLAM2_modified
./build.sh

3.2 ROS模式

1.配置ROS路径

sudo vi ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/Project/SLAM/ORBSLAM2/ORB_SLAM2/pointCloud/ORB_SLAM2_modified/Examples/ROS
source ~/.bashrc

2.修改ROS CMakeLists.txt

即参照 ORB_SLAM2_modified/CMakeLists.txt 文件,把 PCL 相关的设置添加到 ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/CMakeLists.txt 文件中。


具体而言,如下:

...
find_package(Eigen3 3.1.0 REQUIRED)
find_package(Pangolin REQUIRED)
find_package( PCL 1.7 REQUIRED )    ####### 1
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../../../
${PROJECT_SOURCE_DIR}/../../../include
${Pangolin_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}  ####### 2
)
add_definitions( ${PCL_DEFINITIONS} )   ####### 3
link_directories( ${PCL_LIBRARY_DIRS} ) ####### 4
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
${PCL_LIBRARIES} ####### 5
)
...

4 测试工程

4.1 普通模式

首先对 rgbd_dataset_freiburg1_xyz 中的 RGB 文件和 Depth 文件进行匹配:

cd ~/Project/SLAM/ORBSLAM2/ORB_SLAM2/pointCloud/ORB_SLAM2_modified/dataSet/rgbd_dataset_freiburg1_xyz
python associate.py rgb.txt depth.txt  > association.txt

然后即可运行

cd /ORB_SLAM2_modified
./bin/rgbd_tum ./Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1.yaml ./dataSet/rgbd_dataset_freiburg1_xyz  ./dataSet/rgbd_dataset_freiburg1_xyz/association.txt

结果如下:

7468c3dd470042c0877ab9e871e3a25a.png

4.2 ROS模式

运行ROS前,要更改相机参数文件如下


image.png

// 终端A
roscore
// 终端B
rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1_ROS.yaml 
// 终端C
rosbag play --pause rgbd_dataset_freiburg1_xyz
.bag /camera/rgb/image_color:=/camera/rgb/image_raw /camera/depth/image:=/camera/depth_registered/image_raw

TUM1_ROS.yaml即为上述改过相机参数的标签文件;按空格键可以启动bag播放,最终建图效果与普通模式相同。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
3月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
165 1
|
3月前
|
Ubuntu Apache
Ubuntu20.04下一键安装ROS1 Noetic
本文提供了一个简化在Ubuntu 20.04系统上安装ROS1 Noetic过程的一键安装脚本工具,该脚本通过优化配置和使用清华大学镜像源,加速了国内用户的下载速度,并自动完成环境设置和依赖安装,同时提供了详细的使用说明和源码。
330 0
Ubuntu20.04下一键安装ROS1 Noetic
|
3月前
|
Ubuntu 机器人 虚拟化
Ubuntu22.04配置ROS2 Humble
这篇文章是关于如何在Ubuntu 22.04系统上配置ROS2 Humble的详细教程,包括虚拟机安装、环境配置、网络设置、软件源更换、ROS1和ROS2的安装步骤。
249 1
|
3月前
|
Ubuntu 机器人 网络安全
ubuntu22.04 SSH和ROS2控制下位机
本文介绍了如何在Ubuntu 22.04系统中通过SSH远程控制机器人服务器,包括安装SSH服务、配置防火墙规则、修改`/etc/hosts`文件、使用密钥认证等步骤,并提供了使用ROS2控制下位机的方法和一些常用指令。
81 0
|
4月前
|
Ubuntu 机器人 Shell
ubuntu20.04创建ros环境、创建rospackage
至此,我们已经详细讲解了在Ubuntu 20.04上创建ROS环境及ROS包的步骤。这为进一步的机器人软件开发奠定了坚实的基础。
185 1
|
4月前
|
Ubuntu 机器人 Shell
ubuntu20.04创建ros环境、创建rospackage
至此,我们已经详细讲解了在Ubuntu 20.04上创建ROS环境及ROS包的步骤。这为进一步的机器人软件开发奠定了坚实的基础。
60 1
|
4月前
|
Ubuntu 机器人 Linux
Ubuntu查看ros版本-linux查看ros版本
通过上述方法,您可以轻松检查和确认您的Ubuntu或其他Linux系统上安装的ROS版本,以确保您的机器人项目能够顺利进行。
1314 0
|
6月前
|
Ubuntu
【ubuntu】ubuntu20.04安装ros noetic(亲测有效,附操作步骤)
【ubuntu】ubuntu20.04安装ros noetic(亲测有效,附操作步骤)
|
6月前
|
Ubuntu
ubuntu20.04 ros-noetic 安装
ubuntu20.04 ros-noetic 安装
185 0
Ubuntu20.04下折腾ROS
Ubuntu20.04下折腾ROS
50 0