Realsense2深度相机的基本操作命令
Realsense2深度相机的基本操作命令
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 rviz
或rviz
打开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):