Sunteți pe pagina 1din 20

Matthew Piccoli

University of Pennsylvania
Base Controller

 Lots of deprecated code

 Separate odometry from controller

 Use common baseKinematics class

 Continuously updated throughout the summer


Choices…
 Safe teleop (base)
 Velocity control

 Goal control

 Closed loop grasping


 Using fingertip sensors

 Cart pushing/trailer pulling


Safe Teleop
 Two methods:
Velocity control
○ The path of the commanded velocity from the joystick
is projected forward
○ If path crosses obstacle, linearly decrease speed with
distance
Goal control
○ The location of the goal is controlled by the joystick
○ Move_base or move_base_local plans to that goal
Closed Loop Grasping
 Initial goals:
Identify objects
Grasp delicate objects (like eggs)
Closed Loop Grasping
 Initial goals:
Identify objects
Grasp delicate objects (like eggs)

Squishy ball Wood block


Impulse from motor momentum!
Closed Loop Grasping
 Initial goals:
Grasp delicate objects (like eggs)
Identify objects

 Need to prevent force spike


Force spike from impulse
Need to reduce impulse
Impulse from momentum
Need to reduce momentum
Momentum from velocity (motors/materials)
Need to reduce velocity
Closed Loop Grasping
 Initial goals:
Grasp delicate objects (like eggs)
Identify objects

 Velocity controller
 Will attempt to go through object at specified velocity
 Need to switch to a controller that won’t go through the
object, but will hold onto it
○ Effort controller
 Need to switch at impact with object (on both fingertips)
 Can use fingertip sensors or change in current to motor
Closed Loop Grasping
Open loop
 Initial goals:
Closed loop
Grasp delicate objects (like eggs)
Identify objects
Closed Loop Grasping
Classification Output (Weka)
Odwalla vs Naked vs Can vs
J48 pruned tree Water
------------------

