视觉SLAM十四讲 报错ch12: segmentation fault (core dumped) ./pointcloud_mapping

本文详细解析了视觉SLAM十四讲中./pointcloud_mapping遇到的Segmentation Fault问题,归因于Eigen库的内存对齐需求未满足。通过提供解决方案,即使用Eigen::aligned_allocator确保向量内存对齐,帮助开发者避免此类错误。

视觉SLAM十四讲 报错ch12/pointcloud_mapping: segmentation fault core dumped ./pointcloud_mapping

1. 问题

编译高博的视觉SLAM十四讲ch12的./pointcloud_mapping没有问题,但是运行的时候出现错误:

$ ./pointcloud_mapping
[1]    863 segmentation fault (core dumped)  ./pointcloud_mapping

2. 原因

segmentation fault即段错误,常常在访问不可访问的内存或越界时出现,更多的原因。在这里,问题出在Eigen,也就是代码./pointcloud_mapping中的:

	vector<Eigen::Isometry3d> poses;         // 相机位姿

我们知道EIGEN是非常强大的C+

### 问题分析 用户在尝试运行 `run_rgbd_mapping.sh` 脚本时遇到了错误,提示 `无法访问 './run_rgbd_mapping.launch': 没有那个文件或目录`。同时提到执行 `chmod +x` 失败,这表明目标路径下不存在预期的脚本文件或 `.launch` 文件。 根据引用内容中提供的信息,用户可能没有正确设置 ORB_SLAM3_ROS 的路径或未完成必要的构建步骤[^1]。例如,在启动 ROS launch 文件前,需要确保相关脚本和配置文件已正确生成,并放置在项目目录中的指定位置。 --- ### 可能原因及解决方法 #### 1. **路径错误或文件缺失** - 确认当前终端所在的路径是否与脚本文件一致。使用 `ls` 命令检查是否存在 `run_rgbd_mapping.sh` 和 `launch/orb_slam_rgbd_mapping.launch` 文件。 - 如果文件确实缺失,可能是克隆仓库后未进行正确的编译或配置。建议重新检查项目的 `README.md` 文件,确认所有依赖项已安装,并按照说明完成编译流程。 #### 2. **权限不足导致 chmod 失败** - 执行 `chmod +x` 需要对目标文件具有写权限。若系统提示权限不足,可尝试使用 `sudo` 提权: ```bash sudo chmod +x ./run_rgbd_mapping.sh ``` - 若仍然失败,检查文件系统是否挂载为只读模式,或目标文件被锁定。 #### 3. **ROS launch 文件路径配置错误** - 在 `run_rgbd_mapping.sh` 中调用的 `.launch` 文件路径可能配置错误。应检查脚本内容,确认以下命令是否正确指向实际存在的 `.launch` 文件: ```bash roslaunch orb_slam3_ros orb_slam_rgbd_mapping.launch ``` - 若路径不正确,需手动修改脚本中的 `roslaunch` 命令以匹配实际文件结构。 #### 4. **未正确编译 ROS 包** - 在运行任何 `.sh` 脚本之前,必须确保 ROS 包已成功编译。进入工作空间并执行: ```bash cd ~/catkin_ws catkin_make source devel/setup.bash ``` --- ### 示例修正操作 假设用户位于 `ORB_SLAM3_ROS-main` 目录下,但找不到 `run_rgbd_mapping.sh` 文件: ```bash # 检查当前目录下的文件 ls # 如果没有找到 run_rgbd_mapping.sh,则检查 scripts 或其他子目录 ls scripts/ # 若脚本在 scripts 目录下,进入该目录后再执行 cd scripts/ chmod +x ./run_rgbd_mapping.sh sudo bash ./run_rgbd_mapping.sh ``` 如果发现 `.launch` 文件不在 `launch/` 目录中,应编辑 `run_rgbd_mapping.sh` 文件,修正 `roslaunch` 参数指向正确的 `.launch` 文件位置。 --- ### 总结 该问题的核心在于路径配置错误或文件缺失,导致无法正常执行脚本。通过验证文件存在性、修正路径、赋予执行权限以及确保 ROS 包已正确编译,可以有效解决此问题。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值