44std::vector<msg::PointField> BuildPointFields(
45 const PointFieldDescriptor *descriptors, std::size_t count) {
46 std::vector<msg::PointField> fields;
47 fields.reserve(count);
48 for (std::size_t i = 0; i < count; ++i) {
49 const auto &descriptor = descriptors[i];
50 msg::PointField field{};
51 field.name = std::string{descriptor.name};
52 field.offset = descriptor.offset;
53 field.datatype = ToPointFieldDatatype(descriptor.datatype);
54 field.count = descriptor.count;
55 fields.push_back(std::move(field));
63 std::string base_topic_name, std::string frame_id,
bool exact_topic)
74 return _impl->Publish();
79 std::uint32_t nanoseconds,
82 const std::uint8_t *data) {
84 seconds, nanoseconds, height, width,
90 std::uint32_t nanoseconds,
93 std::vector<std::uint8_t> data) {
94 auto *message =
_impl->GetMessage();
95 message->header.stamp.sec = seconds;
96 message->header.stamp.nanosec = nanoseconds;
101 message->width = width;
102 message->height = height;
103 message->is_bigendian =
false;
105 message->point_step =
static_cast<std::uint32_t
>(point_size);
106 message->row_step =
static_cast<std::uint32_t
>(width * point_size);
109 message->is_dense =
true;
110 message->data = std::move(data);
const std::string & GetBaseTopicName() const noexcept
const std::string & GetFrameId() const noexcept
virtual std::size_t GetPointSize() const =0
virtual std::size_t GetFieldDescriptorCount() const =0
CarlaPointCloudPublisher(std::string base_topic_name, std::string frame_id, bool exact_topic=false)
bool WritePointCloud(std::int32_t seconds, std::uint32_t nanoseconds, std::uint32_t height, std::uint32_t width, const std::uint8_t *data)
virtual std::vector< std::uint8_t > ComputePointCloud(std::uint32_t height, std::uint32_t width, const std::uint8_t *data) const =0
virtual const PointFieldDescriptor * GetFieldDescriptors() const =0
std::shared_ptr< PublisherImpl< CarlaPointCloudMsgTraits > > _impl
~CarlaPointCloudPublisher() override
This file contains definitions of common data structures used in traffic manager.
static void log_error(Args &&... args)
static const uint8_t INT32
static const uint8_t INT16
static const uint8_t UINT8
static const uint8_t FLOAT64
static const uint8_t UINT32
static const uint8_t FLOAT32
static const uint8_t UINT16
static const uint8_t INT8