CARLA
Loading...
Searching...
No Matches
CarlaCameraPublisher.h
Go to the documentation of this file.
1// Copyright (c) 2026 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
10
11#include <cstdint>
12#include <memory>
13#include <string>
14#include <vector>
15
16namespace carla {
17namespace ros2 {
18
19// Forward declarations keep the FastDDS-heavy PublisherImpl<> definition out of
20// the main carla-server compile unit. The full template definition + Traits
21// instantiations live in CarlaCameraPublisher.cpp, which is built by the
22// carla-ros2-native ExternalProject (where FastDDS headers are on the include
23// path). Same pattern as AckermannControlSubscriber.{h,cpp} from PR-2.
24template <typename Traits> class PublisherImpl;
25struct CarlaCameraImageMsgTraits;
26struct CarlaCameraInfoMsgTraits;
27
29public:
30 CarlaCameraPublisher(std::string base_topic_name, std::string frame_id);
32
36 CarlaCameraPublisher &operator=(CarlaCameraPublisher &&) noexcept = default;
37
38 bool Publish() override;
39
40 bool WriteCameraInfo(
41 int32_t seconds,
42 uint32_t nanoseconds,
43 uint32_t x_offset,
44 uint32_t y_offset,
45 uint32_t height,
46 uint32_t width,
47 float fov,
48 bool do_rectify);
49
50 bool WriteImage(
51 int32_t seconds,
52 uint32_t nanoseconds,
53 uint32_t height,
54 uint32_t width,
55 const uint8_t *data);
56
57protected:
58 [[nodiscard]] virtual uint8_t GetChannels() const = 0;
59 [[nodiscard]] virtual std::string GetEncoding() const = 0;
60 [[nodiscard]] virtual std::vector<uint8_t> ComputeImage(
61 uint32_t height, uint32_t width, const uint8_t *data) const;
62
63private:
64 bool WriteImage(
65 int32_t seconds,
66 uint32_t nanoseconds,
67 uint32_t height,
68 uint32_t width,
69 std::vector<uint8_t> data);
70
73};
74
75} // namespace ros2
76} // namespace carla
virtual std::vector< uint8_t > ComputeImage(uint32_t height, uint32_t width, const uint8_t *data) const
CarlaCameraPublisher & operator=(const CarlaCameraPublisher &)=delete
std::shared_ptr< PublisherImpl< CarlaCameraInfoMsgTraits > > _impl_camera_info
bool WriteImage(int32_t seconds, uint32_t nanoseconds, uint32_t height, uint32_t width, const uint8_t *data)
virtual std::string GetEncoding() const =0
bool WriteCameraInfo(int32_t seconds, uint32_t nanoseconds, uint32_t x_offset, uint32_t y_offset, uint32_t height, uint32_t width, float fov, bool do_rectify)
std::shared_ptr< PublisherImpl< CarlaCameraImageMsgTraits > > _impl_image
CarlaCameraPublisher(const CarlaCameraPublisher &)=delete
virtual uint8_t GetChannels() const =0
CarlaCameraPublisher(CarlaCameraPublisher &&) noexcept=default
This file contains definitions of common data structures used in traffic manager.