|
|
first_contact_distance <= 0.059488
first_contact_distance <= 0.057874: naked (38.0)
first_contact_distance > 0.057874
93.8865 %
| | df/dt <= 17278.83919: naked (4.0)
| | df/dt > 17278.83919
| | | peak_force_distance <= 0.051701
| | | | first_contact_distance <= 0.058224: naked (4.0)
| | | | first_contact_distance > 0.058224: odwalla (19.0/2.0)
| | | peak_force_distance > 0.051701: odwalla (43.0)
first_contact_distance > 0.059488
| fingertip_peak_force_right <= 9437: water (70.0/1.0)
| fingertip_peak_force_right > 9437
| | dx/dt <= 0.008679: can (42.0)
| | dx/dt > 0.008679: water (9.0/1.0)
Number of Leaves :
Size of the tree : 15
8
a b c d <-- classified as
Time taken to build model: 0.01 seconds 58 1 0 1 | a = odwalla
8 40 0 0 | b = naked
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances 215 93.8865 %
Incorrectly Classified Instances 14 6.1135 %
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
0.9167
0.0378
0.1729
10.2468 %
0 0 41 3 | c = can
0 0 1 76 | d = water
Root relative squared error 40.2635 %
Total Number of Instances 229
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.967 0.047 0.879 0.967 0.921 0.963 odwalla
0.833 0.006 0.976 0.833 0.899 0.946 naked
0.932 0.005 0.976 0.932 0.953 0.962 can
0.987 0.026 0.95 0.987 0.968 0.972 water
Weighted Avg. 0.939 0.023 0.942 0.939 0.938 0.962
=== Confusion Matrix ===
a b c d <-- classified as
58 1 0 1 | a = odwalla
8 40 0 0 | b = naked
0 0 41 3 | c = can
0 0 1 76 | d = water
Closed Loop Grasping
Classification Output (Weka)
Odwalla vs Naked vs Can vs
Water and Open vs Closed and
Full vs Empty
J48 pruned tree
------------------
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
116
113
0.4702
50.655 %
49.345 % 50.655 %
Mean absolute error 0.0662
Root mean squared error 0.2367
Relative absolute error 53.3184 %
Root relative squared error 94.967 %
Total Number of Instances 229
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1 0.005 0.938 1 0.968 0.998 odwallafullclosed
0.733 0.033 0.611 0.733 0.667 0.855 odwallafullopen
0.6 0.014 0.75 0.6 0.667 0.885 odwallaemptyopen
0.643 0.019 0.692 0.643 0.667 0.813 nakedfullclosed
0.286 0.023 0.444 0.286 0.348 0.689 nakedfullopen
0.7 0.037 0.467 0.7 0.56 0.925 nakedemptyclosed
0.6 0.018 0.6 0.6 0.6 0.791 nakedemptyopen
0.467 0.033 0.5 0.467 0.483 0.78 odwallaemptyclosed
1 0.005 0.933 1 0.966 0.998 canfullclosed
0.6 0.028 0.6 0.6 0.6 0.847 canfullopen
0.467 0.042 0.438 0.467 0.452 0.767 canemptyopen
0.278 0.062 0.278 0.278 0.278 0.641 waterfullclosed
0.158 0.086 0.143 0.158 0.15 0.709 waterfullopen
0.15 0.038 0.273 0.15 0.194 0.597 wateremptyopen
0.35 0.091 0.269 0.35 0.304 0.704 wateremptyclosed
Weighted Avg. 0.507 0.039 0.505 0.507 0.501 0.787
=== Confusion Matrix ===
a b c d e f g h i j k l m n o <-- classified as
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | a = odwallafullclosed
0 11 0 0 0 0 0 3 0 0 0 1 0 0 0 | b = odwallafullopen
0 0 9 0 0 3 1 2 0 0 0 0 0 0 0 | c = odwallaemptyopen
1 2 0 9 2 0 0 0 0 0 0 0 0 0 0 | d = nakedfullclosed
0 0 2 4 4 1 1 2 0 0 0 0 0 0 0 | e = nakedfullopen
0 0 0 0 1 7 2 0 0 0 0 0 0 0 0 | f = nakedemptyclosed
0 0 0 0 1 3 6 0 0 0 0 0 0 0 0 | g = nakedemptyopen 0 0 0 0 0 0 0 0 1 2 0 5 4 1 5| l = waterfullclosed
0 5 1 0 1 1 0 7 0 0 0 0 0 0 0 | h = odwallaemptyclosed
0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 | i = canfullclosed
0 0 0 0 0 0 0 0 0 9 6 0 0 0 0 | j = canfullopen
0 0 0 0 0 0 0 0 0 0 1 5 3 4 6| m = waterfullopen
0 0 0 0 0 0 0 0 0 4 7 2 1 0 1 | k = canemptyopen
0 0 0 0 0 0 0 0 1 2 0 5 4 1 5 | l = waterfullclosed
0 0 0 0 0 0 0 0 0 0 0 1 9 3 7| n = wateremptyopen
0 0 0 0 0 0 0 0 0 0 1 5 3 4 6 | m = waterfullopen
0 0 0 0 0 0 0 0 0 0 0 1 9 3 7 | n = wateremptyopen 0 0 0 0 0 0 0 0 0 0 2 4 4 3 7| o = wateremptyclosed
0 0 0 0 0 0 0 0 0 0 2 4 4 3 7 | o = wateremptyclosed
Classification Output (Weka)
Odwalla vs Naked vs Can and
Open vs Closed and Full vs Empty
J48 pruned tree
------------------
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
99
53
0.6155
65.1316 %
34.8684 % 65.1316 %
Mean absolute error 0.067
Root mean squared error 0.2413
Relative absolute error 40.5616 %
Root relative squared error 83.9145 %
Total Number of Instances 152
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
0.933 0.022 0.824 0.933 0.875 0.958 odwallafullclosed
0.667 0.044 0.625 0.667 0.645 0.846 odwallafullopen
0.667 0.058 0.556 0.667 0.606 0.852 odwallaemptyopen
0.5 0.029 0.636 0.5 0.56 0.76 nakedfullclosed
0.429 0.036 0.545 0.429 0.48 0.705 nakedfullopen
0.6 0.028 0.6 0.6 0.6 0.925 nakedemptyclosed
0.7 0.014 0.778 0.7 0.737 0.842 nakedemptyopen
0.467 0.058 0.467 0.467 0.467 0.702 odwallaemptyclosed
0.929 0 1 0.929 0.963 0.964 canfullclosed
0.667 0.051 0.588 0.667 0.625 0.809 canfullopen
0.6 0.044 0.6 0.6 0.6 0.926 canemptyopen
Weighted Avg. 0.651 0.036 0.653 0.651 0.649 0.843
=== Confusion Matrix ===
a b c d e f g h i j k <-- classified as
14 1 0 0 0 0 0 0 0 0 0 | a = odwallafullclosed
0 10 0 0 0 0 0 4 0 0 1 | b = odwallafullopen
0 0 10 0 0 2 0 3 0 0 0 | c = odwallaemptyopen
3 0 0 7 3 0 0 1 0 0 0 | d = nakedfullclosed
0 1 4 3 6 0 0 0 0 0 0 | e = nakedfullopen
0 0 1 0 1 6 2 0 0 0 0 | f = nakedemptyclosed
0 0 0 0 1 2 7 0 0 0 0 | g = nakedemptyopen
0 4 3 1 0 0 0 7 0 0 0 | h = odwallaemptyclosed
0 0 0 0 0 0 0 0 13 1 0 | i = canfullclosed
0 0 0 0 0 0 0 0 0 10 5 | j = canfullopen
0 0 0 0 0 0 0 0 0 6 9 | k = canemptyopen

