#include <CarlaOpticalFlowCameraPublisher.h>
Public 成员函数 | |
CarlaOpticalFlowCameraPublisher (CarlaOpticalFlowCameraPublisher &&) | |
CarlaOpticalFlowCameraPublisher类的移动构造函数 | |
CarlaOpticalFlowCameraPublisher (const CarlaOpticalFlowCameraPublisher &) | |
CarlaOpticalFlowCameraPublisher类的拷贝构造函数 | |
CarlaOpticalFlowCameraPublisher (const char *ros_name="", const char *parent="") | |
CarlaOpticalFlowCameraPublisher类的构造函数 | |
bool | HasBeenInitialized () const |
检查类是否已经被初始化。 | |
bool | Init () |
初始化类。 | |
void | InitInfoData (uint32_t x_offset, uint32_t y_offset, uint32_t height, uint32_t width, float fov, bool do_rectify) |
初始化摄像头信息数据。 | |
CarlaOpticalFlowCameraPublisher & | operator= (CarlaOpticalFlowCameraPublisher &&) |
移动赋值运算符重载 | |
CarlaOpticalFlowCameraPublisher & | operator= (const CarlaOpticalFlowCameraPublisher &) |
赋值运算符重载 | |
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 float *data) |
设置图像数据,将光学流数据转换为RGBA图像数据 | |
const char * | type () const override |
~CarlaOpticalFlowCameraPublisher () | |
CarlaOpticalFlowCameraPublisher类的析构函数 | |
![]() | |
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 () |
初始化信息并设置CarlaOpticalFlowCameraPublisher的相关参数。 | |
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) |
设置感兴趣区域(ROI)信息 | |
Private 属性 | |
std::shared_ptr< CarlaOpticalFlowCameraPublisherImpl > | _impl |
std::shared_ptr< CarlaCameraInfoPublisherImpl > | _impl_info |
额外继承的成员函数 | |
![]() | |
std::string | _frame_id = "" |
std::string | _name = "" |
std::string | _parent = "" |
在文件 CarlaOpticalFlowCameraPublisher.h 第 21 行定义.
carla::ros2::CarlaOpticalFlowCameraPublisher::CarlaOpticalFlowCameraPublisher | ( | const char * | ros_name = "", |
const char * | parent = "" ) |
CarlaOpticalFlowCameraPublisher类的构造函数
初始化CarlaOpticalFlowCameraPublisher对象,创建内部实现对象和相机信息发布者对象。
ros_name | ROS节点名称 |
parent | 父节点或相关标识符 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 645 行定义.
引用了 carla::ros2::CarlaPublisher::_name, carla::ros2::CarlaPublisher::_parent , 以及 carla::ros2::CarlaPublisher::parent().
carla::ros2::CarlaOpticalFlowCameraPublisher::~CarlaOpticalFlowCameraPublisher | ( | ) |
CarlaOpticalFlowCameraPublisher类的析构函数
清理CarlaOpticalFlowCameraPublisher对象,释放与DDS(数据分发服务)相关的资源。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 656 行定义.
引用了 _impl , 以及 _impl_info.
carla::ros2::CarlaOpticalFlowCameraPublisher::CarlaOpticalFlowCameraPublisher | ( | const CarlaOpticalFlowCameraPublisher & | other | ) |
CarlaOpticalFlowCameraPublisher类的拷贝构造函数
创建CarlaOpticalFlowCameraPublisher对象的深拷贝。
other | 要拷贝的CarlaOpticalFlowCameraPublisher对象 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 694 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
carla::ros2::CarlaOpticalFlowCameraPublisher::CarlaOpticalFlowCameraPublisher | ( | CarlaOpticalFlowCameraPublisher && | other | ) |
CarlaOpticalFlowCameraPublisher类的移动构造函数
创建CarlaOpticalFlowCameraPublisher对象的移动拷贝,避免不必要的拷贝操作。
other | 要移动的CarlaOpticalFlowCameraPublisher对象 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 724 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaOpticalFlowCameraPublisher::HasBeenInitialized | ( | ) | const |
检查类是否已经被初始化。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 92 行定义.
引用了 _impl_info.
bool carla::ros2::CarlaOpticalFlowCameraPublisher::Init | ( | ) |
初始化类。
调用InitImage()和InitInfo()进行初始化,并返回两者的逻辑与结果。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 117 行定义.
引用了 InitImage() , 以及 InitInfo().
|
private |
初始化图像相关的资源。
创建一个DomainParticipant、Publisher、Topic和DataWriter用于发布图像数据。
设置DomainParticipant的QoS策略为默认值,并设置名称。
获取DomainParticipantFactory的实例。
创建DomainParticipant。
如果创建DomainParticipant失败,输出错误信息并返回false。
在DomainParticipant中注册数据类型。
设置Publisher的QoS策略为默认值。
创建Publisher。
如果创建Publisher失败,输出错误信息并返回false。
设置Topic的QoS策略为默认值。
构建Topic的名称。
创建Topic。
如果创建Topic失败,输出错误信息并返回false。
设置DataWriter的QoS策略为默认值,并修改历史内存策略。
获取DataWriter的监听器。
创建DataWriter。
如果创建DataWriter失败,输出错误信息并返回false。
设置帧ID为名称。
所有对象都成功创建,返回true。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 127 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
被这些函数引用 Init().
|
private |
初始化信息并设置CarlaOpticalFlowCameraPublisher的相关参数。
此函数负责初始化域参与者(DomainParticipant)、发布者(Publisher)、主题(Topic)和数据写入器(DataWriter), 并确保它们被正确创建。如果任何一步失败,函数将输出错误信息并返回false。
检查类型支持是否有效。如果_impl_info->_type为空,则输出错误信息并返回false。
设置域参与者的QoS策略,并将其命名为_name。
如果域参与者创建失败,输出错误信息并返回false。
在域参与者中注册类型。
设置发布者的QoS策略,并创建一个发布者。
如果发布者创建失败,输出错误信息并返回false。
设置主题的QoS策略,并创建一个主题。主题名称由基础名称、父级名称(如果存在)、自身名称和类型名称组成。
如果主题创建失败,输出错误信息并返回false。
设置数据写入器的QoS策略,并创建一个数据写入器。
如果数据写入器创建失败,输出错误信息并返回false。
设置帧ID为名称。
所有对象都成功创建,返回true。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 197 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
被这些函数引用 Init().
void carla::ros2::CarlaOpticalFlowCameraPublisher::InitInfoData | ( | uint32_t | x_offset, |
uint32_t | y_offset, | ||
uint32_t | height, | ||
uint32_t | width, | ||
float | fov, | ||
bool | do_rectify ) |
初始化摄像头信息数据。
x_offset | X轴偏移量 |
y_offset | Y轴偏移量 |
height | 图像高度 |
width | 图像宽度 |
fov | 视场角 |
do_rectify | 是否进行校正 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 105 行定义.
引用了 _impl_info , 以及 SetInfoRegionOfInterest().
CarlaOpticalFlowCameraPublisher & carla::ros2::CarlaOpticalFlowCameraPublisher::operator= | ( | CarlaOpticalFlowCameraPublisher && | other | ) |
移动赋值运算符重载
将另一个CarlaOpticalFlowCameraPublisher对象移动赋值给当前对象,避免不必要的拷贝操作。
other | 要移动赋值的CarlaOpticalFlowCameraPublisher对象 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 740 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaOpticalFlowCameraPublisher & carla::ros2::CarlaOpticalFlowCameraPublisher::operator= | ( | const CarlaOpticalFlowCameraPublisher & | other | ) |
赋值运算符重载
将另一个CarlaOpticalFlowCameraPublisher对象赋值给当前对象。
other | 要赋值的CarlaOpticalFlowCameraPublisher对象 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 708 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, _impl_info, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaOpticalFlowCameraPublisher::Publish | ( | ) |
发布图像和相关信息。
此函数负责调用PublishImage()和PublishInfo()函数来发布图像和相关信息。 如果两者都成功发布,则返回true;否则返回false。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 280 行定义.
引用了 PublishImage() , 以及 PublishInfo().
|
private |
发布图像数据。
此函数尝试使用DataWriter发布图像数据。根据返回的ReturnCode值,函数会输出相应的错误信息(如果有的话) 并返回发布是否成功的布尔值。
尝试写入图像数据到DataWriter。
根据返回的ReturnCode值处理发布结果。
true | 表示发布信息成功。 |
false | 表示通用错误。 |
false | 表示操作不支持。 |
false | 表示参数错误。 |
false | 表示前提条件未满足。 |
false | 表示资源不足。 |
false | 表示功能未启用。 |
false | 表示策略不可变。 |
false | 表示策略不一致。 |
false | 表示实体已被删除。 |
false | 表示操作超时。 |
false | 表示无数据。 |
false | 表示非法操作。 |
false | 表示安全策略不允许。 |
false | 表示未知错误,发布失败。 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 291 行定义.
引用了 _impl.
被这些函数引用 Publish().
|
private |
发布信息函数
此函数尝试通过数据写入器发布信息。根据返回码(ReturnCode_t)的不同,函数会返回不同的结果, 并在控制台输出相应的错误信息。
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 382 行定义.
被这些函数引用 Publish().
void carla::ros2::CarlaOpticalFlowCameraPublisher::SetCameraInfoData | ( | int32_t | seconds, |
uint32_t | nanoseconds ) |
设置相机信息数据的时间戳
该函数用于设置相机信息消息的时间戳和帧ID。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 627 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl_info, builtin_interfaces::msg::Time::nanosec() , 以及 builtin_interfaces::msg::Time::sec().
|
private |
设置图像数据
该函数用于设置图像的时间戳、高度、宽度以及图像数据。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
height | 图像的高度 |
width | 图像的宽度 |
data | 图像数据,使用右值引用和移动语义来避免不必要的拷贝 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 602 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, builtin_interfaces::msg::Time::nanosec() , 以及 builtin_interfaces::msg::Time::sec().
被这些函数引用 SetImageData().
void carla::ros2::CarlaOpticalFlowCameraPublisher::SetImageData | ( | int32_t | seconds, |
uint32_t | nanoseconds, | ||
size_t | height, | ||
size_t | width, | ||
const float * | data ) |
设置图像数据,将光学流数据转换为RGBA图像数据
该函数将输入的光学流数据(速度向量场)转换为RGBA格式的图像数据。 每个速度向量(vx, vy)被转换为一个HSV颜色值,然后转换为RGB格式,并附加一个透明度通道(Alpha)。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
height | 图像的高度 |
width | 图像的宽度 |
data | 指向包含光学流数据的浮点数组的指针,每个元素对(vx, vy)表示一个速度向量 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 473 行定义.
引用了 SetData().
|
private |
设置感兴趣区域(ROI)信息
该函数用于设置相机的感兴趣区域(Region Of Interest, ROI)信息, 包括ROI的起始点偏移(x_offset, y_offset)、高度(height)、宽度(width) 以及是否进行校正(do_rectify)。
x_offset | ROI起始点的x轴偏移量 |
y_offset | ROI起始点的y轴偏移量 |
height | ROI的高度 |
width | ROI的宽度 |
do_rectify | 是否对ROI进行校正 |
在文件 CarlaOpticalFlowCameraPublisher.cpp 第 582 行定义.
引用了 _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.
在文件 CarlaOpticalFlowCameraPublisher.h 第 52 行定义.
|
private |
|
private |