CarlaTransformPublisher类继承自CarlaPublisher,用于在CARLA中发布变换信息到ROS2。 更多...
#include <CarlaTransformPublisher.h>
Public 成员函数 | |
CarlaTransformPublisher (CarlaTransformPublisher &&) | |
移动构造函数,通过移动另一个CarlaTransformPublisher对象来初始化新对象。 | |
CarlaTransformPublisher (const CarlaTransformPublisher &) | |
拷贝构造函数,通过拷贝另一个CarlaTransformPublisher对象来初始化新对象。 | |
CarlaTransformPublisher (const char *ros_name="", const char *parent="") | |
构造函数,初始化CarlaTransformPublisher对象。 | |
bool | Init () |
初始化函数,用于初始化CarlaTransformPublisher对象。 | |
CarlaTransformPublisher & | operator= (CarlaTransformPublisher &&) |
移动赋值运算符,将另一个CarlaTransformPublisher对象的内容移动到当前对象。 | |
CarlaTransformPublisher & | operator= (const CarlaTransformPublisher &) |
拷贝赋值运算符,将另一个CarlaTransformPublisher对象的内容复制到当前对象。 | |
bool | Publish () |
发布函数,用于将变换信息发布到ROS2。 | |
void | SetData (int32_t seconds, uint32_t nanoseconds, const float *translation, const float *rotation) |
设置变换数据的函数。 | |
const char * | type () const override |
重写type函数,返回当前对象的类型字符串。 | |
~CarlaTransformPublisher () | |
析构函数,释放CarlaTransformPublisher对象占用的资源。 | |
![]() | |
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 属性 | |
std::shared_ptr< CarlaTransformPublisherImpl > | _impl |
指向CarlaTransformPublisherImpl的智能指针,用于隐藏实现细节。 | |
额外继承的成员函数 | |
![]() | |
std::string | _frame_id = "" |
std::string | _name = "" |
std::string | _parent = "" |
CarlaTransformPublisher类继承自CarlaPublisher,用于在CARLA中发布变换信息到ROS2。
在文件 CarlaTransformPublisher.h 第 31 行定义.
carla::ros2::CarlaTransformPublisher::CarlaTransformPublisher | ( | const char * | ros_name = "", |
const char * | parent = "" ) |
构造函数,初始化CarlaTransformPublisher对象。
CarlaTransformPublisher 类的构造函数
ros_name | ROS2节点的名称,默认为空字符串。 |
parent | 父节点的名称,默认为空字符串。 |
初始化 CarlaTransformPublisher 对象,并设置 ROS 名称和父帧ID。
ros_name | ROS 节点名称 |
parent | 父帧ID |
在文件 CarlaTransformPublisher.cpp 第 317 行定义.
引用了 carla::ros2::CarlaPublisher::_name, carla::ros2::CarlaPublisher::_parent , 以及 carla::ros2::CarlaPublisher::parent().
carla::ros2::CarlaTransformPublisher::~CarlaTransformPublisher | ( | ) |
析构函数,释放CarlaTransformPublisher对象占用的资源。
CarlaTransformPublisher 类的析构函数
清理资源,删除与 DDS(Data Distribution Service)相关的对象。
在文件 CarlaTransformPublisher.cpp 第 327 行定义.
引用了 _impl.
carla::ros2::CarlaTransformPublisher::CarlaTransformPublisher | ( | const CarlaTransformPublisher & | other | ) |
拷贝构造函数,通过拷贝另一个CarlaTransformPublisher对象来初始化新对象。
CarlaTransformPublisher 类的拷贝构造函数
other | 要拷贝的CarlaTransformPublisher对象。 |
创建一个与现有对象相同的 CarlaTransformPublisher 对象。 注意:这里浅拷贝了 _impl 指针,假设 CarlaTransformPublisherImpl 类是正确管理其生命周期的。
other | 要拷贝的对象 |
在文件 CarlaTransformPublisher.cpp 第 351 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
carla::ros2::CarlaTransformPublisher::CarlaTransformPublisher | ( | CarlaTransformPublisher && | other | ) |
移动构造函数,通过移动另一个CarlaTransformPublisher对象来初始化新对象。
CarlaTransformPublisher 类的移动构造函数
other | 要移动的CarlaTransformPublisher对象。 |
创建一个新的 CarlaTransformPublisher 对象,并将现有对象的资源移动到新对象中。
other | 要移动的对象 |
在文件 CarlaTransformPublisher.cpp 第 381 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaTransformPublisher::Init | ( | ) |
初始化函数,用于初始化CarlaTransformPublisher对象。
初始化CarlaTransformPublisher对象
该函数负责初始化CarlaTransformPublisher对象,包括设置DomainParticipant、Publisher、Topic和DataWriter。 如果在初始化过程中遇到任何错误,函数将输出错误信息并返回false。
检查_type是否为nullptr。如果是,则表示TypeSupport无效,输出错误信息并返回false。
设置DomainParticipant的QoS策略,并使用默认QoS创建一个DomainParticipant。 设置DomainParticipant的名称为_name。
如果DomainParticipant创建失败,则输出错误信息并返回false。
使用_type注册类型到DomainParticipant。
设置Publisher的QoS策略,并使用默认QoS创建一个Publisher。
如果Publisher创建失败,则输出错误信息并返回false。
设置Topic的QoS策略,并创建一个名为"rt/tf"的Topic。
如果Topic创建失败,则输出错误信息并返回false。
设置DataWriter的QoS策略,并创建一个DataWriter。 将history_memory_policy设置为PREALLOCATED_WITH_REALLOC_MEMORY_MODE。
如果DataWriter创建失败,则输出错误信息并返回false。
设置_frame_id为_name。
初始化成功,返回true。
在文件 CarlaTransformPublisher.cpp 第 74 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl , 以及 carla::ros2::CarlaPublisher::_name.
CarlaTransformPublisher & carla::ros2::CarlaTransformPublisher::operator= | ( | CarlaTransformPublisher && | other | ) |
移动赋值运算符,将另一个CarlaTransformPublisher对象的内容移动到当前对象。
移动赋值运算符重载
other | 要移动的CarlaTransformPublisher对象。 |
将现有对象的资源移动到另一个 CarlaTransformPublisher 对象。
other | 要移动赋值的对象 |
在文件 CarlaTransformPublisher.cpp 第 395 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
CarlaTransformPublisher & carla::ros2::CarlaTransformPublisher::operator= | ( | const CarlaTransformPublisher & | other | ) |
拷贝赋值运算符,将另一个CarlaTransformPublisher对象的内容复制到当前对象。
赋值运算符重载
other | 要复制的CarlaTransformPublisher对象。 |
将现有对象的值赋给另一个 CarlaTransformPublisher 对象。 注意:这里浅拷贝了 _impl 指针。
other | 要赋值的对象 |
在文件 CarlaTransformPublisher.cpp 第 366 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_name , 以及 carla::ros2::CarlaPublisher::_parent.
bool carla::ros2::CarlaTransformPublisher::Publish | ( | ) |
发布函数,用于将变换信息发布到ROS2。
发布Carla的变换信息
该函数负责使用DataWriter发布_impl->_transform中的数据。根据返回码(ReturnCode_t)处理不同的错误情况, 并输出相应的错误信息。如果发布成功,则返回true;否则返回false。
声明一个InstanceHandle_t类型的变量instance_handle,用于接收write方法的返回值。
调用DataWriter的write方法发布_impl->_transform数据,并获取返回码。
根据返回码处理不同的错误情况。
发布成功,返回true。
通用错误
请求的操作不受支持
传递给函数的参数无效
操作的前置条件未满足
系统资源不足,无法完成操作
实体未启用,无法执行操作
试图更改不可变的QoS策略
QoS策略不一致,无法设置
实体已被删除
操作超时
请求的数据不存在
执行了非法操作
安全策略不允许执行此操作
如果返回码不是预定义的任何值,则输出"UNKNOWN"错误信息
在文件 CarlaTransformPublisher.cpp 第 158 行定义.
引用了 _impl.
void carla::ros2::CarlaTransformPublisher::SetData | ( | int32_t | seconds, |
uint32_t | nanoseconds, | ||
const float * | translation, | ||
const float * | rotation ) |
设置变换数据的函数。
设置CarlaTransformPublisher的数据
seconds | 变换的时间戳,秒部分。 |
nanoseconds | 变换的时间戳,纳秒部分。 |
translation | 变换的平移部分,数组包含x, y, z三个分量。 |
rotation | 变换的旋转部分,数组包含roll, pitch, yaw三个分量。 |
此函数用于更新位置和时间信息,并计算四元数旋转。 如果传入的位置或旋转与上一次的不同,则更新内部状态,并计算新的四元数旋转。
seconds | 时间戳的秒部分 |
nanoseconds | 时间戳的纳秒部分 |
translation | 指向包含x, y, z位置信息的浮点数组的指针 |
rotation | 指向包含绕x, y, z轴旋转角度(以度为单位)的浮点数组的指针 |
在文件 CarlaTransformPublisher.cpp 第 256 行定义.
引用了 carla::ros2::CarlaPublisher::_frame_id, _impl, carla::ros2::CarlaPublisher::_parent, geometry_msgs::msg::TransformStamped::child_frame_id(), geometry_msgs::msg::TransformStamped::header(), builtin_interfaces::msg::Time::nanosec(), geometry_msgs::msg::Transform::rotation(), builtin_interfaces::msg::Time::sec(), geometry_msgs::msg::TransformStamped::transform() , 以及 geometry_msgs::msg::Transform::translation().
|
inlineoverridevirtual |
重写type函数,返回当前对象的类型字符串。
实现了 carla::ros2::CarlaPublisher.
在文件 CarlaTransformPublisher.h 第 87 行定义.
|
private |
指向CarlaTransformPublisherImpl的智能指针,用于隐藏实现细节。
在文件 CarlaTransformPublisher.h 第 93 行定义.
被这些函数引用 CarlaTransformPublisher(), CarlaTransformPublisher(), Init(), operator=(), operator=(), Publish(), SetData() , 以及 ~CarlaTransformPublisher().