写了一个节点,订阅多个topic进行处理,发现在我性能好的电脑上能跑通,但在一些性能较差的电脑跑不通,debug发现订阅的回调函数的接受频率与 消息的发布频率差很多,例如我消息频率是500hz,但回调函数的触发频率低于500, 且波动较大,导致实时性有问题。初步认为是消息过多处理不过来。 我将 ros::spin() 换成多线程 ros::MultiThreadedSpinner能够初步解决问题,但至于多线程spin原理还没搞清楚,但解决了我燃眉之急
ros::MultiThreadedSpinner spinner(3);
spinner.spin();
这里的3是指3个线程。