Это не точный ответ, но я думаю, что он решит вашу проблему и может облегчить вашу отладку. RViz может напрямую подписаться на опубликованное облако точек, которое, как я предполагаю, вы пытаетесь увидеть в обратном вызове cloud_receive. Если вы установите для фрейма тот фрейм, в котором он публикуется, и добавите его из доступных тем, вы должны увидеть точки. (Это проще, чем пытаться ретранслировать его как разные темы).
Кроме того, я рекомендую посмотреть на инструмент командной строки rostopic
. Вы можете сделать rostopic list
, чтобы проверить, публикуется ли он, rostopic bw
, чтобы увидеть, действительно ли он публикует ожидаемый объем данных (например, байты против килобайт против мегабайт), rostopic hz
, чтобы узнать, как часто (если вообще) он публикуется, и (кратко) rostopic echo
, чтобы посмотреть на сами данные. (Я предполагаю из вашего вопроса, что это больше проблема с данными, поступающими в ваш узел).
Если у вас проблемы, то не с данными, поступающими в узел, или с визуализацией данных облака точек в в общем, но с преобразованными данными, которые должны исходить из узла, я бы проверил, что кластеризация работает, и уменьшил бы ваш код еще больше, чтобы просто иметь 1 издатель publi sh что-то. Возможно, вы делаете что-то странное. Например, испортил ваши указатели. Вы также можете включить более строгие предупреждения компиляции для своего узла с помощью -Wall -Wextra -Werror
или пошагово выполнить его через gdb (launch-prefix="xterm -e gdb --args"
).