realsense相机通过ros启动,命令为:
roslaunch realsense2_camera rs_camera.launch
但是如果想在rviz中查看pointcloud2格式的点云,需要加一个这个参数:
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud
这种情况下,既可以生成图片topic,也可以生成pointcloud2格式的点云topic:/camera/depth/color/points。
正常情况,在笔记本,PC机等AMD结构的电脑中,这都是正常的。
但是很不巧,在Arm结构的TX2,Xavier等机型上,似乎会有问题。
具体表现在,如果你使用
roslaunch realsense2_camera rs_camera.launch
是完全正常的,通过rqt_image_view可以看到图片的正常显示。但是如果输入:
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud
就会工作不正常,既不能看到图片,也不能看到点云。会多一个莫名其妙的报错:
08/12 18:23:04, 137 ERROR [546517799296] (uvc-streamer.cpp: 106) uvc streamer watchdog triggered on endpoint: 132
看realsense的issues里面,似乎不少人都遇到这个问题了:D435i rs_camera.launch results in (uvc-streamer.cpp:106) uvc streamer watchdog triggered on endpoint: 132 with no messages being published thereafter · Issue #2149 · IntelRealSense/realsense-ros · GitHub
但是似乎维护者目前并没有什么好的方法,开发者似乎认为这是平台计算性能和帧率的问题,他给出的建议是,再加上这些参数:
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud depth_width:=640 depth_height:=480 depth_fps:=15
我亲身尝试过,确实能同时显示出图像和点云。但是这个方法时灵时不灵,关键是巨卡顿,让人难以忍受,工作也没有办法正常进行。。
目前我有一个替代方法:
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud pointcloud_texture_stream:=RS2_STREAM_ANY
用这种方法,可以保证rviz中有一个不带延迟的点云(没有颜色),但是用这种方法,就不能正常获取图像了。
总之如果只想要image,就用:
roslaunch realsense2_camera rs_camera.launch
如果只想要点云,就用:
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud pointcloud_texture_stream:=RS2_STREAM_ANY
两个都想用,就用:(但是这种方法我这里延迟非常大,完全没有办法用)
roslaunch realsense2_camera rs_camera.launch filters:=pointcloud depth_width:=640 depth_height:=480 depth_fps:=15
其他我就暂时没有好办法了。希望大家多多补充,或者之后我有更好的办法就写上来。我提了一个问题,如果遇到相同问题的同学请及时跟进:
uvc streamer watchdog triggered on endpoint · Issue #2191 · IntelRealSense/realsense-ros · GitHub