C++ 如何使用realsense摄像头调试ROS错误消息
我正在运行以下realsense2\u摄像头启动命令:C++ 如何使用realsense摄像头调试ROS错误消息,c++,ros,C++,Ros,我正在运行以下realsense2\u摄像头启动命令: roslaunch realsense2_camera rs_rgbd.launch 我看到这个错误: 04/01 22:02:12,523 WARNING [139805191870208] (types.cpp:49) Out of frame resources! 04/01 22:02:12,523 ERROR [139805191870208] (synthetic-stream.cpp:47) Exception was t
roslaunch realsense2_camera rs_rgbd.launch
我看到这个错误:
04/01 22:02:12,523 WARNING [139805191870208] (types.cpp:49) Out of frame resources!
04/01 22:02:12,523 ERROR [139805191870208] (synthetic-stream.cpp:47) Exception was thrown during user processing callback!
尝试调试此文件时存在一些问题:
1.我们正在使用已编译的realsense ros库,因此在我们的系统上找不到types.cpp
消息超出了框架资源!这是没有信息的。在这里查看types.cpp:
它仍然没有信息,因为types.cpp第47行只是一般的错误处理代码:
45 recoverable_exception::recoverable_exception(const std::string& msg,
46 rs2_exception_type exception_type) noexcept
47 : librealsense_exception(msg, exception_type)
48 {
49 LOG_WARNING(msg);
50 }
我们如何看待实际解释此错误消息的代码逻辑?我想这需要找到消息的来源。我们如何找到它?Intel®RealSense™ 是开源的,你可以找到。如果您检查异常的来源,您将发现 三条线,和 抛出异常 所有异常都是基于失败的分配引发的,如
_actual_source.alloc_frame(...);
在哪里。深入挖掘,您将发现在我们的示例中返回空指针的。此空指针由虚拟方法返回,这将导致失败
对我来说,它看起来像是有一个帧缓冲区,这些帧可以被发布并在发布后重新使用。在这种情况下,您的软件只是没有快速释放帧,无法再次重复使用
这应该基本上回答了你的问题。如果需要,您现在可以更深入地了解如何参数化intrest的参数,或者尝试了解帧释放速度不够快的原因。这样做的方法与之前完全相同。只需尝试单步执行代码。Intel®RealSense™ 是开源的,你可以找到。如果您检查异常的来源,您将发现 三条线,和 抛出异常 所有异常都是基于失败的分配引发的,如
_actual_source.alloc_frame(...);
在哪里。深入挖掘,您将发现在我们的示例中返回空指针的。此空指针由虚拟方法返回,这将导致失败
对我来说,它看起来像是有一个帧缓冲区,这些帧可以被发布并在发布后重新使用。在这种情况下,您的软件只是没有快速释放帧,无法再次重复使用
这应该基本上回答了你的问题。如果需要,您现在可以更深入地了解如何参数化intrest的参数,或者尝试了解帧释放速度不够快的原因。这样做的方法与之前完全相同。只需尝试单步执行代码。打开启动文件,并修改帧速率参数。您的默认值是30,您可以将其缩小
<arg name="depth_fps" default="15"/>
<arg name="infra_fps" default="15"/>
<arg name="color_fps" default="15"/>
打开启动文件,并修改帧速率参数。您的默认值是30,您可以将其缩小
<arg name="depth_fps" default="15"/>
<arg name="infra_fps" default="15"/>
<arg name="color_fps" default="15"/>