CARLA
 
载入中...
搜索中...
未找到
LibCarla/source/carla/rpc/AckermannControllerSettings.h
浏览该文件的文档.
1// Copyright (c) 2021 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"
10
11// 以下条件编译部分,用于判断是否从UE4中包含此头文件,如果是,则包含对应的UE4相关设置头文件
12#ifdef LIBCARLA_INCLUDED_FROM_UE4
14#endif // LIBCARLA_INCLUDED_FROM_UE4
15
16namespace carla {
17namespace rpc {
18 // AckermannControllerSettings类,负责Ackermann控制器的相关设置
20 public:
21
22 // 默认构造函数,使用默认初始化方式,不进行任何参数传递时可调用此构造函数
24
25 // 构造函数,允许通过参数初始化控制器的比例、积分、微分系数(PID系数)
26 // 参数说明:
27 // - speed_kp:速度控制的比例系数
28 // - speed_ki:速度控制的积分系数
29 // - speed_kd:速度控制的微分系数
30 // - accel_kp:加速度控制的比例系数
31 // - accel_ki:加速度控制的积分系数
32 // - accel_kd:加速度控制的微分系数
46
47 // Ackermann控制器设置中的参数,以下是速度控制的PID系数相关成员变量
48 float speed_kp = 0.0f; // 速度控制的比例系数,初始化为0.0f
49 float speed_ki = 0.0f; // 速度控制的积分系数,初始化为0.0f
50 float speed_kd = 0.0f; // 速度控制的微分系数,初始化为0.0f
51
52 // Ackermann控制器设置中的参数,以下是加速度控制的PID系数相关成员变量
53 float accel_kp = 0.0f; // 加速度控制的比例系数,初始化为0.0f
54 float accel_ki = 0.0f; // 加速度控制的积分系数,初始化为0.0f
55 float accel_kd = 0.0f; // 加速度控制的微分系数,初始化为0.0f
56
57#ifdef LIBCARLA_INCLUDED_FROM_UE4
58 // 使用UE4中FAckermannControllerSettings结构体进行初始化的构造函数
59 // 它会将UE4结构体中的对应系数值赋给当前类的成员变量,实现从UE4相关设置到本类设置的转换
61 : speed_kp(Settings.SpeedKp),
62 speed_ki(Settings.SpeedKi),
63 speed_kd(Settings.SpeedKd),
64 accel_kp(Settings.AccelKp),
65 accel_ki(Settings.AccelKi),
66 accel_kd(Settings.AccelKd) {}
67
68 // 操作符重载,将AckermannControllerSettings转换为UE4中的FAckermannControllerSettings结构体
69 // 方便在需要使用UE4结构体的地方,能够直接将本类对象转换为对应的UE4结构体形式进行使用
72 Settings.SpeedKp = speed_kp;
73 Settings.SpeedKi = speed_ki;
74 Settings.SpeedKd = speed_kd;
75 Settings.AccelKp = accel_kp;
76 Settings.AccelKi = accel_ki;
77 Settings.AccelKd = accel_kd;
78 return Settings;
79 }
80
81#endif // LIBCARLA_INCLUDED_FROM_UE4
82
83 // 操作符重载,比较两个AckermannControllerSettings对象是否不相等
84 // 通过逐个比较成员变量(速度和加速度控制的PID系数)的值来判断两个对象是否不同
85 bool operator!=(const AckermannControllerSettings &rhs) const {
86 return
87 speed_kp!= rhs.speed_kp ||
88 speed_ki!= rhs.speed_ki ||
89 speed_kd!= rhs.speed_kd ||
90 accel_kp!= rhs.accel_kp ||
91 accel_ki!= rhs.accel_ki ||
92 accel_kd!= rhs.accel_kd;
93 }
94
95 // 操作符重载,判断两个AckermannControllerSettings对象是否相等,通过调用!=操作符的取反来实现
96 bool operator==(const AckermannControllerSettings &rhs) const {
97 return!(*this!= rhs);
98 }
99
100 // 使用MsgPack库来定义如何将此类的对象序列化为数组形式,便于网络传输或存储等操作
101 // 按照顺序将成员变量(速度和加速度控制的PID系数)组成一个数组进行定义
103 speed_kp,
104 speed_ki,
105 speed_kd,
106 accel_kp,
107 accel_ki,
109 );
110 };
111
112} // namespace rpc
113} // namespace carla
AckermannControllerSettings(const FAckermannControllerSettings &Settings)
MSGPACK_DEFINE_ARRAY(speed_kp, speed_ki, speed_kd, accel_kp, accel_ki, accel_kd)
AckermannControllerSettings(float speed_kp, float speed_ki, float speed_kd, float accel_kp, float accel_ki, float accel_kd)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139