修改 orb-slam3 中的 ros_mono.cc 以使用 /camera/color/image_raw 话题发布的视频图像信息ros::NodeHandle nodeHandler;ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);12修改为ros::NodeHandle nodeHandler;// ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);ros::Subscriber sub = nodeHandler.subscribe("/camera/color/image_raw", 1, &ImageGrabber::GrabImage,&igb);123AI写代码然后修改 yaml 配置文件,编译运行即可。
时间: 2025-03-30 19:11:31 浏览: 62
### 修改 `ros_mono.cc` 订阅 `/camera/color/image_raw` 并调整 YAML 配置
#### 1. 修改 `ros_mono.cc` 文件
在 ORB-SLAM3 中,`ros_mono.cc` 是用于单目相机的 ROS 节点实现。要让该节点订阅 `/camera/color/image_raw` 主题,需修改代码中的主题名称。
以下是具体的修改方法:
```cpp
// 原始代码可能如下所示:
image_transport::ImageTransport it(nh);
image_transport::Subscriber sub = it.subscribe("/camera/0", 1, &MonoVO::GrabImage, (MonoVO*)&SLAM);
// 修改后的代码应改为:
image_transport::ImageTransport it(nh);
image_transport::Subscriber sub = it.subscribe("/camera/color/image_raw", 1, &MonoVO::GrabImage, (MonoVO*)&SLAM);
```
上述代码中,将原始的主题名 `/camera/0` 更改为 `/camera/color/image_raw`[^1]。
---
#### 2. 更新 YAML 配置文件
YAML 配置文件定义了相机参数以及 SLAM 系统的行为。对于 RGB-D 或单目相机的应用场景,通常需要编辑对应传感器类型的配置文件(如 `mono.yaml` 或其他自定义命名的 YAML 文件)。假设您正在使用单目相机模式,则可以参考以下步骤更新 YAML 文件的内容。
##### 示例 YAML 配置 (`mono.yaml`)
```yaml
# Camera calibration parameters
Camera.fx: 609.8435702629801 # Focal length in pixels along the x-axis
Camera.fy: 609.8435702629801 # Focal length in pixels along the y-axis
Camera.cx: 327.0229034423828 # Principal point offset in x direction
Camera.cy: 239.504298400879 # Principal point offset in y direction
# Image resolution
Camera.width: 640 # Width of image in pixels
Camera.height: 480 # Height of image in pixels
# Camera frames per second
Camera.fps: 30 # Frames per second
# Vocabulary file path
VocFile: ../Vocabulary/ORBvoc.txt
# Sensor type ("MONOCULAR", "STEREO", etc.)
Sensor: MONOCULAR # Specify sensor as monocular camera mode
# Other settings...
```
注意:以上参数仅为示例,请根据实际使用的摄像头校准结果替换这些值[^2]。
---
#### 3. 编译与运行
完成源码和配置文件的修改后,重新编译项目以应用更改。
##### 步骤说明
- **设置环境变量**
如果尚未将 ORB_SLAM3 的路径添加到 `ROS_PACKAGE_PATH`,请执行以下命令将其加入:
```bash
echo "export ROS_PACKAGE_PATH=\${ROS_PACKAGE_PATH}:/path/to/orb_slam3_ws/src/" >> ~/.bashrc
source ~/.bashrc
```
- **构建项目**
进入 ORB_SLAM3 的根目录并执行以下脚本:
```bash
cd /path/to/ORBSLAM3/
chmod +x build_ros.sh
./build_ros.sh
```
如果一切正常,应该不会遇到错误提示。如果有任何问题,请仔细检查 CMakeLists 和依赖项安装情况[^3]。
- **启动 ROS 节点**
启动之前确保有发布 `/camera/color/image_raw` 数据流的节点运行(例如 Realsense D435i 设备驱动程序),随后通过以下指令加载 Mono VO 节点:
```bash
roslaunch ORB_SLAM3 mono.launch vocab_path:=../Vocabulary/ORBvoc.txt settings_path:=../Examples/Monocular/mono.yaml
```
---
###
阅读全文
相关推荐



















