Contents
Overview
This package is meant to allow users to analyze WG hardware testing data. It is meant for internal WG use only. It will not work unless you have access to the WG Inventory system.
In order to use these tools, you'll need to install ROS (use the "pr2all" install). You'll also need to have the wgtest_data_analysis package in your ROS_PACKAGE_PATH.
Control Chart / Parameter Review
In order to review (or request a change) of a testing parameter, you'll need data to show that the parameter should be changed.
To make a control chart for test parameters, follow these instructions:
rosrun wgtest_data_analysis make_control_chart.py -u USER
Enter your username for the WG Inventory System, it will prompt for your password.
The available tests will display like this:
Available tests: 0: 2966-2 (ID: 48) 1: 4204-2 (ID: 50) 2: 4204-l (ID: 49) 3: 4204-r (ID: 51) 4: caster-burn (ID: 32) 5: caster-motor-test (ID: 46) 6: caster-post (ID: 33) 7: caster-test (ID: 31) 8: ctr350-test (ID: 38) 9: elbow-motor-test (ID: 36) 10: forearm-roll-test (ID: 13) 11: gripper-burn (ID: 2) 12: gripper-motor-test (ID: 35) 13: gripper-post-test (ID: 3) 14: gripper-test (ID: 1) 15: gripper-tip-test (ID: 44) 16: head-burn (ID: 16) 17: head-pan-motor-test (ID: 22) 18: head-post-test (ID: 17) 19: head-projector-test (ID: 18) 20: head-test (ID: 15) 21: head-tilt-motor-test (ID: 11) 22: hokuyo_test (ID: 37) ....
Enter the index of the test. In this case, select 20 for the head-test.
Subtests for head-test 0. Tilt Hysteresis (ID: 24) 1. Head Checkout (ID: 22) 2. Pan Hysteresis (ID: 23) 3. Pan Hysteresis Post-Drop (ID: 99) 4. Head Drop Test (ID: 98) 5. Tilt Hysteresis Post-Drop (ID: 100) Select subtest to examine. Enter index (0, 1, ...):
Select the subtest you want to examine, in this case 0 for Tilt Hysteresis.
Finally, select which measurement you want to plot:
Subtest measurements: 0: Intercept_Negative 1: Intercept_Positive 2: Max_Range 3: Min_Range 4: Negative_Velocity_Avg 5: Negative_Velocity_RMS 6: Negative_Velocity_SD 7: Positive_Velocity_Avg 8: Positive_Velocity_RMS 9: Positive_Velocity_SD 10: Slope_Negative 11: Slope_Positive Select measurement to plot (enter index):
Entering 2 for Max_Range, we can make a plot, or export a CSV.
Request a Parameter Change
After examining the data, you can request a change to the existing qual parameters.
Open a ticket here.
Ticket must include:
- Test name / ID
- Subtest name
- Parameter name
- Requested parameter values
- CSV of parameter data.
Troubleshooting
If the plot or CSV has almost no data, select a different parameter. For example, instead of "Positive_Effort_Average", select "Positive_Effort_Avg".
Determining Test Sequences
To determine if a part is fully tested, you can run the check_tested.py script.
watts@ckb:/wg/stor5_home4/watts$ rosrun wgtest_data_analysis check_tested.py -u USER -d -r 680421301037 Enter your password to the Willow Garage Inventory system Password: All tests complete: False Test sequence (completed and passed): wrist-test (ID: 39) on 03/16/2010 10:01 wrist-dummy (ID: 40) on 03/18/2010 11:19 Required sequence: wrist-test (ID: 39) wrist-dummy (ID: 40) wrist-burn (ID: 41) wrist-dummy (ID: 40) wrist-post (ID: 42)
Enter the component's serial number (ex: "680421301037" above).
Note: For any burn in tests completed before 9/15/2010, the completion will not be in the log.
Writing Custom Utilities
1 #!/usr/bin/env python
2
3 import roslib; roslib.load_manifest('wgtest_data_analysis')
4
5 from wg_invent_client import Invent
6 import wgtest_data_analysis.wgtest_accessors as wgtest_access
7
8 # Return the percentage of time a subtest has passed
9 def percent_passed(results):
10 count = 0
11 passed = 0
12 for k, v in results.iteritems():
13 if v[0].lower() == 'pass':
14 passed += 1
15 count += 1
16
17 return passed / count
18
19 if __name__ == '__main__':
20 # Initialize WG Invent Client
21 iv = Invent(sys.argv[1], sys.argv[2])
22
23 if not iv.login():
24 print >> sys.stderr, "Unable to login to Invent. Try again."
25 sys.exit(1)
26
27 percents = {}
28
29 for i in range(1, 200):
30 # Get subtest result histories
31 results = wgtest_access.get_subtest_results(iv, str(i))
32
33 if not results:
34 print >> sys.stderr, "Unable to find results for subtest %d" % i
35 break
36
37 percents[i] = percent_passed(results)