Stored attributes can be used to relay information about session status or progress to a trainee either through VI Guidance or by being output to a debrief page. Stored attributes can be a number of things, from timestamps, instrument and flight control status, and aircraft to object information. Stored attributes are an integral part of creating a robust agent for a lesson. They are used relatively often and as such, you may have encountered them in some of the other tutorial lessons.
Here, we go over the basic steps of creating and using a stored attribute in either a Local Parameter or an Objective. The difference between the two is the Objective will report out to the Learning Management System (LMS) and into the debrief page, the Local Parameter will monitor trainee progress only within the session.
To begin, create a new session with a controlled entity (at default entity settings) and add a Virtual Instructor agent.
1. Right click in the white space of Knowbook LMS > New > Session. Once in the Scenario Editor, right click > New > Cessna.
2. Select the entity and click on the Agents tab of the Entity Settings window. Right click > New > Virtual Instructor.
For the purpose of this tutorial, we will create an agent that will monitor the speed of the aircraft and distance in relation to an object.
3. To place an object, in this case an Identification Waypoint, first measure 10 NM ahead of where you placed your controlled Cessna. To measure distance, click the ruler icon in the toolbar.
4. Next click on the Cessna and drag your cursor up until the reading from the ruler is 10 NM. Place an Identification Waypoint in this vicinity.
5. Click back on the pointer icon in the toolbar.
6. Now, in the vicinity of where you measured 10 NM, right click on the map > New > Identification Waypoint.
(This may not show up in your list, in that case click “More…”> expand Physical > expand Instructional > IdentificationWaypoint, click OK.)
Your scenario should now look something like this:
Make sure that the waypoint has default settings as well (both the Cessna and the waypoint should have an altitude of 10,000 ft:
Finally, to complete scenario set up, we must add a route for the Cessna so we can measure the relative distance without having to monitor in a Continue step.
7. Select the Cessna, then click the New Route icon in the toolbar.
8. Your cursor should change into a crosshair icon, hover over Identification Waypoint 1 and click the mouse to drop a new navigation waypoint into the scenario.
9. Close the Route Editor window.
10. In the Cessna’s Entity Settings, select Route 1 from the dropdown menu.
Creating the Agent
Now that we have our scenario set-up, let’s add some instructional VI Guidance. You should let the trainee know that their speed and distance to the waypoint will be monitored.
11. Right click on Instructions > Instructional Aids > VI Guidance.
12. In a new step, add a Continue to monitor speed at 100 knots. Right click Instructions > Add Flow Control > Continue. Since it would be very difficult to go exactly 100 knots, add the attribute to the Range. Right click Range > Add Attribute > search for speed and check off the Show hidden tokens box > select ATT_INDICATED_AIRSPEED_KNOTS > Add.
13. Edit the attribute by right clicking on it > Edit and change to 90 < x < 110.
14. Make Step 2, with this attribute, a cyclic step. Right click on Step 2 > Do Cyclic.
Your agent should look something like this:
Let’s also tell the trainee how fast they are traveling every 30 seconds. We can use speed as a stored attribute to let them know this information.
15. After the Continue is Step 2, add VI Guidance and present the current speed of the aircraft. Right click on Continue > Instructional Aids > VI Guidance. In the Subtitle text area, right click > Attribute > ATT_INDICATED_AIRSPEED_KNOTS > Add. Click Ok when the Attribute Characteristics window pops up. We don’t need to change anything there.
16. Add informational text around the stored attribute.
17. After the VI Guidance, add a 30 second time out. Right click > Timeout > change duration to 30 seconds. Since the step is cyclic, the Continue will monitor whether the trainee is within 90-110 knots and if so, will alert the trainee to current speed every 30 seconds.
18. To monitor whether the trainee is outside the speed range add another Continue to Step 2. To make this easier, we can copy and paste the Continue we already have. Select Continue and press the Ctrl+C buttons, then select Step 2 and press the Ctrl+V buttons. A “Copy of Continue” should appear.
19. Change the attribute to measure outside the range by right clicking > Check If Not In Range. Now, if the trainee is traveling outside the range, they will also get updates on their speed every 30 seconds.
20. After a trainee has gone out of range 3 times, the scenario should be terminated. Create a local parameter to store the number of times the trainee travels outside the speed range. Click View > Local Parameters > right click on Local Parameters > New, name the new Parameter “Outside Range”.
21. Right click on Copy of Continue > Set Local Parameter > select Outside Range from the drop down menu > “…” button > select Local Parameter > Outside Range > select + from the drop down menu below New Value box. Under Add Value, type 1 and click OK.
22. Create another cyclic step with a Continue to measure when Outside Range = 3 to terminate the session. We also want to let the trainee know how far they were from the Waypoint. In the Continue, right click on Trainee Info > Compare Local Parameter > select Outside Range from the drop down menu > is = to and type 3 in the Compare to box.
23. Add a Scenario End when the Continue Condition has been met. Right click on Continue > Instructional Aids > Scenario End > change Status drop down menu to “incomplete” and click OK.
Since Step 3 is also cyclic, the agent will constantly be monitoring for Outside Range to equal 3.
Distance Relative to Waypoint
24. Create a new step and tell the trainee to fly straight ahead. When they get within 1 mile, the scenario will end. Let’s store this distance in an Objective.
25. Create a new Objective (similar to create a new Local Parameter; See above) and name it Distance.
26. Create a new cyclic step and set the objective Distance. Right click on Instructions > Set Objective. In the drop down menu select Distance and in the New Value box click the “…” button and select Attribute. Search “distance” and select ATT_DISTANCE_TO_CURRENT_WAYPOINT, click Add.
27. In the drop down menu underneath the New Value box, select the back slash icon or “ / ” to perform a divided by action. Add the value 1852 in the Add Value Box. Click OK.
This is how many meters are in a nautical mile. If we want to report the distance to the waypoint in terms that are relevant to the trainee, we should report in NM, not meters.
28. Next, add VI Guidance and report the objective, Distance.
Also, if you want to send this information to the debrief page, you can add this line into the debrief section as well. It should be noted that the stored attribute for the objective can’t be copied and pasted into the debrief section. In order for the objective to remain unbroken, you have to add the objective by right clicking > Object > select Distance.
29. Create a 30 second time out after this VI Guidance. This will give the cyclic step 30 seconds until it measures distance again.
30. For this step to repeat itself, add a Jump To after the 30 second timeout. Right click on 30 Seconds > Jump To… > Click on Step 5 (or whichever step this “Jump To” falls under).
31. In order to end the scenario when the trainee gets within 1 miles of the waypoint, add a new step with a continue that measures for distance to waypoint in relation to Identification Waypoint 1. Right click on Relative to > Set Relative Entity > select Identification Waypoint 1. Then right click again > Add Attribute > select ATT_GET_DISTANCE_FROM_ENTITY_MILES > Add.
32. Edit the attribute to measure between 0 < x < 1.
33. Add a Scenario End after the Continue condition has been met. Check to make sure Status is passed and click OK.
Here is a sample of the debrief page: