CARLA
Loading...
Searching...
No Matches
LibCarla/source/carla/rpc/VehicleTelemetryData.h
Go to the documentation of this file.
1// Copyright (c) 2026 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9#include "carla/MsgPack.h"
11
12#include <vector>
13
14#ifdef LIBCARLA_INCLUDED_FROM_UE4
16#endif // LIBCARLA_INCLUDED_FROM_UE4
17
18namespace carla {
19namespace rpc {
20
21 // Vehicle-level runtime telemetry exposed to clients.
22 //
23 // Only fields backed by live Chaos solver state are kept. The PhysX-era
24 // aerodynamic-drag readout was driven by UChaosVehicleMovementComponent::
25 // DebugDragMagnitude, which the Chaos plugin declares but never writes;
26 // exposing it on UE5 would always read zero, so it is omitted.
28 public:
29
31
33 float speed,
34 float steer,
35 float throttle,
36 float brake,
37 float engine_rpm,
38 int32_t gear,
39 std::vector<WheelTelemetryData> wheels)
40 : speed(speed),
41 steer(steer),
43 brake(brake),
45 gear(gear),
46 wheels(std::move(wheels)) {}
47
48 float speed = 0.0f;
49 float steer = 0.0f;
50 float throttle = 0.0f;
51 float brake = 0.0f;
52 float engine_rpm = 0.0f;
53 int32_t gear = 0;
54 std::vector<WheelTelemetryData> wheels = {};
55
56 const std::vector<WheelTelemetryData> &GetWheels() const {
57 return wheels;
58 }
59
60 void SetWheels(std::vector<WheelTelemetryData> in_wheels) {
61 wheels = std::move(in_wheels);
62 }
63
64#ifdef LIBCARLA_INCLUDED_FROM_UE4
65
67 : speed(Data.Speed),
68 steer(Data.Steer),
69 throttle(Data.Throttle),
70 brake(Data.Brake),
71 engine_rpm(Data.EngineRPM),
72 gear(Data.Gear) {
73 wheels.reserve(static_cast<size_t>(Data.Wheels.Num()));
74 for (const auto &Wheel : Data.Wheels) {
75 wheels.emplace_back(Wheel);
76 }
77 }
78
79 operator FVehicleTelemetryData() const {
81 Data.Speed = speed;
82 Data.Steer = steer;
83 Data.Throttle = throttle;
84 Data.Brake = brake;
85 Data.EngineRPM = engine_rpm;
86 Data.Gear = gear;
87 Data.Wheels.Reserve(static_cast<int32>(wheels.size()));
88 for (const auto &Wheel : wheels) {
89 Data.Wheels.Add(Wheel);
90 }
91 return Data;
92 }
93
94#endif // LIBCARLA_INCLUDED_FROM_UE4
95
96 bool operator!=(const VehicleTelemetryData &rhs) const {
97 return
98 speed != rhs.speed ||
99 steer != rhs.steer ||
100 throttle != rhs.throttle ||
101 brake != rhs.brake ||
102 engine_rpm != rhs.engine_rpm ||
103 gear != rhs.gear ||
104 wheels != rhs.wheels;
105 }
106
107 bool operator==(const VehicleTelemetryData &rhs) const {
108 return !(*this != rhs);
109 }
110
112 speed,
113 steer,
114 throttle,
115 brake,
117 gear,
118 wheels
119 );
120 };
121
122} // namespace rpc
123} // namespace carla
const std::vector< WheelTelemetryData > & GetWheels() const
bool operator==(const VehicleTelemetryData &rhs) const
void SetWheels(std::vector< WheelTelemetryData > in_wheels)
VehicleTelemetryData(float speed, float steer, float throttle, float brake, float engine_rpm, int32_t gear, std::vector< WheelTelemetryData > wheels)
MSGPACK_DEFINE_ARRAY(speed, steer, throttle, brake, engine_rpm, gear, wheels)
bool operator!=(const VehicleTelemetryData &rhs) const
This file contains definitions of common data structures used in traffic manager.