#include <CarlaSSCameraPublisher.h>
Public 成员函数 | |
CarlaSSCameraPublisher (CarlaSSCameraPublisher &&) | |
CarlaSSCameraPublisher类的移动构造函数 | |
CarlaSSCameraPublisher (const CarlaSSCameraPublisher &) | |
CarlaSSCameraPublisher类的拷贝构造函数 | |
CarlaSSCameraPublisher (const char *ros_name="", const char *parent="") | |
CarlaSSCameraPublisher类的构造函数 | |
bool | HasBeenInitialized () const |
检查CarlaSSCameraPublisher是否已初始化。 | |
bool | Init () |
初始化相机发布者 | |
void | InitInfoData (uint32_t x_offset, uint32_t y_offset, uint32_t height, uint32_t width, float fov, bool do_rectify) |
初始化相机信息数据 | |
CarlaSSCameraPublisher & | operator= (CarlaSSCameraPublisher &&) |
移动赋值运算符重载 | |
CarlaSSCameraPublisher & | operator= (const CarlaSSCameraPublisher &) |
赋值运算符重载 | |
bool | Publish () |
发布图像和信息 | |
void | SetCameraInfoData (int32_t seconds, uint32_t nanoseconds) |
设置相机信息数据的时间戳 | |
void | SetImageData (int32_t seconds, uint32_t nanoseconds, size_t height, size_t width, const uint8_t *data) |
设置图像数据 | |
const char * | type () const override |
~CarlaSSCameraPublisher () | |
CarlaSSCameraPublisher类的析构函数 | |
![]() | |
CarlaPublisher ()=default | |
const std::string & | frame_id () const |
void | frame_id (std::string &&frame_id) |
const std::string & | name () const |
void | name (std::string &&name) |
const std::string & | parent () const |
void | parent (std::string &&parent) |
virtual | ~CarlaPublisher ()=default |
Private 成员函数 | |
bool | InitImage () |
初始化相机图像 | |
bool | InitInfo () |
初始化CarlaSSCameraPublisher的信息 | |
bool | PublishImage () |
发布图像数据 | |
bool | PublishInfo () |
发布信息数据 | |
void | SetData (int32_t seconds, uint32_t nanoseconds, size_t height, size_t width, std::vector< uint8_t > &&data) |
设置图像数据 | |
void | SetInfoRegionOfInterest (uint32_t x_offset, uint32_t y_offset, uint32_t height, uint32_t width, bool do_rectify) |
设置感兴趣区域的信息 | |
Private 属性 | |
std::shared_ptr< CarlaSSCameraPublisherImpl > | _impl |
std::shared_ptr< CarlaCameraInfoPublisherImpl > | _impl_info |
额外继承的成员函数 | |
![]() | |
std::string | _frame_id = "" |
std::string | _name = "" |
std::string | _parent = "" |
在文件 CarlaSSCameraPublisher.h 第 24 行定义.
carla::ros2::CarlaSSCameraPublisher::CarlaSSCameraPublisher | ( | const char * | ros_name = "", |
const char * | parent = "" ) |
CarlaSSCameraPublisher类的构造函数
初始化CarlaSSCameraPublisher对象,并创建内部实现对象和相机信息发布者对象。
ros_name | ROS节点名称 |
parent | 父节点或组件的名称 |
在文件 CarlaSSCameraPublisher.cpp 第 537 行定义.
引用了 carla::ros2::CarlaPublisher::_name, carla::ros2::CarlaPublisher::_parent , 以及 carla::ros2::CarlaPublisher::parent().
carla::ros2::CarlaSSCameraPublisher::~CarlaSSCameraPublisher | ( | ) |
CarlaSSCameraPublisher类的析构函数
清理资源,包括删除数据写入器、发布者、主题和参与者。
在文件 CarlaSSCameraPublisher.cpp 第 548 行定义.
引用了 _impl , 以及 _impl_info.
carla::ros2::CarlaSSCameraPublisher::CarlaSSCameraPublisher | ( | const CarlaSSCameraPublisher & | other | ) |
CarlaSSCameraPublisher类的拷贝构造函数
创建当前对象的深拷贝。注意:这里的实现可能存在问题,因为_impl和_impl_info是智能指针,直接赋值可能导致多个对象共享相同的内部实现,这通常不是期望的行为。 在实际实现中,应该考虑使用深拷贝或者避免在拷贝构造函数中直接赋值智能指针。
other | 要拷贝的对象 |
在文件 CarlaSSCameraPublisher.cpp 第 587 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
carla::ros2::CarlaSSCameraPublisher::CarlaSSCameraPublisher | ( | CarlaSSCameraPublisher && | other | ) |
CarlaSSCameraPublisher类的移动构造函数
使用另一个CarlaSSCameraPublisher对象的资源初始化当前对象,并清空源对象的资源。
other | 要移动的对象 |
在文件 CarlaSSCameraPublisher.cpp 第 618 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaSSCameraPublisher::HasBeenInitialized | ( | ) | const |
检查CarlaSSCameraPublisher是否已初始化。
在文件 CarlaSSCameraPublisher.cpp 第 118 行定义.
引用了 _impl_info.
bool carla::ros2::CarlaSSCameraPublisher::Init | ( | ) |
初始化相机发布者
该函数用于初始化相机发布者,包括图像和信息的初始化。
在文件 CarlaSSCameraPublisher.cpp 第 145 行定义.
引用了 InitImage() , 以及 InitInfo().
|
private |
初始化相机图像
该函数用于初始化相机图像的发布,包括创建DomainParticipant、Publisher、Topic和DataWriter。
在文件 CarlaSSCameraPublisher.cpp 第 155 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
被这些函数引用 Init().
|
private |
初始化CarlaSSCameraPublisher的信息
此函数负责初始化CarlaSSCameraPublisher所需的各种组件,包括DomainParticipant, Publisher, Topic和DataWriter。 如果任何步骤失败,函数将输出错误信息并返回false。
检查_impl_info->_type是否为nullptr,如果是,则输出错误信息并返回false。
设置DomainParticipant的QoS参数为默认值,并设置其名称。
获取DomainParticipantFactory的实例,并创建一个DomainParticipant。
如果DomainParticipant创建失败,输出错误信息并返回false。
注册类型到DomainParticipant。
设置Publisher的QoS参数为默认值,并创建一个Publisher。
如果Publisher创建失败,输出错误信息并返回false。
设置Topic的QoS参数为默认值,并构造Topic名称。
创建一个Topic。
如果Topic创建失败,输出错误信息并返回false。
设置DataWriter的QoS参数为默认值,并创建一个DataWriter。
如果DataWriter创建失败,输出错误信息并返回false。
设置_frame_id为_name。
初始化成功,返回true。
在文件 CarlaSSCameraPublisher.cpp 第 210 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
被这些函数引用 Init().
void carla::ros2::CarlaSSCameraPublisher::InitInfoData | ( | uint32_t | x_offset, |
uint32_t | y_offset, | ||
uint32_t | height, | ||
uint32_t | width, | ||
float | fov, | ||
bool | do_rectify ) |
初始化相机信息数据
该函数用于初始化相机的信息数据,包括高度、宽度、视场角(FOV),并设置感兴趣区域(ROI)。
x_offset | 感兴趣区域的X轴偏移量 |
y_offset | 感兴趣区域的Y轴偏移量 |
height | 相机图像的高度 |
width | 相机图像的宽度 |
fov | 相机的视场角(FOV) |
do_rectify | 是否对图像进行校正 |
在文件 CarlaSSCameraPublisher.cpp 第 133 行定义.
引用了 _impl_info , 以及 SetInfoRegionOfInterest().
CarlaSSCameraPublisher & carla::ros2::CarlaSSCameraPublisher::operator= | ( | CarlaSSCameraPublisher && | other | ) |
移动赋值运算符重载
将当前对象设置为另一个CarlaSSCameraPublisher对象的移动拷贝,并清空源对象的资源。
other | 要移动赋值的对象 |
在文件 CarlaSSCameraPublisher.cpp 第 633 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaSSCameraPublisher & carla::ros2::CarlaSSCameraPublisher::operator= | ( | const CarlaSSCameraPublisher & | other | ) |
赋值运算符重载
将当前对象设置为另一个CarlaSSCameraPublisher对象的拷贝。与拷贝构造函数类似,这里的实现也可能存在问题。
other | 要赋值的对象 |
在文件 CarlaSSCameraPublisher.cpp 第 602 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaSSCameraPublisher::Publish | ( | ) |
发布图像和信息
此函数调用PublishImage和PublishInfo函数来发布图像和相关信息。 如果两个函数都成功返回true,则此函数也返回true;否则返回false。
在文件 CarlaSSCameraPublisher.cpp 第 303 行定义.
引用了 PublishImage() , 以及 PublishInfo().
|
private |
发布图像数据
此函数尝试通过Fast RTPS发布图像数据。根据返回码(ReturnCode_t),函数会输出相应的错误信息并返回发布是否成功。
在文件 CarlaSSCameraPublisher.cpp 第 313 行定义.
引用了 _impl.
被这些函数引用 Publish().
|
private |
发布信息数据
此函数尝试通过Fast RTPS发布信息数据。根据返回码(ReturnCode_t),函数会输出相应的错误信息并返回发布是否成功。
在文件 CarlaSSCameraPublisher.cpp 第 382 行定义.
引用了 _impl_info.
被这些函数引用 Publish().
void carla::ros2::CarlaSSCameraPublisher::SetCameraInfoData | ( | int32_t | seconds, |
uint32_t | nanoseconds ) |
设置相机信息数据的时间戳
该函数接收时间戳,并设置相机信息的头部时间戳和帧ID。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
在文件 CarlaSSCameraPublisher.cpp 第 519 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl_info, builtin_interfaces::msg::Time::nanosec() , 以及 builtin_interfaces::msg::Time::sec().
|
private |
设置图像数据
该函数接收时间戳、图像高度、图像宽度和图像数据(以vector形式),然后设置图像的元数据和数据。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
height | 图像的高度 |
width | 图像的宽度 |
data | 图像数据的vector,假设为BGRA格式,使用右值引用进行移动语义优化 |
在文件 CarlaSSCameraPublisher.cpp 第 494 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, builtin_interfaces::msg::Time::nanosec() , 以及 builtin_interfaces::msg::Time::sec().
被这些函数引用 SetImageData().
void carla::ros2::CarlaSSCameraPublisher::SetImageData | ( | int32_t | seconds, |
uint32_t | nanoseconds, | ||
size_t | height, | ||
size_t | width, | ||
const uint8_t * | data ) |
设置图像数据
该函数接收时间戳、图像高度、图像宽度和图像数据,然后将这些数据复制到一个新的vector中, 并调用SetData函数设置图像数据。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
height | 图像的高度 |
width | 图像的宽度 |
data | 图像数据的指针,假设为BGRA格式 |
在文件 CarlaSSCameraPublisher.cpp 第 456 行定义.
引用了 SetData().
|
private |
设置感兴趣区域的信息
该函数用于设置图像的感兴趣区域(Region Of Interest, ROI),包括偏移量、高度、宽度和是否需要校正。
x_offset | ROI的X轴偏移量 |
y_offset | ROI的Y轴偏移量 |
height | ROI的高度 |
width | ROI的宽度 |
do_rectify | 是否需要校正ROI |
在文件 CarlaSSCameraPublisher.cpp 第 474 行定义.
引用了 _impl_info, sensor_msgs::msg::RegionOfInterest::do_rectify(), sensor_msgs::msg::RegionOfInterest::height(), sensor_msgs::msg::RegionOfInterest::width(), sensor_msgs::msg::RegionOfInterest::x_offset() , 以及 sensor_msgs::msg::RegionOfInterest::y_offset().
被这些函数引用 InitInfoData().
|
inlineoverridevirtual |
实现了 carla::ros2::CarlaPublisher.
在文件 CarlaSSCameraPublisher.h 第 53 行定义.
|
private |
在文件 CarlaSSCameraPublisher.h 第 72 行定义.
被这些函数引用 CarlaSSCameraPublisher(), CarlaSSCameraPublisher(), InitImage(), operator=(), operator=(), PublishImage(), SetData() , 以及 ~CarlaSSCameraPublisher().
|
private |