ubuntu16.04 orbslam2 realsensed415

本文详细介绍了如何在ROS环境下配置ORB-SLAM2,并结合Realsense D415 RGB-D相机进行SLAM(同时定位与建图)的步骤,包括设置ROS工作空间,安装usb_cam,编译ORB-SLAM2,修改源代码以适配相机话题,获取并使用相机内参,以及最终运行SLAM的过程。

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

参考博客:

ROS+ORB-SLAM2+RealsenseD415_Escape_x1n的博客-优快云博客

1、配置ros环境

mkdir -p orbslam_ws/src

catkin_init_workspace

cd orbslam_ws

catkin_make

在主文件夹下ctrl+h后找到隐藏文件夹.bashrc,在.bashrc末尾添加:

source /opt/ros/kinetic/setup.bash

source /home/sun/orbslam_ws/devel/setup.bash

说明:该部分的作用是建立一个工作空间

2、安装ROS usb_cam

cd src

git clone https://github.com/bosch-ros-pkg/usb_cam

cd ..

catkin_make

source devel/setup.bash

测试流程

1)新开终端:roscore

2)运行:roslaunch usb_cam usb_cam-test.launch出现画面。

说明:测试阶段会用到电脑自带的摄像头,如果电脑没有自带的摄像头会报错,此时不用管,继续进行即可。

3、编译ORB-SLAM2

3.1

copy ORB_SLAM2-master

cd orbslam_ws/src/ORB_SLAM2

source /home/sun/orbslam_ws/devel/setup.bash

chmod +x build.sh

./build.sh

chmod +x build_ros.sh

./build_ros.sh

说明:此时只需要运行./build.sh和./build_ros.sh即可,不需要按照ROS机器人开发实践中的执行sudo make install,会报错误而且没用。

3.2

修改ros_mono.cc (或者ros_mono_ar.cc)

进入~/orbslam_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src

打开 ros_mono.cc 把程序里面的topic改为 /usb_cam/image_raw(也就是: ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);

具体还要查看自己的rviz(即上一步打开的摄像头窗口的标题)

然后进入~/orbslam_ws/src/ORB_SLAM,重新编译./build_ros.sh

3.3

修改ros_rgbd.cc

把rgb_topic和depth_topic订阅话题修改为

 "/camera/color/image_raw";

 "/camera/aligned_depth_to_color/image_raw";

重新编译:

source /home/sun/orbslam_ws/devel/setup.bash

chmod +x build.sh

./build.sh

chmod +x build_ros.sh

./build_ros.sh

4、启动RGB-D相机 realsense D415

4.1 获得相机内参矩阵

they’re published on a topic in the realsense ROS node. We can get those parameters by running rostopic echo /camera/color/camera_info

打开三个终端

roscore

roslaunch realsense2_camera rs_rgbd.launch

rostopic echo /camera/color/camera_info

运行之后的结构长这样

header:

  seq: 2053

  stamp:

    secs: 1561365943

    nsecs:  92858932

  frame_id: "camera_color_optical_frame"

height: 480

width: 640

distortion_model: "plumb_bob"

D: [0.0, 0.0, 0.0, 0.0, 0.0]

K: [616.58837890625, 0.0, 310.9554138183594, 0.0, 616.196044921875, 234.5266876220703, 0.0, 0.0, 1.0]

R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]

P: [616.58837890625, 0.0, 310.9554138183594, 0.0, 0.0, 616.196044921875, 234.5266876220703, 0.0, 0.0, 0.0, 1.0, 0.0]

binning_x: 0

binning_y: 0

roi:

  x_offset: 0

  y_offset: 0

  height: 0

  width: 0

  do_rectify: False

K就是我们得到的内参矩阵写成了向量模式:

K = [fx 0 cx 0 fy cy 0 0 1 ]

然后就是baseline,根据官方datasheet,D435 的baseline为55mm,bf的值为bf = baseline (in meters) * fx。

根据相机参数可以得到d415.yaml文件。

