CARLA
Loading...
Searching...
No Matches
CarlaRecorderPhysicsControl.cpp
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
8#include "CarlaRecorder.h"
10
14
15
16void CarlaRecorderPhysicsControl::Write(std::ostream& OutFile)
17{
20 WriteValue<uint32_t>(OutFile, this->DatabaseId);
21 WriteValue(OutFile, RPCPhysicsControl.max_torque);
22 WriteValue(OutFile, RPCPhysicsControl.max_rpm);
23 WriteValue(OutFile, RPCPhysicsControl.idle_rpm);
24 WriteValue(OutFile, RPCPhysicsControl.brake_effect);
25 WriteValue(OutFile, RPCPhysicsControl.rev_up_moi);
26 WriteValue(OutFile, RPCPhysicsControl.rev_down_rate);
27 WriteValue(OutFile, RPCPhysicsControl.differential_type);
28 WriteValue(OutFile, RPCPhysicsControl.front_rear_split);
29 WriteValue(OutFile, RPCPhysicsControl.use_automatic_gears);
30 WriteValue(OutFile, RPCPhysicsControl.gear_change_time);
31 WriteValue(OutFile, RPCPhysicsControl.final_ratio);
32 WriteValue(OutFile, RPCPhysicsControl.change_up_rpm);
33 WriteValue(OutFile, RPCPhysicsControl.change_down_rpm);
34 WriteValue(OutFile, RPCPhysicsControl.transmission_efficiency);
35 WriteValue(OutFile, RPCPhysicsControl.mass);
36 WriteValue(OutFile, RPCPhysicsControl.drag_coefficient);
37 WriteValue(OutFile, RPCPhysicsControl.center_of_mass);
38 WriteValue(OutFile, RPCPhysicsControl.chassis_width);
39 WriteValue(OutFile, RPCPhysicsControl.chassis_height);
40 WriteValue(OutFile, RPCPhysicsControl.downforce_coefficient);
41 WriteValue(OutFile, RPCPhysicsControl.drag_area);
42 WriteValue(OutFile, RPCPhysicsControl.inertia_tensor_scale);
43 WriteValue(OutFile, RPCPhysicsControl.sleep_threshold);
44 WriteValue(OutFile, RPCPhysicsControl.sleep_slope_limit);
45 WriteValue(OutFile, RPCPhysicsControl.use_sweep_wheel_collision);
46 WriteStdVector(OutFile, RPCPhysicsControl.torque_curve);
47 WriteStdVector(OutFile, RPCPhysicsControl.forward_gear_ratios);
48 WriteStdVector(OutFile, RPCPhysicsControl.reverse_gear_ratios);
49 WriteStdVector(OutFile, RPCPhysicsControl.steering_curve);
50 WriteStdVector(OutFile, RPCPhysicsControl.wheels);
51}
52
53void CarlaRecorderPhysicsControl::Read(std::istream& InFile)
54{
55 carla::rpc::VehiclePhysicsControl RPCPhysicsControl;
56 ReadValue<uint32_t>(InFile, this->DatabaseId);
57 ReadValue(InFile, RPCPhysicsControl.max_torque);
58 ReadValue(InFile, RPCPhysicsControl.max_rpm);
59 ReadValue(InFile, RPCPhysicsControl.idle_rpm);
60 ReadValue(InFile, RPCPhysicsControl.brake_effect);
61 ReadValue(InFile, RPCPhysicsControl.rev_up_moi);
62 ReadValue(InFile, RPCPhysicsControl.rev_down_rate);
63 ReadValue(InFile, RPCPhysicsControl.differential_type);
64 ReadValue(InFile, RPCPhysicsControl.front_rear_split);
65 ReadValue(InFile, RPCPhysicsControl.use_automatic_gears);
66 ReadValue(InFile, RPCPhysicsControl.gear_change_time);
67 ReadValue(InFile, RPCPhysicsControl.final_ratio);
68 ReadValue(InFile, RPCPhysicsControl.change_up_rpm);
69 ReadValue(InFile, RPCPhysicsControl.change_down_rpm);
70 ReadValue(InFile, RPCPhysicsControl.transmission_efficiency);
71 ReadValue(InFile, RPCPhysicsControl.mass);
72 ReadValue(InFile, RPCPhysicsControl.drag_coefficient);
73 ReadValue(InFile, RPCPhysicsControl.center_of_mass);
74 ReadValue(InFile, RPCPhysicsControl.chassis_width);
75 ReadValue(InFile, RPCPhysicsControl.chassis_height);
76 ReadValue(InFile, RPCPhysicsControl.downforce_coefficient);
77 ReadValue(InFile, RPCPhysicsControl.drag_area);
78 ReadValue(InFile, RPCPhysicsControl.inertia_tensor_scale);
79 ReadValue(InFile, RPCPhysicsControl.sleep_threshold);
80 ReadValue(InFile, RPCPhysicsControl.sleep_slope_limit);
81 ReadValue(InFile, RPCPhysicsControl.use_sweep_wheel_collision);
82 ReadStdVector(InFile, RPCPhysicsControl.torque_curve);
83 ReadStdVector(InFile, RPCPhysicsControl.forward_gear_ratios);
84 ReadStdVector(InFile, RPCPhysicsControl.reverse_gear_ratios);
85 ReadStdVector(InFile, RPCPhysicsControl.steering_curve);
86 ReadStdVector(InFile, RPCPhysicsControl.wheels);
88}
89
90// ---------------------------------------------
91
96
98{
99 PhysicsControls.push_back(InObj);
100}
101
102void CarlaRecorderPhysicsControls::Write(std::ostream& OutFile)
103{
104 if (PhysicsControls.size() == 0)
105 {
106 return;
107 }
108 // write the packet id
109 WriteValue<char>(OutFile, static_cast<char>(CarlaRecorderPacketId::PhysicsControl));
110
111 std::streampos PosStart = OutFile.tellp();
112 // write dummy packet size
113 uint32_t Total = 0;
114 WriteValue<uint32_t>(OutFile, Total);
115
116 // write total records
117 Total = PhysicsControls.size();
118 WriteValue<uint16_t>(OutFile, Total);
119
120 // write records
121 for (auto& PhysicsControl : PhysicsControls)
122 {
123 PhysicsControl.Write(OutFile);
124 }
125
126 // write the real packet size
127 std::streampos PosEnd = OutFile.tellp();
128 Total = PosEnd - PosStart - sizeof(uint32_t);
129 OutFile.seekp(PosStart, std::ios::beg);
130 WriteValue<uint32_t>(OutFile, Total);
131 OutFile.seekp(PosEnd, std::ios::beg);
132}
void WriteStdVector(std::ostream &OutFile, const std::vector< T > &InVec)
void ReadStdVector(std::istream &InFile, std::vector< T > &OutVec)
void WriteValue(std::ostream &OutFile, const T &InObj)
void ReadValue(std::istream &InFile, T &OutObj)
std::vector< CarlaRecorderPhysicsControl > PhysicsControls
void Add(const CarlaRecorderPhysicsControl &InObj)
FVehiclePhysicsControl VehiclePhysicsControl
static VehiclePhysicsControl FromFVehiclePhysicsControl(const FVehiclePhysicsControl &Control)