Without Water
Classification Output (Weka)
Open vs Closed and Full vs
J48 pruned tree Empty
------------------
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
115
37
0.7316
75.6579 %
24.3421 % 75.6579 %
Mean absolute error 0.0449
Root mean squared error 0.1978
Relative absolute error 27.152 %
Root relative squared error 68.7782 %
Total Number of Instances 152
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1 0.015 0.882 1 0.938 0.993 odwallafullclosed
0.8 0.007 0.923 0.8 0.857 0.928 odwallafullopen
0.8 0.044 0.667 0.8 0.727 0.911 odwallaemptyopen
0.857 0.043 0.667 0.857 0.75 0.936 nakedfullclosed
0.714 0.014 0.833 0.714 0.769 0.915 nakedfullopen
0.7 0.007 0.875 0.7 0.778 0.946 nakedemptyclosed
0.8 0.014 0.8 0.8 0.8 0.946 nakedemptyopen
0.467 0.036 0.583 0.467 0.519 0.835 odwallaemptyclosed
0.929 0 1 0.929 0.963 0.964 canfullclosed
0.667 0.051 0.588 0.667 0.625 0.809 canfullopen
0.6 0.036 0.643 0.6 0.621 0.931 canemptyopen
Weighted Avg. 0.757 0.025 0.763 0.757 0.755 0.917
=== Confusion Matrix ===
a b c d e f g h i j k <-- classified as
15 0 0 0 0 0 0 0 0 0 0 | a = odwallafullclosed
0 12 0 0 0 0 0 3 0 0 0 | b = odwallafullopen
1 0 12 0 0 0 0 2 0 0 0 | c = odwallaemptyopen
0 0 0 12 2 0 0 0 0 0 0 | d = nakedfullclosed
0 0 0 4 10 0 0 0 0 0 0 | e = nakedfullopen
0 0 0 1 0 7 2 0 0 0 0 | f = nakedemptyclosed
0 0 0 1 0 1 8 0 0 0 0 | g = nakedemptyopen
1 1 6 0 0 0 0 7 0 0 0 | h = odwallaemptyclosed
0 0 0 0 0 0 0 0 13 1 0 | i = canfullclosed
0 0 0 0 0 0 0 0 0 10 5 | j = canfullopen
0 0 0 0 0 0 0 0 0 6 9 | k = canemptyopen

