在ROS中用rosbag同时获取深度图与彩色图

第一步:启动RealSense ZR300
运行以下命令启动ZR300:

roslaunch realsense_camera zr300_nodelet_rgbd.launch

ZR300启动后,可以用rostopic list查看已启动的节点。
第二步:用rosbag记录ROS中的相关主题
运行以下命令:

rosbag record /camera/rgb/image_color /camera/depth/image_raw

这行代码记录了深度图片与彩色图片,下面就要把.bag文件中的图片提取出来。
第三步:提取图片

rosrun image_view image_saver image:=/camera/rgb/image_color
rosrun image_view image_saver image:=/camera/depth/image _encoding:=32FC1
rosbag play 2019-04-19-19-05-20.bag

上面三行代码在不同的终端下运行,即可提取.bag文件中的图片。提取成功界面如下:在这里插入图片描述提取的图片如图所示:
在这里插入图片描述深度图片就不展示了。若不想提取全部图片,则可运行以下代码:

rosrun image_view image_saver image:=image_raw _save_all_image:=false _f
### 使用Realsense相机在ROS环境中同时获取彩色图深度图 为了实现在ROS环境下的Intel Realsense D400系列设备上同步获得彩色图像和深度图像,可以按照如下方法操作: #### 安装realsense2-camera ROS包 对于特定版本的ROS(如Melodic),可以通过apt-get工具来安装官方维护的支持包。这一步骤确保了所有必要的依赖项都被正确配置[^2]。 ```bash sudo apt-get update sudo apt-get install ros-melodic-realsense2-camera ``` #### 启动并验证硬件连接 完成软件层面准备之后,需确认物理连接无误,并通过启动默认节点检验传感器能否被识别及正常工作。当一切就绪时,应该可以在RViz或者rqt_image_view这样的可视化工具里看到来自RealSense的数据流[^1]。 #### 配置Launch文件以启用所需数据流 `realsense2_camera`包提供了丰富的预设launch脚本用于快速部署不同应用场景。针对同时采集RGBDepth的要求,推荐使用其中名为`rs_rgbd.launch`的模板,它已经预先设置了合理的参数组合以便于两者共同输出[^3]。 ```xml <launch> <!-- Enable RGB and Depth streams --> <arg name="enable_rgb" default="true"/> <arg name="enable_depth" default="true"/> <!-- Set desired resolution & FPS here, e.g., 640x480@30fps --> </launch> ``` 上述XML片段展示了如何自定义启动参数;实际应用中可根据项目需求调整具体的分辨率和刷新频率等选项。 #### 编写Python代码实现同步订阅 如果希望进一步处理接收到的信息,则可编写一段简单的Python程序来进行消息监听。下面给出了一种基于`message_filters`库的时间戳匹配策略,从而保证两路信号间的一致性。 ```python import rospy from sensor_msgs.msg import Image as SensorImage from cv_bridge import CvBridge import message_filters def callback(rgb_msg, depth_msg): bridge = CvBridge() try: rgb_img = bridge.imgmsg_to_cv2(rgb_msg, "bgr8") depth_img = bridge.imgmsg_to_cv2(depth_msg) # Process images... except Exception as err: print(err) if __name__ == '__main__': rospy.init_node('synced_images_subscriber', anonymous=True) sub_rgb = message_filters.Subscriber('/camera/color/image_raw', SensorImage) sub_depth = message_filters.Subscriber('/camera/depth/image_rect_raw', SensorImage) ts = message_filters.ApproximateTimeSynchronizer([sub_rgb, sub_depth], queue_size=10, slop=0.5) ts.registerCallback(callback) rospy.spin() ``` 此段代码实现了对两个主题的消息过滤器注册过程,并指定了近似时间同步机制作为回调触发条件之一。每当一对符合条件的新消息到达时就会调用指定函数进行后续逻辑运算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值