如何在 C++ 中的 ROS 包文件中写入字符串消息

how to write a string message in a ROS bag file in C++

我很确定这个基本问题已经在某个地方找到了答案,但不幸的是我找不到它。

目前,我有以下内容(无法编译):

rosbag::Bag my_bag;
my_bag.write("/test_topic", timestamp, "str")
// write() expects a message type, as a std_msgs::String

我想我必须把它写成一条消息,所以我尝试使用 std_msgs::String 但我不知道如何使用它,而且 documentation 对这个主题没有太大帮助。

我还尝试从 here

改编以下 Python 代码
import rosbag

with rosbag.Bag('input.bag', 'a') as bag:
    from std_msgs.msg import String
    metadata = String(data='my metadata')

    for _, _, t in bag.read_messages():
        break
    bag.write('/metadata', metadata, t - roslib.rostime.Duration(0, 1))

如果需要的话,我正在使用 ROS Groovy

提前致谢

我只需要构建一个 ROS 字符串消息。

代码如下:

rosbag::Bag my_bag;
std_msgs::String str_message;
str_message.data = "message content";
my_bag.write("/test_topic", timestamp, str_message);