Scenario Selection in conode
Summary
With conode you can quickly find any scenarios you need from within the knowledge graph, and store them in a “pool” ready for upcoming simulation tests. In this workflow, we will follow a few example user stories:
Example 1: “We would like to test our stack on scenarios which take place at a t-intersection and involve pedestrian hazards”
Example 2: “We would like to see how our stack responds in head-on collisions involving a high speed hazard”
Example 3: “We would like a set of scenarios that take place at a specific junction on our map”
Getting Started
In all three examples introduced above, we will begin our search using the Taxonomy and Summary Views. Navigate to these views by typing into the view search bar in the top right-hand corner of conode, as in Figure 1 below.
In the Taxonomy view, you should see a horizontal layout of the dRISK Taxonomy. We will use annotations from this taxonomy to help us narrow down the search.
The Summary View will contain the API Key, sessions, and pools header nodes, along with any number of successors to these nodes, depending on the number of tests run so far. For a description and example use of Summary Views please see the Pools and Sessions Overview.
The scenarios we will be choosing from in this scenario selection workflow will be the successors of the
dRISK scenarios
pool node (highlighted in Figure 2 above). This pool contains all scenarios dRISK
has made available to this knowledge graph instance. However, do remember you can carry out this workflow
with any set of scenarios, including those from internal or other external data sources.
To access the full set of scenarios we will be choosing from, follow the following: 1. Create a new view called “All Scenarios”
-
Copy and paste the
dRISK scenarios
pool node into this new view -
Right-click the
dRISK scenarios
pool node, thenGet
, thensuccessors
(or press ⌘g as a shortcut) -
Refresh the view to ensure all nodes have loaded in
We can now close the Summary View, as we will only need the "Taxonomy" and "All Scenarios" views to find our desired scenario sets.
Example 1: “We would like to test our stack on scenarios which take place at a T intersection,and involve pedestrian hazards”
Right-click on the Taxonomy view background, select Search, then type “t_intersection” into the search bar and press enter. The node will then highlight blue, as seen in Figure 4 below. Alternatively, you could find the annotation by navigating down the Taxonomy tree until you come across the Junction Types annotations.
Figure 4: Searching for the t-intersection annotation in the Taxonomy view.
Use the same steps to locate the “pedestrian_hazard” annotation and then copy and paste these nodes into the All Scenarios view.
To select the scenarios which take place at a t-intersection with a pedestrian hazard, we now simply need to
find the nodes which connect to both of these annotations. Highlight the pedestrian_hazard
and
t_intersection
annotations, right click, choose Select
, then Successors Intersection
. The scenario nodes of
interest will now be highlighted, so drag them away (in Figure 6, upwards) of the rest of the scenarios
so we can easily identify them.
Figure 6: Identify the scenarios which connect to both the t_intersection, and pedestrian_hazard annotations using the Select + Successors Intersections buttons from the context menu.
The final step is to collect these scenarios under a pool header node we will be able to find again.
In the “All Scenarios” view create a new node, rename it “pedestrian t-intersection scenario pool” using
the Node(s)
then Properties
options in the context menu, and connect it to all our scenarios of interest.
Figure 7: Create a new header node for the scenario subset we have found. Rename it using the Node properties section of the context menu, then connect it to the scenario subset.
Send the pedestrian t-intersection scenario pool
pool node to the Summary View, and connect to the pool
header node for safe keeping. You are now ready to run simulation tests on this scenario type!
Example 2: “We would like to see how our stack responds in head-on collisions involving a high speed hazard”
As in Example 1, click on the Taxonomy view background, select Search, then type head_on into the search bar and press enter. The annotation will then highlight blue, as seen in Figure 8 below, and can be copied & pasted into the "All Scenarios" view.
Figure 8: Searching for the head_on annotation in the Taxonomy view.
By selecting the successors of the head_on annotation node, and dragging those scenarios away from the main ring, we can clearly make out which scenarios involve a head on collision.
Figure 9: Highlight and move the successors of the head_on annotation to identify which scenarios involve that collision type.
We now want to filter these by which include a hazard traveling at a high speed at the time of collision. To do this, we will create a temporary view “Head-On dRISK Scenarios” into which we will copy & paste just the scenarios which connect to the head_on header.
We now want to order these scenarios by the speed of the hazard entity. To do this, locate the
hazard_speed_at_poi
annotation in the Taxonomy view using the same steps as shown in Figure 8,
and send this annotation to our “Head-On dRISK Scenarios” view as the x-axis node (Figure 11).
Note that once you have sent the node over, you might need to refresh the view for the changes
in node position to become clear.
Figure 11: By distributing scenarios according to the metric hazard_speed_at_poi
we can easily
identify and select those scenarios with the largest values, and hence highest speed hazard entity.
With the scenario nodes now distributed according to the values of hazard_speed_at_poi, we can highlight all
those which are on the right-hand side of the view and add them to a new header node (LHS Figure 12).
The successors of this head-on collisions with a high-speed hazard
node are our scenarios of interest.
Add the head-on collisions with a high-speed hazard
node to the Summary View and connect up to the
pool header and you are done!
Example 3: “We would like a set of scenarios that take place at a specific junction on our map”
To identify all the scenarios which take place on the junction of interest - in this example we will take the
central crossroad located in Herrenberg road network of DriveSim - we first need to lay out our scenarios in
a spatial view. To achieve this, highlight all the scenarios in the "All Scenarios view", right click, then select
Tools
then Spatial View
. A new view will open with the selected scenarios distributed across their road network.
As the example scenario set we are using here all take place on the Herrenberg road network, that is the road network
we see in the new view (RHS view of Figure 13).
From here, simply navigate around the spatial view until you identify the junction of interest and highlight all the nodes in this region. Doing so will cause the relevant scenario nodes to highlight in our LHS view at the same time. By dragging the nodes away from the rest, we have easily and quickly identified the scenarios that take place at our junction of interest; these are the scenarios we wish to test in simulation first!
Once again, to store these scenarios we create a new header node, re-label it “scenarios at junction of interest”, and add edges from the header node to all our identified scenarios of interest. Send this header node to the Summary View and connect it to the pool header node to store for future use.