/// <summary> /// Make a vehicle state from a sim vehicle state /// </summary> /// <param name="simState"></param> /// <returns></returns> public VehicleState VehicleStateFromSim(SimVehicleState simState) { // vehicle state VehicleState vs = new VehicleState(); // area vs.Area = new List<AreaEstimate>(); // ae AreaEstimate ae = new AreaEstimate(); ae.Probability = 1; // get string id string id = ""; // set id ae.AreaId = id; ae.AreaType = StateAreaType.Interconnect; // get area IAreaSubtypeId iasi = this.GetAreaId(simState); if (iasi is ArbiterPerimeterId) { id = ((ArbiterPerimeterId)iasi).ToString(); ae.AreaType = StateAreaType.Zone; } else if (iasi is ArbiterLaneId) { ae.AreaId = ((ArbiterLaneId)iasi).ToString() + ".1"; ae.AreaType = StateAreaType.Lane; } // add ae vs.Area.Add(ae); // set others vs.Heading = simState.Heading; vs.Position = simState.Position; // return return vs; }
private AreaEstimate[] GetAreaEstimates(SimVehicleState svs) { List<AreaEstimate> estimates = new List<AreaEstimate>(); foreach (IVehicleArea iva in this.RoadNetwork.VehicleAreas) { if (iva.ContainsVehicle(svs.Position, svs.Length, svs.Width, svs.Heading)) { AreaEstimate ae = new AreaEstimate(); ae.AreaId = iva.DefaultAreaId(); if(iva is ArbiterInterconnect) ae.AreaType = StateAreaType.Interconnect; else if(iva is ArbiterLane) ae.AreaType = StateAreaType.Lane; else ae.AreaType = StateAreaType.Zone; ae.Probability = 1; estimates.Add(ae); } } return estimates.ToArray(); }
/// <summary> /// Constructor /// </summary> /// <param name="id"></param> /// <param name="length"></param> /// <param name="width"></param> /// <param name="absolutePosition"></param> /// <param name="heading"></param> /// <param name="speed"></param> /// <param name="observationState"></param> /// <param name="observationStatus"></param> public ObservedVehicle(int id, double length, double width, Coordinates absolutePosition, Coordinates heading, double speed, ObservedVehicleState observationState, ObservedVehicleStatus observationStatus, AreaEstimate[] areaEstimates, bool isStopped) { this.Id = id; this.Length = length; this.Width = width; this.AbsolutePosition = absolutePosition; this.Heading = heading; this.Speed = speed; this.ObservationState = observationState; this.ObservationStatus = observationStatus; this.AreaEstimates = areaEstimates; this.IsStopped = isStopped; }