4.2运行SLAM

roscore

roslaunch realsense2_camera rs_rgbd.launch

rosrun ORB_SLAM2 RGBD /home/sun/orbslam_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/sun/orbslam_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/d415.yaml

5.标定环节,待更

### 回答1: Realsense D415相机标定是指对相机进行校准,以提高其测量精度稳定性。标定过程包括内参标定外参标定两个部分。内参标定是指确定相机的内部参数,如焦距、主点位置等;外参标定是指确定相机与世界坐标系之间的转换关系,如相机的位置、姿态等。标定结果可以用于相机的三维重建、位姿估计等应用。 ### 回答2realsense d415相机在使用前需要进行标定,以保证拍摄出来的图像具有准确的三维空间位置信息。标定的主要目的是确定摄像机坐标系世界坐标系之间的转换关系,即确定相机内外部参数。 相机内参指的是相机本身的参数,主要包括焦距、主点位置、畸变系数等。相机外参指的是相机在世界坐标系中的位置朝向,主要包括旋转向量平移向量。 在进行标定前,需要准备好标定场景,一般采用标定板来进行标定。标定板上通常会绘制一些黑白相间的棋盘格,用于确定图像的像素坐标物理空间坐标之间的对应关系。 标定的具体步骤如下: 1.准备标定板,打印或制作黑白相间的棋盘格。 2.将标定板放在相机的视野范围内,保证棋盘格上的图案清晰可见,长宽比尽量接近1。 3.打开realsense相机的SDK,启动标定程序,设置标定板的格数及大小。点击“开始标定”。 4.程序会自动拍摄若干张照片,提取棋盘格的角点坐标,得到物理坐标像素坐标的对应关系。 5.根据采集到的图像进行内参标定外参标定。内参标定可以使用openCV的calibrateCamera函数实现;外参标定需要利用相机坐标系标定板的坐标系之间的相对关系,采用solvePnP函数实现。 6.标定完毕后,可以用标定结果对拍摄到的图像进行纠正,得到更加准确的三维空间位置信息。 需要注意的是,标定的过程需要保证拍摄到的图像尽量覆盖标定板的整个范围,避免拍摄无法提取角点的情况。同时,标定板的位置姿态也需要随机变换,以保证标定结果的鲁棒性。 ### 回答3: Realsense D415相机标定是为了获得相机内部外部的参数,从而实现三维重建测量精度的提高。相机内部参数主要包括相机的焦距、主点坐标、畸变切向畸变等;外部参数主要包括相机的位置朝向。对于Realsense D415相机标定的步骤如下: 1.获取标定数据:利用标定板拍摄图像,在不同的位置朝向拍摄至少10张以上的图像。 2.提取角点:使用OpenCV等自动提取算法获取标定板上的角点,以及它们在图像中的坐标。 3.计算相机内部参数:包括相机的焦距、主点坐标、畸变切向畸变等,可以通过以下公式计算得出: f=(u1*u2+u3*v1)/(u1*u4-u2^2); cx=(u2*f-f*v1)/u1; cy=(u3*f-f*u4)/v1; K1=(beta/alpha)*(1+alpha^2*k1^2+k2^2); K2=(beta/alpha)*(1+alpha^2*k1^2+alpha^2*k2^2); 其中,u1、u2、u3、u4、v1、v2是由OpenCV提取的角点,alphabeta是相机的像素尺寸,k1、k2是径向畸变系数。 4.计算相机外部参数:包括相机的位置朝向,可以通过三维重建算法计算得出,常用的算法有PnP(Perspective-n-Point)算法、EPnP(Efficient Perspective-n-Point)算法等。 5.评估标定结果:对于得到的内部外部参数,需要通过重建场景进行误差评估矫正。 总而言之,Realsense D415相机标定是实现三维重建测量精度提高的关键步骤。标定结果的准确性将直接影响最终的重建效果测量精度。通过正确的标定步骤算法,可以得到精准的相机内外部参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔子的倔强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值