You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS C++中nh.subscribe正常但message_filters::Subscriber无响应求助

ROS message_filters::Subscriber 无法触发回调的问题解答

两段代码功能不一致,出现差异的核心原因是对象生命周期和订阅机制的细节差异:

  • 原代码里的mSubCam是类成员变量,它的生命周期和ClientHandler实例绑定,只要实例存活,订阅关系就会持续有效,ros::Subscriber会和NodeHandle保持关联,正常接收消息触发回调。

  • 改用message_filters::Subscriber时,你定义的rgb_sub是局部变量——当这段代码所在的函数执行完毕,rgb_sub会被自动销毁,对应的订阅关系也会被终止,自然收不到任何图像消息,程序就会阻塞等待。

message_filters::Subscriber本质是对普通ros::Subscriber的封装,但它同样遵循C++对象生命周期规则:局部对象销毁时会自动取消订阅。

解决方法很简单:把rgb_sub改成ClientHandler的类成员变量,让它的生命周期和类实例保持一致,就能正常接收消息触发回调了。

内容的提问来源于stack exchange,提问作者Janebek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:35:26