用于发布CARLA碰撞事件的ROS 2发布者类。 更多...
#include <CarlaCollisionPublisher.h>
Public 成员函数 | |
CarlaCollisionPublisher (CarlaCollisionPublisher &&) | |
移动构造函数。 | |
CarlaCollisionPublisher (const CarlaCollisionPublisher &) | |
拷贝构造函数。 | |
CarlaCollisionPublisher (const char *ros_name="", const char *parent="") | |
构造函数,初始化CarlaCollisionPublisher。 | |
bool | Init () |
初始化发布者。 | |
CarlaCollisionPublisher & | operator= (CarlaCollisionPublisher &&) |
移动赋值运算符。 | |
CarlaCollisionPublisher & | operator= (const CarlaCollisionPublisher &) |
赋值运算符。 | |
bool | Publish () |
发布碰撞事件信息。 | |
void | SetData (int32_t seconds, uint32_t nanoseconds, uint32_t actor_id, float x, float y, float z) |
设置要发布的碰撞事件数据。 | |
const char * | type () const override |
重写基类中的type函数,返回此发布者的类型。 | |
~CarlaCollisionPublisher () | |
析构函数,清理资源并释放内部实现。 | |
![]() | |
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, uint32_t actor_id, std::vector< float > &&data) |
另一个版本的SetData函数,允许传递碰撞位置数据的向量。 | |
Private 属性 | |
std::shared_ptr< CarlaCollisionPublisherImpl > | _impl |
指向内部实现结构体的智能指针。 | |
额外继承的成员函数 | |
![]() | |
std::string | _frame_id = "" |
std::string | _name = "" |
std::string | _parent = "" |
用于发布CARLA碰撞事件的ROS 2发布者类。
该类继承自CarlaPublisher,并专门用于发布碰撞事件信息,如碰撞时间、碰撞物体的ID和碰撞位置。
在文件 CarlaCollisionPublisher.h 第 31 行定义.
carla::ros2::CarlaCollisionPublisher::CarlaCollisionPublisher | ( | const char * | ros_name = "", |
const char * | parent = "" ) |
构造函数,初始化CarlaCollisionPublisher。
CarlaCollisionPublisher类的构造函数
ros_name | ROS 2节点的名称,默认为空字符串。 |
parent | 父节点的名称,默认为空字符串。 |
初始化CarlaCollisionPublisher对象,包括设置ROS名称、父节点以及内部实现对象。
ros_name | ROS节点名称 |
parent | 父节点名称 |
在文件 CarlaCollisionPublisher.cpp 第 312 行定义.
引用了 carla::ros2::CarlaPublisher::_name, carla::ros2::CarlaPublisher::_parent , 以及 carla::ros2::CarlaPublisher::parent().
carla::ros2::CarlaCollisionPublisher::~CarlaCollisionPublisher | ( | ) |
析构函数,清理资源并释放内部实现。
CarlaCollisionPublisher类的析构函数
清理资源,包括删除数据写入器、发布者、主题和参与者。
在文件 CarlaCollisionPublisher.cpp 第 322 行定义.
引用了 _impl.
carla::ros2::CarlaCollisionPublisher::CarlaCollisionPublisher | ( | const CarlaCollisionPublisher & | other | ) |
拷贝构造函数。
CarlaCollisionPublisher类的拷贝构造函数
other | 要拷贝的CarlaCollisionPublisher对象。 |
创建并初始化一个新的CarlaCollisionPublisher对象,作为另一个CarlaCollisionPublisher对象的拷贝。
other | 要拷贝的CarlaCollisionPublisher对象 |
在文件 CarlaCollisionPublisher.cpp 第 345 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
carla::ros2::CarlaCollisionPublisher::CarlaCollisionPublisher | ( | CarlaCollisionPublisher && | other | ) |
移动构造函数。
CarlaCollisionPublisher类的移动构造函数
other | 要移动的CarlaCollisionPublisher对象。 |
创建并初始化一个新的CarlaCollisionPublisher对象,作为另一个CarlaCollisionPublisher对象的移动。
other | 要移动的CarlaCollisionPublisher对象 |
在文件 CarlaCollisionPublisher.cpp 第 374 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaCollisionPublisher::Init | ( | ) |
初始化发布者。
初始化CarlaCollisionPublisher
该函数负责初始化CarlaCollisionPublisher,包括创建DDS域参与者、发布者、主题和数据写入器,并注册消息类型。
检查类型支持是否有效
如果_type为nullptr,则打印错误信息并返回false。
设置域参与者QoS策略
使用默认的域参与者QoS策略,并设置名称。
创建域参与者
使用DomainParticipantFactory创建域参与者,如果失败则打印错误信息并返回false。
注册类型支持
使用类型支持对象注册消息类型到域参与者。
设置发布者QoS策略
使用默认的发布者QoS策略。
创建发布者
在域参与者中创建一个发布者,如果失败则打印错误信息并返回false。
设置主题QoS策略
使用默认的主题QoS策略。
构建主题名称
根据_name和_parent成员变量构建主题名称。
创建主题
在域参与者中创建一个主题,如果失败则打印错误信息并返回false。
设置数据写入器QoS策略
使用默认的数据写入器QoS策略,并设置历史内存策略为预分配并允许重新分配。
创建数据写入器
在发布者中创建一个数据写入器,并关联监听器,如果失败则打印错误信息并返回false。
设置帧ID
将_frame_id设置为_name的值。
初始化成功
初始化所有DDS组件成功后返回true。
在文件 CarlaCollisionPublisher.cpp 第 90 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaCollisionPublisher & carla::ros2::CarlaCollisionPublisher::operator= | ( | CarlaCollisionPublisher && | other | ) |
移动赋值运算符。
移动赋值运算符重载
other | 要移动赋值的CarlaCollisionPublisher对象。 |
将当前对象设置为另一个CarlaCollisionPublisher对象的移动。
other | 要移动的CarlaCollisionPublisher对象 |
在文件 CarlaCollisionPublisher.cpp 第 388 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaCollisionPublisher & carla::ros2::CarlaCollisionPublisher::operator= | ( | const CarlaCollisionPublisher & | other | ) |
赋值运算符。
赋值运算符重载
other | 要赋值的CarlaCollisionPublisher对象。 |
将当前对象设置为另一个CarlaCollisionPublisher对象的拷贝。
other | 要拷贝的CarlaCollisionPublisher对象 |
在文件 CarlaCollisionPublisher.cpp 第 359 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaCollisionPublisher::Publish | ( | ) |
发布碰撞事件信息。
发布碰撞数据
此函数尝试通过Fast-RTPS发布碰撞事件数据。 根据返回码(ReturnCode_t)判断发布是否成功,并输出相应的错误信息。
用于存储Fast-RTPS实例句柄的变量
调用DataWriter的write方法尝试发布数据,并获取返回码
如果返回码为RETCODE_OK,表示发布成功
处理各种可能的错误返回码,并输出相应的错误信息
如果返回码未知,则输出"UNKNOWN"错误信息
在文件 CarlaCollisionPublisher.cpp 第 192 行定义.
引用了 _impl.
void carla::ros2::CarlaCollisionPublisher::SetData | ( | int32_t | seconds, |
uint32_t | nanoseconds, | ||
uint32_t | actor_id, | ||
float | x, | ||
float | y, | ||
float | z ) |
设置要发布的碰撞事件数据。
设置碰撞数据,使用单独的x, y, z坐标
seconds | 碰撞发生的时间(秒)。 |
nanoseconds | 碰撞发生的时间(纳秒)。 |
actor_id | 发生碰撞的物体的ID。 |
x | 碰撞位置的X坐标。 |
y | 碰撞位置的Y坐标。 |
z | 碰撞位置的Z坐标。 |
该函数将时间戳(秒和纳秒)、actor_id以及碰撞的x, y, z坐标作为参数, 并将这些数据封装成向量后调用重载的SetData函数。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
actor_id | 发生碰撞的actor的ID |
x | 碰撞点的x坐标 |
y | 碰撞点的y坐标 |
z | 碰撞点的z坐标 |
在文件 CarlaCollisionPublisher.cpp 第 272 行定义.
引用了 SetData().
被这些函数引用 SetData().
|
private |
另一个版本的SetData函数,允许传递碰撞位置数据的向量。
设置碰撞数据,使用向量数据
这个函数是私有的,意味着它只能在CarlaCollisionPublisher类内部被调用。
seconds | 碰撞发生的时间(秒)。 |
nanoseconds | 碰撞发生的时间(纳秒)。 |
actor_id | 发生碰撞的物体的ID。 |
data | 包含碰撞位置数据的向量(X, Y, Z)。 |
该函数将时间戳(秒和纳秒)、actor_id以及包含碰撞数据的向量作为参数, 并使用这些数据填充碰撞事件的消息结构。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
actor_id | 发生碰撞的actor的ID |
data | 包含碰撞点x, y, z坐标的向量 |
在文件 CarlaCollisionPublisher.cpp 第 287 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, builtin_interfaces::msg::Time::nanosec(), builtin_interfaces::msg::Time::sec(), geometry_msgs::msg::Vector3::x(), geometry_msgs::msg::Vector3::y() , 以及 geometry_msgs::msg::Vector3::z().
|
inlineoverridevirtual |
重写基类中的type函数,返回此发布者的类型。
实现了 carla::ros2::CarlaPublisher.
在文件 CarlaCollisionPublisher.h 第 98 行定义.
|
private |
指向内部实现结构体的智能指针。
使用shared_ptr来管理CarlaCollisionPublisherImpl的生命周期,允许多个对象共享同一个实现。
在文件 CarlaCollisionPublisher.h 第 119 行定义.
被这些函数引用 CarlaCollisionPublisher(), CarlaCollisionPublisher(), Init(), operator=(), operator=(), Publish(), SetData() , 以及 ~CarlaCollisionPublisher().