以下是发布16进制数组的 ROS1 C++11 代码示例:

#include <ros/ros.h>
#include <std_msgs/UInt8MultiArray.h>

int main(int argc, char** argv)
{
    ros::init(argc, argv, 'hex_array_publisher');
    ros::NodeHandle nh;

    // Create publisher for UInt8MultiArray message
    ros::Publisher pub = nh.advertise<std_msgs::UInt8MultiArray>('hex_array', 10);

    // Create UInt8MultiArray message
    std_msgs::UInt8MultiArray msg;

    // Fill message with hex values
    uint8_t hex_array[] = {0x12, 0xAB, 0xF0, 0x3D};
    msg.data.assign(hex_array, hex_array + sizeof(hex_array));

    // Publish message repeatedly
    ros::Rate rate(10);  // 10 Hz
    while (ros::ok())
    {
        pub.publish(msg);
        rate.sleep();
    }

    return 0;
}

在这个示例中,我们使用了 std_msgs/UInt8MultiArray 消息类型来发布16进制数组。首先,我们创建了一个 ros::Publisher 对象,它将消息发布到名为 'hex_array' 的话题上。接下来,我们创建一个 std_msgs::UInt8MultiArray 类型的消息,并使用 std::vectorassign 函数将16进制数组中的值赋给 msg.data。最后,我们创建一个 ros::Rate 对象来控制发布消息的速率,然后在循环中使用 pub.publish(msg) 来发布消息。

ROS1 C++11 发布16进制数组示例

原文地址: https://www.cveoy.top/t/topic/nlnj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录