#include <CarlaRadarPublisher.h>
Public 成员函数 | |
CarlaRadarPublisher (CarlaRadarPublisher &&) | |
CarlaRadarPublisher 类的移动构造函数 | |
CarlaRadarPublisher (const CarlaRadarPublisher &) | |
CarlaRadarPublisher 类的拷贝构造函数 | |
CarlaRadarPublisher (const char *ros_name="", const char *parent="") | |
CarlaRadarPublisher 类的构造函数 | |
bool | Init () |
初始化CarlaRadarPublisher对象。 | |
CarlaRadarPublisher & | operator= (CarlaRadarPublisher &&) |
移动赋值运算符 | |
CarlaRadarPublisher & | operator= (const CarlaRadarPublisher &) |
拷贝赋值运算符 | |
bool | Publish () |
发布雷达数据 | |
void | SetData (int32_t seconds, uint32_t nanoseconds, size_t height, size_t width, size_t elements, const uint8_t *data) |
设置雷达数据 | |
const char * | type () const override |
~CarlaRadarPublisher () | |
CarlaRadarPublisher 类的析构函数 | |
![]() | |
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 成员函数 | |
void | SetData (int32_t seconds, uint32_t nanoseconds, size_t height, size_t width, size_t elements, std::vector< uint8_t > &&data) |
设置雷达数据并发布 | |
Private 属性 | |
std::shared_ptr< CarlaRadarPublisherImpl > | _impl |
额外继承的成员函数 | |
![]() | |
std::string | _frame_id = "" |
std::string | _name = "" |
std::string | _parent = "" |
在文件 CarlaRadarPublisher.h 第 19 行定义.
carla::ros2::CarlaRadarPublisher::CarlaRadarPublisher | ( | const char * | ros_name = "", |
const char * | parent = "" ) |
CarlaRadarPublisher 类的构造函数
初始化 CarlaRadarPublisher 对象,并创建一个 CarlaRadarPublisherImpl 对象的智能指针。
ros_name | ROS 节点的名称 |
parent | 父节点的名称 |
< ROS 节点的名称
< 父节点的名称
在文件 CarlaRadarPublisher.cpp 第 398 行定义.
引用了 carla::ros2::CarlaPublisher::_name, carla::ros2::CarlaPublisher::_parent , 以及 carla::ros2::CarlaPublisher::parent().
carla::ros2::CarlaRadarPublisher::~CarlaRadarPublisher | ( | ) |
CarlaRadarPublisher 类的析构函数
清理资源,包括删除 DataWriter、Publisher、Topic 和 Participant。
< 删除 DataWriter
< 删除 Publisher
< 删除 Topic
< 删除 Participant
在文件 CarlaRadarPublisher.cpp 第 408 行定义.
引用了 _impl.
carla::ros2::CarlaRadarPublisher::CarlaRadarPublisher | ( | const CarlaRadarPublisher & | other | ) |
CarlaRadarPublisher 类的拷贝构造函数
使用另一个 CarlaRadarPublisher 对象来初始化当前对象。
other | 另一个 CarlaRadarPublisher 对象 |
< 拷贝帧 ID
< 拷贝 ROS 节点的名称
< 拷贝父节点的名称
< 共享相同的 CarlaRadarPublisherImpl 对象
在文件 CarlaRadarPublisher.cpp 第 431 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
carla::ros2::CarlaRadarPublisher::CarlaRadarPublisher | ( | CarlaRadarPublisher && | other | ) |
CarlaRadarPublisher 类的移动构造函数
使用另一个 CarlaRadarPublisher 对象(右值)来初始化当前对象。
other | 另一个 CarlaRadarPublisher 对象(右值) |
< 移动帧 ID
< 移动 ROS 节点的名称
< 移动父节点的名称
< 移动 CarlaRadarPublisherImpl 对象
在文件 CarlaRadarPublisher.cpp 第 460 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaRadarPublisher::Init | ( | ) |
初始化CarlaRadarPublisher对象。
此函数负责创建Fast-DDS域参与者、发布者、主题和数据写入器,并注册ROS 2点云消息类型。
检查类型支持是否有效。如果_impl->_type为nullptr,表示类型支持无效,打印错误信息并返回false。
设置域参与者(DomainParticipant)的质量服务(Qos)参数,使用默认值,并设置名称。
检查域参与者是否创建成功。如果为nullptr,表示创建失败,打印错误信息并返回false。
注册类型支持到域参与者。
设置发布者(Publisher)的质量服务(Qos)参数,使用默认值。
创建发布者。
检查发布者是否创建成功。如果为nullptr,表示创建失败,打印错误信息并返回false。
设置主题(Topic)的质量服务(Qos)参数,使用默认值。
构造主题名称,根据基础名称"rt/carla/"和可能的父级名称以及本对象的名称。
创建主题。
检查主题是否创建成功。如果为nullptr,表示创建失败,打印错误信息并返回false。
设置数据写入器(DataWriter)的质量服务(Qos)参数,使用默认值,并设置历史内存策略为预分配并重新分配模式。
获取数据写入器监听器实例。
创建数据写入器。
检查数据写入器是否创建成功。如果为nullptr,表示创建失败,打印错误信息并返回false。
初始化成功,返回true。
在文件 CarlaRadarPublisher.cpp 第 104 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaRadarPublisher & carla::ros2::CarlaRadarPublisher::operator= | ( | CarlaRadarPublisher && | other | ) |
移动赋值运算符
使用另一个 CarlaRadarPublisher 对象(右值)来更新当前对象。
other | 另一个 CarlaRadarPublisher 对象(右值) |
< 移动帧 ID
< 移动 ROS 节点的名称
< 移动父节点的名称
< 移动 CarlaRadarPublisherImpl 对象
在文件 CarlaRadarPublisher.cpp 第 474 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaRadarPublisher & carla::ros2::CarlaRadarPublisher::operator= | ( | const CarlaRadarPublisher & | other | ) |
拷贝赋值运算符
使用另一个 CarlaRadarPublisher 对象来更新当前对象。
other | 另一个 CarlaRadarPublisher 对象 |
< 拷贝帧 ID
< 拷贝 ROS 节点的名称
< 拷贝父节点的名称
< 共享相同的 CarlaRadarPublisherImpl 对象
在文件 CarlaRadarPublisher.cpp 第 445 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaRadarPublisher::Publish | ( | ) |
发布雷达数据
此函数尝试通过Fast-RTPS发布雷达数据。根据返回代码,函数会返回不同的结果,并在控制台上打印相应的错误信息。
Fast-RTPS实例句柄
尝试写入雷达数据到数据写入器,并获取返回代码
根据返回代码处理不同的结果
数据成功发布
通用错误
操作不支持
参数错误
先决条件未满足
资源不足
功能未启用
不可变策略
策略不一致
已被删除
超时
无数据
非法操作
安全策略不允许
未知错误
在文件 CarlaRadarPublisher.cpp 第 203 行定义.
引用了 _impl.
void carla::ros2::CarlaRadarPublisher::SetData | ( | int32_t | seconds, |
uint32_t | nanoseconds, | ||
size_t | height, | ||
size_t | width, | ||
size_t | elements, | ||
const uint8_t * | data ) |
设置雷达数据
该函数接收雷达检测数据,并将其转换为内部使用的格式,然后调用另一个重载的SetData函数来发布数据。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
height | 数据的高度(通常用于图像数据,这里可能表示雷达扫描的垂直分辨率) |
width | 数据的宽度(通常用于图像数据,这里可能表示雷达扫描的水平分辨率) |
elements | 数据点的数量 |
data | 指向雷达检测数据的指针,数据格式为carla::sensor::data::RadarDetection |
在文件 CarlaRadarPublisher.cpp 第 294 行定义.
引用了 carla::sensor::data::RadarDetection::altitude, carla::sensor::data::RadarDetection::azimuth, carla::sensor::data::RadarDetection::depth, carla::ros2::RadarDetectionWithPosition::detection, SetData(), carla::ros2::RadarDetectionWithPosition::x, carla::ros2::RadarDetectionWithPosition::y , 以及 carla::ros2::RadarDetectionWithPosition::z.
被这些函数引用 SetData().
|
private |
设置雷达数据并发布
该函数接收时间戳、数据尺寸、数据点数量以及数据本身,然后将这些数据封装成ROS消息格式并发布。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
height | 数据的高度 |
width | 数据的宽度 |
elements | 数据点的数量 |
data | 包含雷达检测数据的向量,数据格式为RadarDetectionWithPosition |
在文件 CarlaRadarPublisher.cpp 第 331 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, sensor_msgs::msg::PointField::count(), sensor_msgs::msg::PointField::datatype(), sensor_msgs::msg::PointField::name(), builtin_interfaces::msg::Time::nanosec(), sensor_msgs::msg::PointField::offset(), sensor_msgs::msg::PointField__FLOAT32 , 以及 builtin_interfaces::msg::Time::sec().
|
inlineoverridevirtual |
实现了 carla::ros2::CarlaPublisher.
在文件 CarlaRadarPublisher.h 第 32 行定义.
|
private |
在文件 CarlaRadarPublisher.h 第 38 行定义.
被这些函数引用 CarlaRadarPublisher(), CarlaRadarPublisher(), Init(), operator=(), operator=(), Publish(), SetData() , 以及 ~CarlaRadarPublisher().