在 ROS 中让 orbslam3 使用 realsense 库和 D455 multi camera 多相机

0、环境

1、安装 realsense(一个让 ros 可以使用相机的库)及其依赖

说明文档见 https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy

# sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
sudo apt-get install ros-melodic-realsense2-camera

2、启动相机节点并检查

  1. 使用一个终端窗口启动相机节点,不要退出
roslaunch realsense2_camera rs_camera.launch
  1. 使用 rosnode list 命令查看是否在运行
/camera/realsense2_camera
/camera/realsense2_camera_manager
  1. 使用 rostopic list 命令查看可用 topic
/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/extrinsics/depth_to_color
/camera/motion_module/parameter_descriptions
/camera/motion_module/parameter_updates
/camera/realsense2_camera_manager/bond
/camera/rgb_camera/auto_exposure_roi/parameter_descriptions
/camera/rgb_camera/auto_exposure_roi/parameter_updates
/camera/rgb_camera/parameter_descriptions
/camera/rgb_camera/parameter_updates
/camera/stereo_module/auto_exposure_roi/parameter_descriptions
/camera/stereo_module/auto_exposure_roi/parameter_updates
/camera/stereo_module/parameter_descriptions
/camera/stereo_module/parameter_updates

3、使用相机节点

  1. 使用 rqt_image_viewer 查看相机画面
    在这里插入图片描述
  2. 查看可见光相机分辨率、帧率、自动标定的参数
rostopic echo /camera/color/camera_info

结果如下,其中 D: [k1, k2, p1, p2, k3] 为畸变矩阵,K: [fx, 0, cx, 0, fy, cy, 0, 0, 1] 为内参矩阵

header:
  seq: 27396
  stamp:
    secs: 1684134718
    nsecs: 665443897
  frame_id: "camera_color_optical_frame"
height: 480
width: 640
distortion_model: "plumb_bob"

D: [-0.059488698840141296, 0.07560079544782639, -0.00033220319892279804, -0.0005832613096572459, -0.02381760999560356]
K: [377.59320068359375, 0.0, 317.94189453125, 0.0, 377.1402282714844, 243.31692504882812, 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: [377.59320068359375, 0.0, 317.94189453125, 0.0, 0.0, 377.1402282714844, 243.31692504882812, 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
  1. 修改 orb-slam3 中的 ros_mono.cc 以使用 /camera/color/image_raw 话题发布的视频图像信息
ros::NodeHandle nodeHandler;
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);

修改为

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);

然后修改 yaml 配置文件,编译运行即可。
在这里插入图片描述

4、使用 realsense 图形化界面

使用以下命令打开 realsense 图形化界面,可以对 imu 和深度信息进行可视化查看。

realsense-viewer

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS使用ORB-SLAM进行定位和建图,需要将相机的图像数据发布到ROS,然后订阅这些图像数据,将其传递给ORB-SLAM进行处理。 首先,你需要使用ROS相机驱动程序来获取相机的图像数据,并将其发布到ROS。你可以使用任何ROS支持的相机驱动程序,例如USB相机驱动程序或者网络相机驱动程序。在获取到相机图像数据后,你需要将它们以图像话题的形式发布到ROS,例如使用`sensor_msgs/Image`消息类型来发布图像数据。 然后,你需要在ORB-SLAM节点订阅这些图像话题,并使用ORB-SLAM进行处理。在ORB-SLAM节点,你需要订阅相机的图像话题,例如使用`ros::Subscriber`来订阅`sensor_msgs/Image`消息类型的话题。然后,你需要将这些图像数据传递给ORB-SLAM进行处理。ORB-SLAM使用这些图像数据进行定位和建图。 在ORB-SLAM节点,你还需要发布ORB-SLAM的位姿信息和地图数据,以便其他节点订阅并使用。你可以使用`ros::Publisher`来发布ORB-SLAM的位姿信息和地图数据,例如使用`geometry_msgs/PoseStamped`消息类型来发布ORB-SLAM的位姿信息,使用`nav_msgs/OccupancyGrid`消息类型来发布ORB-SLAM的地图数据。 总之,使用ORB-SLAM进行定位和建图需要以下几个步骤: 1. 使用ROS相机驱动程序获取相机图像数据,并以图像话题的形式发布到ROS。 2. 在ORB-SLAM节点订阅相机图像话题,并使用ORB-SLAM进行处理。 3. 在ORB-SLAM节点发布ORB-SLAM的位姿信息和地图数据,以便其他节点订阅并使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值