Files
ParkingRobot/MultiWheelC/Trajectory/TrajectoryPoint.cs
T

65 lines
2.3 KiB
C#

using System;
using MyParking.Shared;
namespace MultiWheelC.Trajectory
{
/// <summary>
/// 描述按执行点序和累计弧长参数化的车体中心参考轨迹点,统一使用SI单位。
/// </summary>
public readonly struct TrajectoryPoint
{
/// <summary>
/// 创建包含中心位姿、曲率和速度信息的参考轨迹点。
/// </summary>
public TrajectoryPoint(
double arcLengthMeters,
Pose2D poseInWorld,
double curvaturePerMeter,
double referenceSpeedMetersPerSecond)
{
NumericGuard.EnsureFiniteNonNegative(
arcLengthMeters,
nameof(arcLengthMeters));
NumericGuard.EnsureFinite(
poseInWorld,
nameof(poseInWorld));
NumericGuard.EnsureFinite(
curvaturePerMeter,
nameof(curvaturePerMeter));
NumericGuard.EnsureFinite(
referenceSpeedMetersPerSecond,
nameof(referenceSpeedMetersPerSecond));
ArcLengthMeters = arcLengthMeters;
PoseInWorld = new Pose2D(
poseInWorld.XMeters,
poseInWorld.YMeters,
AngleMath.NormalizeRadians(
poseInWorld.YawRadians));
CurvaturePerMeter = curvaturePerMeter;
ReferenceSpeedMetersPerSecond =
referenceSpeedMetersPerSecond;
}
/// <summary>
/// 获取沿预定执行点序从轨迹起点累计到当前点的弧长,单位为m。
/// </summary>
public double ArcLengthMeters { get; }
/// <summary>
/// 获取车体中心参考坐标系在世界坐标系中的位姿;航向始终表示车头方向。
/// </summary>
public Pose2D PoseInWorld { get; }
/// <summary>
/// 获取沿累计弧长增加方向的车体中心参考轨迹曲率,单位为1/m,左弯为正。
/// </summary>
public double CurvaturePerMeter { get; }
/// <summary>
/// 获取车体纵向有符号参考速度,单位为m/s;正值前进、负值倒车、零值停车。
/// </summary>
public double ReferenceSpeedMetersPerSecond { get; }
}
}