使用zed摄像头+ros kinetic跑ORB_SLAM2

本文详细介绍如何安装配置ZED-ROS-wrapper和ORB_SLAM2,实现单目与双目SLAM。从环境搭建到参数调整,涵盖ZED相机数据订阅、ORB_SLAM2编译运行及常见问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.zed-ros-wrapper安装

sudo apt-get install libpcl1
sudo apt-get install ros-kinetic-pcl-ros 
cd ~/catkin/src
git clone https://github.com/stereolabs/zed-ros-wrapper
cd ~/catkin
catkin_make zed-ros-wrapper
source ./devel/setup.bash

详情可以查看官方文档http://wiki.ros.org/zed-ros-wrapper

此外里面列举了该package中可以发布的话题:

  • Left camera
    • /zed/rgb/image_rect_color : Color rectified image (left RGB image by default).

    • /zed/rgb/image_raw_color : Color unrectified image (left RGB image by default).

    • 5.使用zed的其中的单个摄像头,进行单目slam/zed/rgb/camera_info : Camera calibration data.

    • /zed/left/image_rect_color : Color rectified left image.

    • /zed/left/image_raw_color : Color unrectified left image.

    • /zed/left/camera_info : Left camera calibration data.

  • Right camera
    • /zed/right/image_rect_color : Color rectified right image.

    • /zed/right/image_raw_color : Color unrectified right image.

    • /zed/right/camera_info : Right camera calibration data.

  • Depth and point cloud
    • /zed/depth/depth_registered : Depth map image registered on left image (by default 32 bits float, in meters).

    • /zed/point_cloud/cloud_registered : Registered color point cloud.

    • /zed/confidence/confidence_image : Confidence image.

    • /zed/confidence/confidence_map : Confidence image. (Floating Point values)

    • /zed/disparity/disparity_image : Disparity image

  • Tracking
    • /zed/odom : Absolute 3D position and orientaton relative to the odometry frame. (pure visual odometry)

    • /zed/map : Absolute 3D position and orientation relative to the map frame. (Sensor Fusion algorithm)

  • Inertial Data
    • /zed/imu/data : Accelerometer, Gyroscope and Orientation data in Earth frame.

    • /zed/imu/data_raw : Accelerometer and Gyroscope data in Earth frame.

其中标红色的是我本次所使用的两个topic,它们发布的信息格式为sensor_msgs/Image。

2.ORB_SLMA2安装文档

参考链接https://github.com/raulmur/ORB_SLAM2

  • 安装Pangolin

参考链接https://github.com/stevenlovegrove/Pangolin

安装依赖:C++11 、OpenGL、 Glew、CMake

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .

3.OPENCV,Eigen3

我之前安装好了,ros会自带,如果需要请自行安装。顺带一题,这个ORB_SLAM2不用依赖ros也是可以的,只是ros比较方便而已(废话)。

DBoW2 and g2o 在ORB_SLAM库里自带。

 

4.安装ORB_SLAM2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

执行./build.sh中会安装DBoW2 and g2o

不过我电脑出现一个问题,在make -j时,执行一半电脑会卡死。于是我将build.sh文件中的-j删除就顺利安装了。有朋友知道这个问题可以留言,让我学习学习。

5.编译ros-example节点

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
chmod +x build_ros.sh
./build_ros.sh

在这里也会出现编译错误”/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol “的问题,我们需要在/home/teun/ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeList.txt文件里添加一句:

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
-lboost_systeml 或者 -lboost_system
)

那么我们就安装完成了。

5.使用zed的其中的单个摄像头,进行单目slam

首先我们打开文件夹/home/xp/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2,可以看到编译好的几个可执行文件

如果没有看到那就没有编译好。

我们打开src中的ros_mono.cc,将里面的订阅话题改为zed发布的话题:

    ros::Subscriber sub = nodeHandler.subscribe("/zed/left/image_raw_color", 1, &ImageGrabber::GrabImage,&igb);

我使用的是左摄像头数据,当然你们选择什么都可以。这里我是用的zed,你们可以用电脑自带的摄像头也是ok的,不过你需要将其rgb数据给发布出来。

另外更改在目录/home/xp/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2下Asus.yaml里的信息,这里是摄像头的内参等信息。

摄像头发布的分辨率和帧率可以在zed.launch文件中查看!!

我们可以直接使用zed-SDK里对zed进行标定的参数。标定参数在/usr/local/zed/settings文件夹里。将信息填入Asus.yaml里。

当然,你需要先安装ZED-SDK,如果使用自己的摄像头也需要自己进行标定。

更改程序后需要重新./build_ros.sh编译!!!!!!!!!!!!!!

6.运行实现单目slam

roslaunch zed_wrapper zed.launch

rosrun ORB_SLAM2 Mono /home/xp/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xp/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml 

如果是双目,你需要降低分辨率和帧率进行测试,不然会崩掉的。

roslaunch zed_wrapper zed.launch

rosrun ORB_SLAM2 Stereo /home/xp/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xp/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/EuRoC.yaml true

