CARLA
 
载入中...
搜索中...
未找到
LibCarla/source/carla/rpc/VehicleTelemetryData.h
浏览该文件的文档.
1// Copyright (c) 2022 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// 车辆遥感数据
5//
6// This work is licensed under the terms of the MIT license.
7// For a copy, see <https://opensource.org/licenses/MIT>.
8
9#pragma once
10
11#include "carla/MsgPack.h"
13
14#include <vector>
15
16namespace carla {
17namespace rpc {
19 public:
20
22
24 float speed, // 速度
25 float steer, // 驾驶方向
26 float throttle, // 油门
27 float brake, // 刹车
28 float engine_rpm, // 引擎 每分钟转速(revolutions per minute)
29 int32_t gear, // 档位
30 float drag,
31 std::vector<WheelTelemetryData> wheels)
32 : speed(speed),
33 steer(steer),
35 brake(brake),
37 gear(gear),
38 drag(drag),
39 wheels(wheels) {}
40
41 // 获得车轮
42 const std::vector<WheelTelemetryData> &GetWheels() const {
43 return wheels;
44 }
45
46 // 设置车轮
47 void SetWheels(std::vector<WheelTelemetryData> &in_wheels) {
48 wheels = in_wheels;
49 }
50
51 float speed = 0.0f;
52 float steer = 0.0f;
53 float throttle = 0.0f;
54 float brake = 0.0f;
55 float engine_rpm = 0.0f;
56 int32_t gear = 0.0f;
57 float drag = 0.0f;
58 std::vector<WheelTelemetryData> wheels;
59
60 bool operator!=(const VehicleTelemetryData &rhs) const {
61 return
62 speed != rhs.speed ||
63 steer != rhs.steer ||
64 throttle != rhs.throttle ||
65 brake != rhs.brake ||
66 engine_rpm != rhs.engine_rpm ||
67 gear != rhs.gear ||
68 drag != rhs.drag ||
69 wheels != rhs.wheels;
70 }
71
72 bool operator==(const VehicleTelemetryData &rhs) const {
73 return !(*this != rhs);
74 }
75
76#ifdef LIBCARLA_INCLUDED_FROM_UE4
77// 定义一个名为VehicleTelemetryData的函数,它接受一个FVehicleTelemetryData类型的常量引用TelemetryData作为参数
78// 这个函数可能用于从传入的TelemetryData对象中提取相关数据来初始化当前对象的成员变量等操作
80 // 将传入的TelemetryData对象中的速度值赋给当前对象的speed成员变量,实现数据的拷贝赋值
81 speed = TelemetryData.Speed;
82 // 将传入的TelemetryData对象中的转向值赋给当前对象的steer成员变量
83 steer = TelemetryData.Steer;
84// 将传入的TelemetryData对象中的油门值赋给当前对象的throttle成员变量
85 throttle = TelemetryData.Throttle;
86 // 将传入的TelemetryData对象中的刹车值赋给当前对象的brake成员变量
87 brake = TelemetryData.Brake;
88// 将传入的TelemetryData对象中的发动机转速值赋给当前对象的engine_rpm成员变量
89 engine_rpm = TelemetryData.EngineRPM;
90 // 将传入的TelemetryData对象中的挡位值赋给当前对象的gear成员变量
91 gear = TelemetryData.Gear;
92// 将传入的TelemetryData对象中的阻力值赋给当前对象的drag成员变量
93 drag = TelemetryData.Drag;
94
95// Wheels Setup,以下是对车轮相关数据的设置操作
96 wheels = std::vector<WheelTelemetryData>();
97// 开始遍历传入的TelemetryData对象中的车轮数据集合(可能是一个容器类型存储多个车轮相关的数据结构)
98 for (const auto &Wheel : TelemetryData.Wheels) {
99 // 针对每个车轮数据,创建一个WheelTelemetryData类型的对象(可能是通过拷贝构造等方式),并将其添加到当前对象的wheels成员变量(一个向量容器)中
100 wheels.push_back(WheelTelemetryData(Wheel));
101 }
102 }
103
104// 定义一个类型转换操作符函数,将当前对象转换为FVehicleTelemetryData类型,通常用于在需要该类型的地方隐式或显式地进行类型转换
105 operator FVehicleTelemetryData() const {
106 // 创建一个FVehicleTelemetryData类型的临时对象TelemetryData,后续会将当前对象的数据填充到这个临时对象中,以便返回合适类型的数据
107 FVehicleTelemetryData TelemetryData;
108
109 // 将当前对象的速度值赋给临时对象TelemetryData的Speed成员变量,以便返回完整的符合FVehicleTelemetryData类型结构的数据
110 TelemetryData.Speed = speed;
111// 将当前对象的转向值赋给临时对象TelemetryData的Steer成员变量
112 TelemetryData.Steer = steer;
113// 将当前对象的油门值赋给临时对象TelemetryData的Throttle成员变量
114 TelemetryData.Throttle = throttle;
115// 将当前对象的刹车值赋给临时对象TelemetryData的Brake成员变量
116 TelemetryData.Brake = brake;
117// 将当前对象的发动机转速值赋给临时对象TelemetryData的EngineRPM成员变量
118 TelemetryData.EngineRPM = engine_rpm;
119// 将当前对象的挡位值赋给临时对象TelemetryData的Gear成员变量
120 TelemetryData.Gear = gear;
121 // 将当前对象的阻力值赋给临时对象TelemetryData的Drag成员变量
122 TelemetryData.Drag = drag;
123
124// 创建一个TArray类型(可能是特定库中定义的数组类型)用于存储车轮相关的数据,后续会将当前对象中的车轮数据转换后填充进去
125 TArray<FWheelTelemetryData> Wheels;
126// 遍历当前对象的wheels成员变量(一个存储车轮数据的向量容器)
127 for (const auto &wheel : wheels) {
128 // 针对每个车轮数据,创建一个FWheelTelemetryData类型的对象(可能进行了合适的数据转换等操作),并添加到Wheels数组中
129 Wheels.Add(FWheelTelemetryData(wheel));
130 }
131// 将填充好车轮数据的Wheels数组赋给临时对象TelemetryData的Wheels成员变量,使临时对象的结构完整
132 TelemetryData.Wheels = Wheels;
133 // 返回填充好数据的临时对象TelemetryData,完成从当前对象到FVehicleTelemetryData类型的转换
134 return TelemetryData;
135 }
136
137#endif
138
140 steer,
141 throttle,
142 brake,
144 gear,
145 drag,
146 wheels);
147 };
148
149} // namespace rpc
150} // namespace carla
const std::vector< WheelTelemetryData > & GetWheels() const
void SetWheels(std::vector< WheelTelemetryData > &in_wheels)
MSGPACK_DEFINE_ARRAY(speed, steer, throttle, brake, engine_rpm, gear, drag, wheels)
bool operator==(const VehicleTelemetryData &rhs) const
VehicleTelemetryData(float speed, float steer, float throttle, float brake, float engine_rpm, int32_t gear, float drag, std::vector< WheelTelemetryData > wheels)
bool operator!=(const VehicleTelemetryData &rhs) const
VehicleTelemetryData(const FVehicleTelemetryData &TelemetryData)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139