载具

VehicleControl 结构中的值直接传递给 PhysX Vehicle 插件(请参阅 CarlaWheeledVehicle.cpp )。

一、FAckermannController

FAckermannController 类是一个用于实现阿克曼转向控制的控制器类,主要用于控制轮式车辆的行驶,包括速度、加速度、转向等方面的控制。该类使用了 PID 控制器来对速度和加速度进行调节,以实现对车辆的精确控制。

二、文件信息

版权信息

该代码版权归 2021 年巴塞罗那自治大学(UAB)的计算机视觉中心(CVC)所有,代码遵循 MIT 许可证。

包含头文件

  • AckermannController.h:定义了 FAckermannController 类和相关结构体。
  • CarlaWheeledVehicle.h:定义了 ACarlaWheeledVehicle 类,用于表示轮式车辆。

三、类成员和方法

3.1构造函数和析构函数

  • FAckermannController::~FAckermannController():析构函数,用于释放 FAckermannController 对象所占用的资源。

3.2获取和应用设置

  • FAckermannControllerSettings FAckermannController::GetSettings() const:获取当前控制器的设置,包括速度和加速度 PID 控制器的参数。
  • void FAckermannController::ApplySettings(const FAckermannControllerSettings& Settings):应用传入的控制器设置,更新速度和加速度 PID 控制器的参数。

3.3设置目标点

  • void FAckermannController::SetTargetPoint(const FVehicleAckermannControl& AckermannControl):设置目标控制参数,包括转向角、转向速度、速度、加速度和 jerk 等,并对这些参数进行裁剪。

3.4重置控制器

  • void FAckermannController::Reset():重置控制器的状态,包括速度和加速度 PID 控制器的状态,以及车辆的控制参数和状态。

3.5运行控制循环

  • void FAckermannController::RunLoop(FVehicleControl& Control):运行控制循环,包括横向控制和纵向控制,最后更新车辆的控制命令。

3.6横向控制

  • void FAckermannController::RunControlSteering():根据目标转向角和转向速度,计算当前的转向角。

3.7纵向控制

  1. 完全停止控制
  2. bool FAckermannController::RunControlFullStop():判断车辆是否需要完全停止,如果需要则将刹车设置为最大值,油门设置为零。
  3. 倒车控制
  4. void FAckermannController::RunControlReverse():根据车辆的当前速度和目标速度,判断是否可以切换到倒车模式。
  5. 速度控制
  6. void FAckermannController::RunControlSpeed():使用速度 PID 控制器计算目标加速度,并对其进行裁剪。
  7. 加速度控制
  8. void FAckermannController::RunControlAcceleration():使用加速度 PID 控制器计算目标油门或刹车值,并对其进行裁剪。
  9. 更新车辆控制命令
  10. void FAckermannController::UpdateVehicleControlCommand():根据目标油门或刹车值,更新车辆的油门和刹车控制命令。

3.8更新车辆状态和物理参数

  1. 更新车辆状态

  2. void FAckermannController::UpdateVehicleState(const ACarlaWheeledVehicle* Vehicle):更新车辆的状态,包括转向角、速度和加速度等。

  3. 更新车辆物理参数

  4. void FAckermannController::UpdateVehiclePhysics(const ACarlaWheeledVehicle* Vehicle):更新车辆的最大转向角。

3.9车辆灯光状态

​ 此结构体运用了 Unreal Engine 的反射系统,具备在蓝图里进行读写操作的能力。它的每个属性都代表着一种特定的灯光状态,并且默认情况下这些灯光都是关闭的。

​ 新添加的 Hazard 属性用于表示车辆危险警示灯的状态,默认值为 false,即初始状态下危险警示灯是关闭的。和其他属性一样,它也可以在编辑器中编辑,并且能在蓝图里进行读写操作。

// 新增的危险警示灯状态属性
  UPROPERTY(Category = "Vehicle Lights", EditAnywhere, BlueprintReadWrite)
  bool Hazard = false;

3.10功能补充

在Vehicle/VehiclePhysicsControl.h**文件中添加新的设置

// 刹车设置
UPROPERTY(Category = "Vehicle Brake Physics Control", EditAnywhere, BlueprintReadWrite)
 float BrakeForce = 0.0f;

UPROPERTY(Category = "Vehicle Brake Physics Control", EditAnywhere, BlueprintReadWrite)
 float HandbrakeForce = 0.0f;
  • BrakeForce:代表车辆刹车时的制动力,默认值为 0.0f。
  • HandbrakeForce:表示手刹的制动力,默认值为 0.0f。

参考