簡體   English   中英

如何使用實感相機調試 ROS 錯誤消息

[英]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。

  1. 消息“超出框架資源!” 是無信息的。 在此處查看 types.cpp: http ://docs.ros.org/kinetic/api/librealsense2/html/types_8cpp_source.html

它仍然沒有提供信息,因為 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 上找到源代碼 如果您檢查異常的來源,您會發現

三行327 , 388411

異常被拋出( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM