[英]How to debug ROS error message with realsense camera
我正在運行以下 realsense2_camera 啟動命令:
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 第 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 }
我們如何看待實際解釋這個錯誤信息的代碼邏輯? 我認為這需要轉到消息的來源。 我們如何找到它?
英特爾® 實感™ 是開源的,您可以在 GitHub 上找到源代碼。 如果您檢查異常的來源,您會發現
異常被拋出( class wrong_api_call_sequence_exception : public recoverable_exception
)。
所有異常都是基於失敗的分配而拋出的,例如
_actual_source.alloc_frame(...);
其中frame_source & _actual_source;
. 深入挖掘,你會發現frame_source::alloc_frame
的定義,它在我們的例子中返回一個空指針。 此空指針由虛擬方法alloc_and_track
返回,該方法的實現導致publish_frame
失敗。
對我來說,看起來有一個幀緩沖區,如果發布,這些幀可以在以后發布和重用。 您的軟件(在本例中為 ROS)只是沒有足夠快地釋放幀以再次重用。
這應該基本上回答你的問題。 如果需要,您現在可以更深入地了解如何對 intrest uint32_t max_publish_list_size
的參數進行參數化,或者嘗試找出幀釋放速度不夠快的原因。 執行此操作的方法與到目前為止所做的完全相同。 只需嘗試單步執行代碼即可。
打開您的啟動文件,並修改幀速率參數。 您的默認值是 30,您可以將其變小。
<arg name="depth_fps" default="15"/>
<arg name="infra_fps" default="15"/>
<arg name="color_fps" default="15"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.