1   package org.opentrafficsim.road.gtu.lane.perception.mental;
2   
3   import org.djunits.value.vdouble.scalar.Duration;
4   import org.djutils.exceptions.Try;
5   import org.opentrafficsim.base.parameters.Parameters;
6   import org.opentrafficsim.road.gtu.lane.LaneBasedGTU;
7   import org.opentrafficsim.road.gtu.lane.perception.LanePerception;
8   import org.opentrafficsim.road.gtu.lane.perception.RelativeLane;
9   import org.opentrafficsim.road.gtu.lane.perception.categories.neighbors.NeighborsPerception;
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  public class TaskCarFollowing extends TaskHeadwayBased
23  {
24  
25      
26      public TaskCarFollowing()
27      {
28          super("car-following");
29      }
30      
31      
32      @Override
33      protected Duration getHeadway(final LanePerception perception, final LaneBasedGTU gtu, final Parameters parameters)
34      {
35          NeighborsPerception neighbors = Try.assign(() -> perception.getPerceptionCategory(NeighborsPerception.class),
36                  "NeighborsPerception not available.");
37          return neighbors.getLeaders(RelativeLane.CURRENT).collect(new TaskHeadwayCollector(getSpeed()));
38      }
39  
40  }