CARLA
 
载入中...
搜索中...
未找到
CarlaCollisionPublisher.h
浏览该文件的文档.
1// Copyright (c) 2022 Computer Vision Center (CVC) at the Universitat Autonoma de Barcelona (UAB).
2// This work is licensed under the terms of the MIT license.
3// For a copy, see <https://opensource.org/licenses/MIT>.
4
5#pragma once
6#define _GLIBCXX_USE_CXX11_ABI 0
7
8#include <memory>
9#include <vector>
10
11#include "CarlaPublisher.h"
12/**
13 * @namespace carla::ros2
14 * @brief 命名空间carla::ros2,包含了与CARLA和ROS 2集成相关的类和函数。
15 */
16namespace carla {
17namespace ros2 {
18 /**
19 * @struct CarlaCollisionPublisherImpl
20 * @brief CarlaCollisionPublisher的内部实现结构体,用于隐藏实现细节。
21 *
22 * 该结构体的完整定义在源文件中,这里仅声明了一个指向它的智能指针类型。
23 */
24 struct CarlaCollisionPublisherImpl;
25 /**
26 * @class CarlaCollisionPublisher
27 * @brief 用于发布CARLA碰撞事件的ROS 2发布者类。
28 *
29 * 该类继承自CarlaPublisher,并专门用于发布碰撞事件信息,如碰撞时间、碰撞物体的ID和碰撞位置。
30 */
32 public:
33 /**
34 * @brief 构造函数,初始化CarlaCollisionPublisher。
35 *
36 * @param ros_name ROS 2节点的名称,默认为空字符串。
37 * @param parent 父节点的名称,默认为空字符串。
38 */
39 CarlaCollisionPublisher(const char* ros_name = "", const char* parent = "");
40 /**
41 * @brief 析构函数,清理资源并释放内部实现。
42 */
44 /**
45 * @brief 拷贝构造函数。
46 *
47 * @param other 要拷贝的CarlaCollisionPublisher对象。
48 */
50 /**
51 * @brief 赋值运算符。
52 *
53 * @param other 要赋值的CarlaCollisionPublisher对象。
54 * @return 引用到当前对象。
55 */
57 /**
58 * @brief 移动构造函数。
59 *
60 * @param other 要移动的CarlaCollisionPublisher对象。
61 */
63 /**
64 * @brief 移动赋值运算符。
65 *
66 * @param other 要移动赋值的CarlaCollisionPublisher对象。
67 * @return 引用到当前对象。
68 */
70 /**
71 * @brief 初始化发布者。
72 *
73 * @return 如果初始化成功,则返回true;否则返回false。
74 */
75 bool Init();
76 /**
77 * @brief 发布碰撞事件信息。
78 *
79 * @return 如果发布成功,则返回true;否则返回false。
80 */
81 bool Publish();
82 /**
83 * @brief 设置要发布的碰撞事件数据。
84 *
85 * @param seconds 碰撞发生的时间(秒)。
86 * @param nanoseconds 碰撞发生的时间(纳秒)。
87 * @param actor_id 发生碰撞的物体的ID。
88 * @param x 碰撞位置的X坐标。
89 * @param y 碰撞位置的Y坐标。
90 * @param z 碰撞位置的Z坐标。
91 */
92 void SetData(int32_t seconds, uint32_t nanoseconds, uint32_t actor_id, float x, float y, float z);
93 /**
94 * @brief 重写基类中的type函数,返回此发布者的类型。
95 *
96 * @return 指向类型名称的常量字符指针,此处为"collision"。
97 */
98 const char* type() const override { return "collision"; }
99
100 private:
101 /**
102 * @brief 另一个版本的SetData函数,允许传递碰撞位置数据的向量。
103 *
104 * 这个函数是私有的,意味着它只能在CarlaCollisionPublisher类内部被调用。
105 *
106 * @param seconds 碰撞发生的时间(秒)。
107 * @param nanoseconds 碰撞发生的时间(纳秒)。
108 * @param actor_id 发生碰撞的物体的ID。
109 * @param data 包含碰撞位置数据的向量(X, Y, Z)。
110 */
111 void SetData(int32_t seconds, uint32_t nanoseconds, uint32_t actor_id, std::vector<float>&& data);
112
113 private:
114 /**
115 * @brief 指向内部实现结构体的智能指针。
116 *
117 * 使用shared_ptr来管理CarlaCollisionPublisherImpl的生命周期,允许多个对象共享同一个实现。
118 */
119 std::shared_ptr<CarlaCollisionPublisherImpl> _impl;
120 };
121}
122}
用于发布CARLA碰撞事件的ROS 2发布者类。
std::shared_ptr< CarlaCollisionPublisherImpl > _impl
指向内部实现结构体的智能指针。
bool Publish()
发布碰撞事件信息。
void SetData(int32_t seconds, uint32_t nanoseconds, uint32_t actor_id, float x, float y, float z)
设置要发布的碰撞事件数据。
CarlaCollisionPublisher(const char *ros_name="", const char *parent="")
构造函数,初始化CarlaCollisionPublisher。
const char * type() const override
重写基类中的type函数,返回此发布者的类型。
CarlaCollisionPublisher & operator=(const CarlaCollisionPublisher &)
赋值运算符。
~CarlaCollisionPublisher()
析构函数,清理资源并释放内部实现。
const std::string & parent() const
CARLA模拟器的主命名空间。
Definition Carla.cpp:139