64 lines
2.4 KiB
C#
64 lines
2.4 KiB
C#
namespace MultiWheelC.TrajectoryPlanning.CoarsePath;
|
||||
|
|
|
|||
|
|
/// <summary>最终粗路径上的一个稠密连续点;长度、净空和位置使用 m,航向使用 rad,曲率使用 1/m。</summary>
|
|||
|
|
public sealed class CoarsePathPoint
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 创建粗路径点。
|
|||
|
|
/// 参数:xMeters、yMeters 为世界坐标 m;headingRadians 与 unwrappedHeadingRadians 为航向 rad;arcLengthMeters 和 bodyClearanceMeters 为 m;vehicleCurvaturePerMeter 为 1/m。
|
|||
|
|
/// </summary>
|
|||
|
|
public CoarsePathPoint(
|
|||
|
|
double xMeters,
|
|||
|
|
double yMeters,
|
|||
|
|
double headingRadians,
|
|||
|
|
double unwrappedHeadingRadians,
|
|||
|
|
double arcLengthMeters,
|
|||
|
|
TravelDirection direction,
|
|||
|
|
double vehicleCurvaturePerMeter,
|
|||
|
|
double bodyClearanceMeters,
|
|||
|
|
bool isGearSwitchPoint,
|
|||
|
|
CoarsePathPointSource source)
|
|||
|
|
{
|
|||
|
|
X = xMeters;
|
|||
|
|
Y = yMeters;
|
|||
|
|
Heading = headingRadians;
|
|||
|
|
UnwrappedHeading = unwrappedHeadingRadians;
|
|||
|
|
ArcLength = arcLengthMeters;
|
|||
|
|
Direction = direction;
|
|||
|
|
VehicleCurvature = vehicleCurvaturePerMeter;
|
|||
|
|
BodyClearance = bodyClearanceMeters;
|
|||
|
|
IsGearSwitchPoint = isGearSwitchPoint;
|
|||
|
|
Source = source;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>世界 X 坐标,单位 m。</summary>
|
|||
|
|
public double X { get; }
|
|||
|
|
|
|||
|
|
/// <summary>世界 Y 坐标,单位 m。</summary>
|
|||
|
|
public double Y { get; }
|
|||
|
|
|
|||
|
|
/// <summary>归一化后可用于几何查询的车头航向,单位 rad。</summary>
|
|||
|
|
public double Heading { get; }
|
|||
|
|
|
|||
|
|
/// <summary>跨越 ±π 后仍连续的车头航向,单位 rad。</summary>
|
|||
|
|
public double UnwrappedHeading { get; }
|
|||
|
|
|
|||
|
|
/// <summary>从路径起点累计的弧长,单位 m;必须非负且不递减。</summary>
|
|||
|
|
public double ArcLength { get; }
|
|||
|
|
|
|||
|
|
/// <summary>从上一点运动到当前点所在方向段的行驶方向。</summary>
|
|||
|
|
public TravelDirection Direction { get; }
|
|||
|
|
|
|||
|
|
/// <summary>车辆在此点采用的恒曲率原语曲率,单位 1/m。</summary>
|
|||
|
|
public double VehicleCurvature { get; }
|
|||
|
|
|
|||
|
|
/// <summary>扩大车体到障碍物的保守净空下界,单位 m。</summary>
|
|||
|
|
public double BodyClearance { get; }
|
|||
|
|
|
|||
|
|
/// <summary>此点是否为新方向段开始的换向点。</summary>
|
|||
|
|
public bool IsGearSwitchPoint { get; }
|
|||
|
|
|
|||
|
|
/// <summary>此点由起点、普通原语或终点截断产生的来源。</summary>
|
|||
|
|
public CoarsePathPointSource Source { get; }
|
|||
|
|
}
|