CARLA
 
载入中...
搜索中...
未找到
CarlaEgoVehicleControlSubscriber.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 "CarlaSubscriber.h"
13
14namespace carla {
15namespace ros2 {
16
17 /// CarlaEgoVehicleControlSubscriber的内部实现结构,用于隐藏实现细节。
18 struct CarlaEgoVehicleControlSubscriberImpl;
19 /// CarlaEgoVehicleControlSubscriber类,用于订阅并处理来自ROS2的自动驾驶车辆控制消息
21 public:
22 /// 构造函数,初始化用户并关联到指定的车辆。
23 /// @param vehicle 指向车辆实例的指针。
24 /// @param ros_name ROS2节点的名称,默认为空字符串。
25 /// @param parent 父节点的名称,默认为空字符串。
26 CarlaEgoVehicleControlSubscriber(void* vehicle, const char* ros_name = "", const char* parent = "");
27 /// 析构函数,清理资源并销毁用户。
29 /// 拷贝构造函数,创建当前对象的深拷贝。
31 /// 拷贝赋值运算符,用于深拷贝赋值。
33 /// 移动构造函数,创建当前对象的移动拷贝。
35 /// 移动赋值运算符,用于移动赋值。
37 /// 检查是否有新的控制消息到达。
38 /// @return 如果有新消息,则返回true;否则返回false。
39 bool HasNewMessage();
40 /// 检查用户是否仍然活跃。
41 /// @return 如果用户活跃,则返回true;否则返回false
42 bool IsAlive();
43 /// 获取最新的车辆控制消息。
44 /// @return 包含控制指令的VehicleControl对象。
46 /// 获取与用户关联的车辆实例的指针。
47 /// @return 指向车辆实例的指针。
48 void* GetVehicle();
49 /// 初始化用户。
50 /// @return 如果初始化成功,则返回true;否则返回false。
51 bool Init();
52 /// 读取并处理新的控制消息。
53 /// @return 如果读取成功,则返回true;否则返回false。
54 bool Read();
55 /// 返回用户的类型名称。
56 /// @return 类型为"Ego vehicle control"的字符串。
57 const char* type() const override { return "Ego vehicle control"; }
58
59 /// (内部使用)将控制消息转发给内部处理函数。
60 /// @param control 包含控制指令的VehicleControl对象。
61 /// @warning 此方法仅供内部使用,外部调用可能会导致未定义行为。
62 void ForwardMessage(VehicleControl control);
63 /// 销毁用户并释放相关资源。
64 void DestroySubscriber();
65 private:
66 /// 设置内部数据,包括时间戳、车辆ID和控制数据。
67 /// @param seconds 时间戳的秒部分。
68 /// @param nanoseconds 时间戳的纳秒部分。
69 /// @param actor_id 车辆ID。
70 /// @param data 控制指令的浮点数数组。
71 void SetData(int32_t seconds, uint32_t nanoseconds, uint32_t actor_id, std::vector<float>&& data);
72
73 private:
74 /// 指向内部实现结构的智能指针,用于隐藏实现细节。
75 std::shared_ptr<CarlaEgoVehicleControlSubscriberImpl> _impl;
76 };
77}
78}
CarlaEgoVehicleControlSubscriber类,用于订阅并处理来自ROS2的自动驾驶车辆控制消息
void SetData(int32_t seconds, uint32_t nanoseconds, uint32_t actor_id, std::vector< float > &&data)
设置内部数据,包括时间戳、车辆ID和控制数据。
const char * type() const override
返回用户的类型名称。
void * GetVehicle()
获取与用户关联的车辆实例的指针。
CarlaEgoVehicleControlSubscriber & operator=(const CarlaEgoVehicleControlSubscriber &)
拷贝赋值运算符,用于深拷贝赋值。
VehicleControl GetMessage()
获取最新的车辆控制消息。
CarlaEgoVehicleControlSubscriber(void *vehicle, const char *ros_name="", const char *parent="")
构造函数,初始化用户并关联到指定的车辆。
~CarlaEgoVehicleControlSubscriber()
析构函数,清理资源并销毁用户。
std::shared_ptr< CarlaEgoVehicleControlSubscriberImpl > _impl
指向内部实现结构的智能指针,用于隐藏实现细节。
bool HasNewMessage()
检查是否有新的控制消息到达。
void ForwardMessage(VehicleControl control)
(内部使用)将控制消息转发给内部处理函数。
void DestroySubscriber()
销毁用户并释放相关资源。
const std::string & parent() const
CARLA模拟器的主命名空间。
Definition Carla.cpp:139