CARLA
载入中...
搜索中...
未找到
LibCarla
source
carla
trafficmanager
PIDController.h
浏览该文件的文档.
1
// Copyright (c) 2020 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 <algorithm>
// 引入算法库
10
11
#include "
carla/trafficmanager/Constants.h
"
// 引入常量定义
12
#include "
carla/trafficmanager/DataStructures.h
"
// 引入数据结构定义
13
14
namespace
carla
{
// 定义命名空间 carla
15
namespace
traffic_manager {
// 定义命名空间 traffic_manager
16
17
namespace
chr = std::chrono;
// 为 std::chrono 起别名为 chr
18
19
using namespace
constants::PID;
// 使用 constants::PID 命名空间中的内容
20
21
using
TimeInstance
= chr::time_point<chr::system_clock, chr::nanoseconds>;
// 定义时间实例类型
22
23
namespace
PID
{
// 定义命名空间 PID
24
25
/// 此函数计算基于车辆当前状态变化的执行信号,以最小化 PID 错误。
26
inline
ActuationSignal
RunStep
(
StateEntry
present_state,
// 当前状态
27
StateEntry
previous_state,
// 前一个状态
28
const
std::vector<float> &longitudinal_parameters,
// 纵向参数
29
const
std::vector<float> &lateral_parameters) {
// 横向参数
30
31
// 纵向 PID 计算。
32
const
float
expr_v =
33
longitudinal_parameters[0] * present_state.
velocity_deviation
+
// 比例项
34
longitudinal_parameters[1] * (present_state.
velocity_deviation
+ previous_state.
velocity_deviation
) *
DT
+
// 积分项
35
longitudinal_parameters[2] * (present_state.
velocity_deviation
- previous_state.
velocity_deviation
) *
INV_DT
;
// 微分项
36
37
float
throttle;
// 油门变量
38
float
brake;
// 刹车变量
39
40
if
(expr_v > 0.0f) {
// 如果计算得到的速度表达式大于零
41
throttle = std::min(expr_v,
MAX_THROTTLE
);
// 油门取较小值
42
brake = 0.0f;
// 刹车为零
43
}
else
{
// 否则
44
throttle = 0.0f;
// 油门为零
45
brake = std::min(std::abs(expr_v),
MAX_BRAKE
);
// 刹车取较小值
46
}
47
48
// 横向 PID 计算。
49
float
steer =
50
lateral_parameters[0] * present_state.
angular_deviation
+
// 比例项
51
lateral_parameters[1] * (present_state.
angular_deviation
+ previous_state.
angular_deviation
) *
DT
+
// 积分项
52
lateral_parameters[2] * (present_state.
angular_deviation
- previous_state.
angular_deviation
) *
INV_DT
;
// 微分项
53
54
steer = std::max(previous_state.
steer
-
MAX_STEERING_DIFF
, std::min(steer, previous_state.
steer
+
MAX_STEERING_DIFF
));
// 限制转向角度变化
55
steer = std::max(-
MAX_STEERING
, std::min(steer,
MAX_STEERING
));
// 限制转向范围
56
57
return
ActuationSignal
{throttle, brake, steer};
// 返回执行信号
58
}
59
60
}
// namespace PID
61
}
// namespace traffic_manager
62
}
// namespace carla
Constants.h
DataStructures.h
PID
Definition
AckermannController.h:17
carla::traffic_manager::PID::RunStep
ActuationSignal RunStep(StateEntry present_state, StateEntry previous_state, const std::vector< float > &longitudinal_parameters, const std::vector< float > &lateral_parameters)
此函数计算基于车辆当前状态变化的执行信号,以最小化 PID 错误。
Definition
PIDController.h:26
carla::traffic_manager::constants::PID::INV_DT
static const float INV_DT
Definition
Constants.h:150
carla::traffic_manager::constants::PID::MAX_THROTTLE
static const float MAX_THROTTLE
Definition
Constants.h:145
carla::traffic_manager::constants::PID::MAX_STEERING_DIFF
static const float MAX_STEERING_DIFF
Definition
Constants.h:148
carla::traffic_manager::constants::PID::MAX_BRAKE
static const float MAX_BRAKE
Definition
Constants.h:146
carla::traffic_manager::constants::PID::DT
static const float DT
Definition
Constants.h:149
carla::traffic_manager::constants::PID::MAX_STEERING
static const float MAX_STEERING
Definition
Constants.h:147
carla::traffic_manager::TimeInstance
chr::time_point< chr::system_clock, chr::nanoseconds > TimeInstance
Definition
DataStructures.h:34
carla
CARLA模拟器的主命名空间。
Definition
Carla.cpp:139
carla::traffic_manager::ActuationSignal
用来保存驱动信号的结构
Definition
DataStructures.h:60
carla::traffic_manager::StateEntry
用来保存控制器状态的结构体
Definition
DataStructures.h:67
carla::traffic_manager::StateEntry::steer
float steer
Definition
DataStructures.h:71
carla::traffic_manager::StateEntry::angular_deviation
float angular_deviation
Definition
DataStructures.h:69
carla::traffic_manager::StateEntry::velocity_deviation
float velocity_deviation
Definition
DataStructures.h:70
制作者
1.10.0