/// <summary> /// Constructor /// </summary> /// <param name="zonePerimeter">Perimeter of hte zone</param> /// <param name="stayOutside">Polygons to stay outside of</param> /// <param name="speedCommand">Recommended Speed command</param> public ZoneBehavior(ArbiterZoneId zoneId, Polygon zonePerimeter, Polygon[] stayOutside, ScalarSpeedCommand recommendedSpeedCommand) { this.zoneId = zoneId; this.zonePerimeter = zonePerimeter; this.stayOutside = stayOutside; this.speedCommand = recommendedSpeedCommand; }
/// <summary> /// Constructor /// </summary> /// <param name="zoneId"></param> /// <param name="zonePerimeter"></param> /// <param name="stayOutside"></param> /// <param name="speedCommand"></param> /// <param name="recommendedPath"></param> /// <param name="endingLeftBound"></param> /// <param name="endingRightBound"></param> public ZoneTravelingBehavior(ArbiterZoneId zoneId, Polygon zonePerimeter, Polygon[] stayOutside, ScalarSpeedCommand speedCommand, LinePath recommendedPath, LinePath endingLeftBound, LinePath endingRightBound) : base(zoneId, zonePerimeter, stayOutside, speedCommand) { this.RecommendedPath = recommendedPath; this.EndingLeftBound = endingLeftBound; this.EndingRightBound = endingRightBound; }
/// <summary> /// Constructor /// </summary> /// <param name="zoneId"></param> /// <param name="zonePerimeter"></param> /// <param name="stayOutside"></param> /// <param name="speedCommand"></param> /// <param name="parkingSpotPath"></param> /// <param name="spotLeftBound"></param> /// <param name="spotRightBound"></param> /// <param name="spotId"></param> /// <param name="extraDistance"></param> /// <param name="endingPolygon"></param> /// <param name="orientations"></param> public ZoneParkingPullOutBehavior(ArbiterZoneId zoneId, Polygon zonePerimeter, Polygon[] stayOutside, ScalarSpeedCommand speedCommand, LinePath parkingSpotPath, LinePath spotLeftBound, LinePath spotRightBound, ArbiterParkingSpotId spotId, LinePath reversePath, LinePath finalLeftBound, LinePath finalRightBound) : base(zoneId, zonePerimeter, stayOutside, speedCommand, parkingSpotPath, spotLeftBound, spotRightBound, spotId, 0.0) { this.RecommendedPullOutPath = reversePath; this.EndingLeftBound = finalLeftBound; this.EndingRightBound = finalRightBound; }
/// <summary> /// Constructor /// </summary> /// <param name="zoneId"></param> /// <param name="zonePerimeter"></param> /// <param name="stayOutside"></param> /// <param name="speedCommand"></param> /// <param name="parkingSpotPath"></param> /// <param name="spotLeftBound"></param> /// <param name="spotRightBound"></param> /// <param name="spotId"></param> /// <param name="extraDistance"></param> public ZoneParkingBehavior(ArbiterZoneId zoneId, Polygon zonePerimeter, Polygon[] stayOutside, ScalarSpeedCommand speedCommand, LinePath parkingSpotPath, LinePath spotLeftBound, LinePath spotRightBound, ArbiterParkingSpotId spotId, double extraDistance) : base(zoneId, zonePerimeter, stayOutside, speedCommand) { this.ParkingSpotPath = parkingSpotPath; this.SpotLeftBound = spotLeftBound; this.SpotRightBound = spotRightBound; this.ParkingSpotId = spotId; this.ExtraDistance = extraDistance; }
/// <summary> /// Generates mission /// </summary> /// <param name="mdf"></param> /// <returns></returns> public ArbiterMissionDescription GenerateMission(IMdf mdf, ArbiterRoadNetwork arn) { Queue <ArbiterCheckpoint> checks = new Queue <ArbiterCheckpoint>(); List <ArbiterSpeedLimit> speeds = new List <ArbiterSpeedLimit>(); // checkpoints foreach (string s in mdf.CheckpointOrder) { int num = int.Parse(s); checks.Enqueue(new ArbiterCheckpoint(num, arn.Checkpoints[num].AreaSubtypeWaypointId)); } // speeds foreach (SpeedLimit sl in mdf.SpeedLimits) { ArbiterSpeedLimit asl = new ArbiterSpeedLimit(); asl.MaximumSpeed = sl.MaximumVelocity * 0.44704; asl.MinimumSpeed = sl.MinimumVelocity * 0.44704; asl.Traveled = false; ArbiterSegmentId asi = new ArbiterSegmentId(int.Parse(sl.SegmentID)); ArbiterZoneId azi = new ArbiterZoneId(int.Parse(sl.SegmentID)); if (arn.ArbiterZones.ContainsKey(azi)) { asl.Area = azi; } else if (arn.ArbiterSegments.ContainsKey(asi)) { asl.Area = asi; } else { throw new Exception("Unknown area id: " + sl.SegmentID); } speeds.Add(asl); } // return return(new ArbiterMissionDescription(checks, speeds)); }