rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml [rospack] Error: package 'ORB_SLAM3' not found
时间: 2025-04-06 14:12:06 浏览: 60
### 解决 ROS 中运行 ORB_SLAM3 出现的包未找到问题
在处理 `rosrun ORB_SLAM3` 报错提示“package not found”的情况下,通常是因为安装配置过程中某些依赖项缺失或者路径设置不正确。以下是可能的原因以及解决方案:
#### 1. **确认 ORB_SLAM3 是否成功编译**
如果 ORB_SLAM3 的源码尚未被正确编译,则可能导致无法识别该软件包。确保按照官方文档完成以下操作:
- 下载并解压 ORB_SLAM3 源码。
- 安装必要的依赖库(如 Eigen、Pangolin 和 OpenCV),这些可以通过 Ubuntu 软件包管理器或手动下载实现[^2]。
- 配置 CMakeLists 文件以适配本地环境。
验证命令如下:
```bash
cd ~/catkin_ws/src/
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3 && mkdir build && cd build
cmake ..
make -j$(nproc)
```
#### 2. **检查工作空间中的 package.xml**
ROS 使用 `package.xml` 来定义每个节点的信息。如果没有正确创建此文件或将它放置到错误目录下,可能会引发 “package not found” 错误。因此需确保以下几点:
- 存在一个名为 `ORB_SLAM3` 的子文件夹位于 `$CATKIN_WS/src/` 内部;
- 此文件夹包含有效的 `CMakeLists.txt` 及其他必要脚本。
可以尝试重新初始化整个 Catkin 工作区来修复潜在问题:
```bash
cd ~/catkin_ws/
rm -rf devel build
catkin_make
source devel/setup.bash
```
#### 3. **解决动态链接库丢失的问题**
当遇到 `/usr/bin/ld: 找不到 -lEigen3::Eigen` 类似警告时,说明系统未能定位至所需共享对象文件位置。这可通过调整 LD_LIBRARY_PATH 或者更新 pkg-config 设置加以修正:
```bash
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/path/to/eigen/share/pkgconfig
sudo ldconfig
```
另外也可以通过显式指定完整路径给 cmake 参数达到同样效果:
```bash
cmake .. -DEIGEN3_INCLUDE_DIR=/path/to/eigen/include/eigen3
```
#### 4. **加载自定义硬件支持模块 (可选)**
对于特定传感器设备比如 Intel RealSense D435i ,还需要额外集成其驱动程序以便于 SLAM 系统正常运作[^3]。遵循对应教程完成摄像头校准参数导入过程即可顺利启动应用实例。
---
### 提供一段 Python 测试代码用于调试目的
下面给出了一段简单的 python 脚本来帮助开发者快速检测当前环境中是否存在目标 rosnode 进程正在执行当中:
```python
import rospy
from std_msgs.msg import String
def check_node_status(node_name='Mono'):
try:
nodes = [n for n in rospy.get_published_topics() if node_name.lower() in str(n).lower()]
print(f"{len(nodes)} active {node_name} related topics detected.")
return True if len(nodes)>0 else False
except Exception as e:
print(e);return None
if __name__=='__main__':
rospy.init_node('test_orb_slam', anonymous=True)
status=check_node_status()
assert isinstance(status,bool),"Failed to determine the state of target node."
```
阅读全文
相关推荐


