Without Water and Knowing


Classification Output (Weka)
Open vs Closed and Full vs
J48 pruned tree Empty
------------------
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
45
15
0.6667
75
25
%
% 75 %
Mean absolute error 0.0468
Root mean squared error 0.2024
Relative absolute error 33.0524 %
Root relative squared error 77.0029 %
Total Number of Instances 60
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1 0.044 0.882 1 0.938 0.978 odwallafullclosed
0.667 0.044 0.833 0.667 0.741 0.896 odwallafullopen
0.733 0.089 0.733 0.733 0.733 0.852 odwallaemptyopen
0 0 0 0 0 ? nakedfullclosed
0 0 0 0 0 ? nakedfullopen
0 0 0 0 0 ? nakedemptyclosed
0 0 0 0 0 ? nakedemptyopen
0.6 0.156 0.563 0.6 0.581 0.81 odwallaemptyclosed
0 0 0 0 0 ? canfullclosed
0 0 0 0 0 ? canfullopen
0 0 0 0 0 ? canemptyopen
Weighted Avg. 0.75 0.083 0.753 0.75 0.748 0.884
=== Confusion Matrix ===
a b c d e f g h i j k <-- classified as
15 0 0 0 0 0 0 0 0 0 0 | a = odwallafullclosed
1 10 0 0 0 0 0 4 0 0 0 | b = odwallafullopen
1 0 11 0 0 0 0 3 0 0 0 | c = odwallaemptyopen
0 0 0 0 0 0 0 0 0 0 0 | d = nakedfullclosed
0 0 0 0 0 0 0 0 0 0 0 | e = nakedfullopen
0 0 0 0 0 0 0 0 0 0 0 | f = nakedemptyclosed
0 0 0 0 0 0 0 0 0 0 0 | g = nakedemptyopen
0 2 4 0 0 0 0 9 0 0 0 | h = odwallaemptyclosed
0 0 0 0 0 0 0 0 0 0 0 | i = canfullclosed
0 0 0 0 0 0 0 0 0 0 0 | j = canfullopen
0 0 0 0 0 0 0 0 0 0 0 | k = canemptyopen

Odwalla Only
We Can Do Better
 Modify the controller to:
Give time to velocity = 0
Repeat grasp with different forces
Give time to location of lowest force trial
velocity = 0 when using larger forces
Give time to spring back to first contact
distance
Classification Output (Weka)
Open vs Closed and Full vs
Empty
With Improved Algorithm
J48 pruned tree
------------------
time3 <= 0.542
| peak_force03 <= 14609
| | distance_steady3 <= 0.049578: emptyopen (19.0)
| | distance_steady3 > 0.049578
| | | steady_force03 <= 9386: emptyopen (4.0)
| | | steady_force03 > 9386: emptyclosed (25.0/1.0)
| peak_force03 > 14609: fullclosed (24.0)
time3 > 0.542: fullopen (24.0)
Number of Leaves : 5
Size of the tree : 9

Time taken to build model: 0 seconds


=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
89
0.9028
7
0.0411
92.7083 %
7.2917 % 92.7083 %
Root mean squared error 0.1858
Relative absolute error 10.9362 %
Root relative squared error 42.8508 %
Total Number of Instances 96
=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class
1 0.014 0.96 1 0.98 0.993 fullclosed
0.833 0.028 0.909 0.833 0.87 0.912 emptyopen
1 0.014 0.96 1 0.98 0.993 fullopen
0.875 0.042 0.875 0.875 0.875 0.929 emptyclosed
Weighted Avg. 0.927 0.024 0.926 0.927 0.926 0.957
=== Confusion Matrix ===
a b c d <-- classified as
24 0 0 0 | a = fullclosed
0 20 1 3 | b = emptyopen
0 0 24 0 | c = fullopen
1 2 0 21 | d = emptyclosed

Odwalla Only
Closed Loop Grasping

S-ar putea să vă placă și