Realsense2深度相机的基本操作命令

    • 1、rostopic
      • (1)rostopic list
      • (2)rostopic info
    • (3)image_view
    • 2、rviz
    • 3、rosbag
    • 4、rqt_graph

1、rostopic

(1)rostopic list

运行 roslaunch realsense2_camera rs_camera.launch,新打开终端rostopic list可以查看当前所有的topic。
rostopic list | grep color可查找所有关于“color”的topic:
在这里插入图片描述
rostopic list | grep depth 可查找所有关于“depth”的topic:
在这里插入图片描述

(2)rostopic info

rostopic info /camera/color/image_raw 可查看“/camera/color/image_raw”话题的详细信息:
在这里插入图片描述
可以看到消息类型为/camera/color/image_raw,发布者为/camera/color/image_raw,没有接受者,只有某一个节点订阅了此话题,才有接收者。
输入rosmsg show sensor_msgs/Image可以查看消息的详细定义:
在这里插入图片描述
利用此消息格式就可以传递图像的信息。

(3)image_view

输入rostopic list | grep "raw$",可以看到以下六种话题,利用image_view就可以通过这六种话题查看六种图像。
在这里插入图片描述
color:彩色图像,depth:深度图像,infra1\infra2:红外图像,pointcloud:点云图像,aligned A to B :将B映射对齐到A的图像,利用image_view可以查看相机的彩色图像、深度图像以及红外图像。
新终端输入rosrun image_view image_view image:=/camera/color/image_raw可以看到彩色图像:(/camera/color/image_raw是话题名称,查看其他图像只需修改此话题即可)
在这里插入图片描述
而此时在新终端输入rostopic info /camera/color/image_raw就可以看到接受者为“/image_view_1571487516552059717”:
在这里插入图片描述
这意味着image_view正在接收相机的视频流并显示出来。

深度图像:/camera/depth/image_rect_raw
在这里插入图片描述
红外图像:/camera/infra1/image_rect_raw
在这里插入图片描述
彩色流向深度流对齐的图像:/camera/aligned_depth_to_color/image_raw
在这里插入图片描述
红外流向深度流对齐的图像:/camera/aligned_depth_to_infra1/image_raw
在这里插入图片描述

2、rviz

通过以上的学习知道了可以使用image_view来查看相机产生的各种图像,而要查看点云需要使用rviz或其它GUI程序。
(1)用rviz创建一个visualization
运行rgbd的launch文件,用命令rosrun rviz rvizrviz打开rviz,然后Add一个visualization,选择“By topic”里面的/camera/depth_registered/points节点,把里面的 “PointCloud2”点云图像加入rviz:
在这里插入图片描述
(2)此时在rviz中并未发现有点云图像,原因是rviz中的map为世界坐标系,而相机坐标不知道自己的位姿,需要给相机一个位姿,告诉相机它与世界坐标的关系是什么,最简单的方法就是把map坐标直接设置为相机的坐标。
先通过命令rostopic info /camera/depth_registered/points查看topic的信息,看到消息类型为sensor_msgs/PointCloud2:
在这里插入图片描述
再通过命令rosmsg show sensor_msgs/PointCloud2查看消息的定义:
在这里插入图片描述
发现有一个frame_id,这就是相机的坐标系,通过命令rostopic echo /camera/depth_registered/points | grep frame_id可以查看frame_id的名称:
在这里插入图片描述
frame_id的名称叫做“camera_color_optical_frame”,世界坐标系叫做“map”,之后就可以通过命令rosrun tf static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0 map camera_color_optical_frame 100 把世界坐标系直接赋给相机坐标系,此命令中的6个0.0表示即没有平移,也没有旋转。(通过查找资料得知rosrun tf static_transform_publisher的两种用法:1:static_transform_publisher x y z yaw pitch roll frame_id child_frame_id perios_in_ms,用坐标表示平移,用欧拉角表示旋转。2:static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms,用坐标表示平移,用四元数表示旋转。)之后在rviz中看到了点云图像:
在这里插入图片描述

3、rosbag

rosbag主要用于记录、回放、分析rostopic中的数据,可以将指定rostopic中的数据记录到.bag后缀的数据包中,便于对其中的数据进行离线分析和处理。
运行rgbd的launch文件,在新终端中运行rosbag record /camera/color/image_raw -o color_image,将/camera/color/image_raw话题上的数据保存到color_image.bag文件里,就是把相机的RGB视频流保存到bag文件里,供后续使用。
之后退出所有程序,运行roscore,新终端运行rostopic echo /camera/color/image_raw,没有任何结果:
在这里插入图片描述
在新终端运行rosbag play color_image_2019-10-19-23-00-49.bag,此时可以看到在/camera/color/image_raw话题发布的信息。
在这里插入图片描述
在这里插入图片描述
总之,rosbag作用就是作为subscriber接收并储存信息,作为publisher重新发布信息。

4、rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图形,能够利用图形查看节点之间的连接关系和正在使用的topic,输入命令rqt_graph可以看到图形。
Nodes only:
在这里插入图片描述
Nodes/Topics(all):
在这里插入图片描述