结果良好,点云图为稀疏图,双目效果不如单目,估计是双目对电脑性能要求太高吧!有问题可以留言讨论。

<think>嗯,用户想了解如何使用ORB-SLAM2进行室外地图构建,特别是教程和配置方法。首先,我需要回忆一下ORB-SLAM2的相关知识,尤其是关于室外建图的部分。根据之前提供的引用,特别是引用[1]和[3],ORB-SLAM2支持双目相机和RGB-D相机,而室外环境下可能更适合双目相机,因为RGB-D在室外可能受光照影响较大。 首先,用户可能需要知道硬件要求。ORB-SLAM2在室外建图需要双目摄像头,比如ZED或者Bumblebee,这些设备在室外有较好的表现。然后,软件环境方面,Ubuntu 16.04或18.04,ROS Kinetic或Melodic,这些是常见的配置。接下来是安装步骤,需要从GitHub克隆ORB-SLAM2的仓库,安装依赖项,比如Pangolin、OpenCV、Eigen3等。编译的时候可能需要注意第三方库的修改,比如在引用[2]中提到的修改ros_rgbd.cc代码,不过用户是室外双目,可能需要调整其他部分。 然后,配置参数部分,用户需要标定相机,生成正确的配置文件,比如EuRoC.yaml或自定的标定文件。在运行的时候,可能需要使用ROS功能包,比如orbslam2_pointcloud_mapping,这个在引用[1]中提到,用于稠密点云构建。此外,室外环境下可能需要调整特征点数量或者闭环检测的参数,以提高鲁棒性。 可能遇到的问题包括如何安装依赖库,如何处理编译错误,比如OpenCV版本不兼容,或者ROS包配置错误。还有如何实际运行建图,可能需要启动相机节点和ORB-SLAM2节点,保存生成的地图。另外,用户可能关心如何优化建图效果,比如使用IMU融合或者调整点云密度,如引用[3]提到的系统框架中的LocalMapping和LoopClosing线程的作用。 最后,生成相关问题时,需要考虑用户可能进一步的需求,比如硬件选择、参数优化、点云处理、与其他传感器的融合,以及实际应用案例。需要确保回答覆盖了安装、配置、运行和优化的各个方面,并且引用正确的参考资料,比如引用[1]中的ROS功能包和引用[3]中的系统框架说明。</think>### ORB-SLAM2 室外建图教程及配置方法 #### 1. 系统环境与依赖项安装 ORB-SLAM2 支持双目相机和 RGB-D 相机的室外建图,但**双目相机更适用于光照变化大的室外场景**[^3]。 **硬件要求**:双目摄像头(如 ZED、Bumblebee)、计算能力较强的 GPU(如 NVIDIA Jetson 系列)。 **软件环境**: - Ubuntu 16.04/18.04 + ROS Kinetic/Melodic - 安装依赖项: ```bash sudo apt-get install libopencv-dev libeigen3-dev libboost-all-dev libglib2.0-dev libblas-dev liblapack-dev ``` - 克隆 ORB-SLAM2 仓库并编译: ```bash git clone https://github.com/raulmur/ORB_SLAM2.git cd ORB_SLAM2 && chmod +x build.sh && ./build.sh ``` #### 2. 双目相机配置与参数标定 1. **相机标定**:使用 ROS 的 `camera_calibration` 包获取双目相机内参和外参,生成标定文件(如 `my_cam.yaml`)。 2. **修改配置文件**:在 `ORB_SLAM2/Examples/Stereo/` 目录下创建配置文件,示例格式如下: ```yaml Camera.fps: 30 Camera.bf: 45.0 # 基线 × 焦距 LEFT.K: [fx, 0, cx; 0, fy, cy; 0, 0, 1] RIGHT.K: [...] # 右相机内参 ``` #### 3. 室外建图流程 **步骤 1:启动双目相机驱动** 例如使用 ZED 相机: ```bash roslaunch zed_wrapper zed.launch ``` **步骤 2:运行 ORB-SLAM2 双目建图** ```bash rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/my_cam.yaml true ``` **步骤 3:稠密点云构建(可选)** 通过集成 `orbslam2_pointcloud_mapping` 功能包实现稠密地图生成[^1],需修改点云融合策略以适应室外尺度。 #### 4. 关键参数优化 - **特征点数量**:室外场景建议将 `ORBextractor.nFeatures` 增加到 5000 以上。 - **闭环检测**:在 `LoopClosing.cc` 中调整相似性阈值,避免误匹配。 - **地图保存**:使用 `Map.save(map.bin)` 保存稀疏地图,或通过 ROS 话题导出点云。 #### 5. 常见问题解决 - **特征丢失问题**:增加 `Tracking.iniThFAST` 阈值减少动态物体干扰。 - **尺度漂移**:融合 IMU 数据(需修改代码支持传感器融合)。 - **编译错误**:检查 OpenCV 版本兼容性,建议使用 OpenCV 3.4.x[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值