vslam 14 讲ch5 编译joinMap会出现由于vector使用eigen会导致core dump

问题现象

在学习高翔vslam 十四讲编译joinMap发现运行的时候会出现Segmentation fault (core dumped)
刚开始怀疑是编译的问题,确认本机的pcl已经安装完好,关于pcl的安装真的是一把雪一把泪,我刚开始安装这个链接来安装,发现还是不行

后面把源改成了清华,安装下面的这个教程就安装好了
https://blog.youkuaiyun.com/yingmai7741/article/details/86531850

后面一想,能够编译通过,肯定是代码的问题,后面一直debug,发现了问题所在,其主要为vector包含了一个数组类型为Eigen::Isometry3d,会导致core dump,下面为一个演示:

int main( int argc, char** argv )
{
vector<Eigen::Isometry3d> poses;  
Eigen::Isometry3d T1=Eigen::Isometry3d::Identity();
for(int i=0;i<5;++i)
{
	cout<<"i="<<i<<endl;
	poses.push_back(T1);
}

上述的代码如果core dump的坏会报错:

joinMap: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = double; int Size = 16; int MatrixOrArrayOptions = 0]: Assertion `(internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
Aborted (core dumped)

错误的意思我没太理解,反正就是说eigen适配c++11的STL vector容器有问题,需要加一些东西使用,链接如下

使用Eigen库和stl容器时遇到问题
英文的原文地址为:
http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html

按照上述的方法,可以在头文件部分添加:

EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::Isometry3d)

或者使用的时候加上,见链接

vector<Eigen::Isometry3d, Eigen::aligned_allocator<Eigen::Isometry3d>> poses

这样,问题就修复了,可以开心的跑点云文件啦!!!
在这里插入图片描述

### 集成YOLO V5VSLAM进行目标检测与定位 #### 创建ROS工作空间并配置YOLOv5环境 为了实现YOLO v5VSLAM的集成,在Ubuntu 18环境中首先需要创建一个专门用于此项目的ROS工作空间[^1]: ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash ``` 接着按照官方指南安装依赖项以及克隆YOLOv5仓库至`src`目录下。 #### 安装必要的Python库和支持工具 确保已安装PyTorch和其他必需的支持包,这些可以通过pip来完成: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu pip install -r requirements.txt ``` 上述命令会读取位于YOLOv5项目根文件夹中的requirements.txt文档以获取所有所需的Python模块列表。 #### 整合D455相机数据流 对于Intel RealSense D455摄像头的数据采集部分,需利用realsense-ros驱动程序发布图像话题。这一步骤涉及设置launch文件以便启动节点并将RGB-D传感器的信息传递给后续处理阶段: ```xml <node pkg="realsense2_camera" type="realsense2_camera_node" name="camera"> <!-- 参数配置 --> </node> ``` #### 修改YOLOv5订阅的话题名称 调整YOLOv5源码里的image topic路径参数,使其能够监听由RealSense发布的视频帧序列。通常是在`detect.py`或其他负责推理过程的主要脚本内指定输入源为ROS消息队列形式而不是静态图片或本地视频文件。 #### 将YOLOv5嵌入到ORB_SLAM2框架中 考虑到ORB_SLAM2是一个广泛使用的视觉里程计解决方案,可以考虑将其作为基础架构的一部分来进行扩展。具体做法可能包括但不限于修改前端特征提取器使之兼容深度学习模型输出的结果;或者直接替换原有的追踪算法组件而保留地图构建逻辑不变[^2]。 通过以上步骤可以在一定程度上达成YOLO v5VSLAM系统的初步融合,从而实现在未知场景下的实时物体识别及位姿估计功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值