Changeset 1530


Ignore:
Timestamp:
03/02/2012 03:18:57 PM (6 years ago)
Author:
michael.kriegel
Message:

updated in the wild scenario code

Location:
scenarios/InTheWild/cmionInTheWild
Files:
6 added
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • scenarios/InTheWild/cmionInTheWild/.classpath

    r417 r1530  
    1010        <classpathentry kind="lib" path="slf4j-simple-1.5.8.jar"/> 
    1111        <classpathentry kind="lib" path="smslib-3.4.2.jar"/> 
     12        <classpathentry kind="src" path="/HwuDialogSystem"/> 
    1213        <classpathentry kind="output" path="bin"/> 
    1314</classpath> 
  • scenarios/InTheWild/cmionInTheWild/src/cmion/inTheWild/competencies/EmysAskQuestion.java

    r1446 r1530  
    1111import cmion.storage.CmionStorageContainer; 
    1212 
    13 /** a competency that when invoked will cause Emys to ask the user a binary question 
     13/** a competency that when invoked will cause Emys to ask the user a mutiple choice question (up to 4) 
    1414 *  and wait for the answer to the question and raise a remote action event representing 
    1515 *  the user's answer 
    1616 *  this competency only writes to the blackboard and requires 
    1717 *      an emys connector to run and transmit the request and receive the answer */ 
    18 public class EmysAskBinaryQuestion extends Competency { 
     18public class EmysAskQuestion extends Competency { 
    1919 
    2020        public static final String CHOICE1 = "choice1"; 
    2121        public static final String CHOICE2 = "choice2"; 
     22        public static final String CHOICE3 = "choice3"; 
     23        public static final String CHOICE4 = "choice4";  
     24        public static final String CHOICES = "choices"; 
    2225        public static final String QUESTION = "question";        
    2326        public static final String ANSWER = "answer";    
     27        public static final String CANCELLED = "cancelled";      
    2428        public static final String PERSON = "person";    
    25         public static final String CONTAINER_NAME = "EmysBinaryQuestion"; 
     29        public static final String CONTAINER_NAME = "EmysMultipleChoiceQuestion"; 
    2630 
    27         public EmysAskBinaryQuestion(IArchitecture architecture) { 
     31        public EmysAskQuestion(IArchitecture architecture) { 
    2832                super(architecture); 
    29                 this.competencyName = "EmysAskBinaryQuestion"; 
    30                 this.competencyType = "EmysAskBinaryQuestion"; 
     33                this.competencyName = "EmysAskQuestion"; 
     34                this.competencyType = "EmysAskQuestion"; 
    3135        } 
    3236 
     
    4953                // check if all required parameters are there 
    5054                if (!parameters.containsKey(CHOICE1)) return false; 
    51                 if (!parameters.containsKey(CHOICE2)) return false; 
    5255                if (!parameters.containsKey(PERSON)) return false;               
    5356                if (!parameters.containsKey(QUESTION)) return false;     
    5457 
     58                int noChoices;  
     59                 
     60                // see how many choices there are 
     61                if (!parameters.containsKey(CHOICE2)) noChoices=1; 
     62                else if (!parameters.containsKey(CHOICE3)) noChoices=2; 
     63                else if (!parameters.containsKey(CHOICE4)) noChoices=3; 
     64                else noChoices=4; 
     65                 
     66                String choices[] = new String[noChoices]; 
     67                choices[0] = parameters.get(CHOICE1); 
     68                if (noChoices>1) choices[1] = parameters.get(CHOICE2); 
     69                if (noChoices>2) choices[2] = parameters.get(CHOICE3); 
     70                if (noChoices>3) choices[3] = parameters.get(CHOICE4); 
     71                 
     72                 
    5573                // post question to the blackboard 
    56                 // properties of the question are the question itself and choice 1 and choice 2 
     74                // properties of the question are the question itself and the array containing the choices 
    5775                HashMap<String, Object> properties = new HashMap<String,Object>(); 
    5876                properties.put(QUESTION, parameters.get(QUESTION)); 
    59                 properties.put(CHOICE1, parameters.get(CHOICE1)); 
    60                 properties.put(CHOICE2, parameters.get(CHOICE2));                
     77                properties.put(CHOICES, choices);                
    6178                architecture.getBlackBoard().requestAddSubContainer(CONTAINER_NAME, CONTAINER_NAME, properties); 
    6279                 
    6380                // wait until the user has answered 
    6481                String answer = null; 
    65                 while (answer == null) 
     82                Boolean cancelled = false; 
     83                while ((answer == null) && !cancelled) 
    6684                { 
    6785                        try { 
    68                                 Thread.sleep(500); 
     86                                Thread.sleep(200); 
    6987                        } catch (InterruptedException e) {} 
    7088                        // check if there is an answer posted (to go super safe, we check if the container is even there, 
     
    7694                                { 
    7795                                        answer = questionContainer.getPropertyValue(ANSWER).toString(); 
    78                                 } 
     96                                }  
     97                                else if (questionContainer.hasProperty(CANCELLED)) 
     98                                { 
     99                                        cancelled = (Boolean) questionContainer.getPropertyValue(CANCELLED); 
     100                                }                                        
    79101                        } 
     102 
    80103                } 
    81104                 
    82105                // now we have an answer, so first delete the container from the blackboard 
    83106                architecture.getBlackBoard().requestRemoveSubContainer(CONTAINER_NAME); 
     107                 
     108                // return failure if cancelled 
     109                if (cancelled) return false; 
    84110                 
    85111                // and finally raise the remote action 
     
    91117                MindAction ma = new MindAction(parameters.get(PERSON),"answer",actionParameters); 
    92118                this.raise(new EventRemoteAction(ma));   
     119 
     120                // wait a little bit as we want to make sure we have a chance to process the answer before the question end signal 
     121                try { 
     122                        Thread.sleep(100); 
     123                } catch (InterruptedException e) {} 
     124                 
    93125                 
    94126                return true; 
  • scenarios/InTheWild/cmionInTheWild/src/cmion/inTheWild/competencies/KinectTrackerConnector.java

    r1446 r1530  
    4242                                double z = bottleIn.get(3).asDouble(); 
    4343                                TrackingInfo userInfo = new TrackingInfo(x,y,z); 
    44                                 if (z<700) 
     44                                if (z<1200) 
    4545                                { 
    4646                                        if (timeElapsed()>7000) 
  • scenarios/InTheWild/cmionInTheWild/src/cmion/inTheWild/woz/ITWEmysWoz.java

    r1446 r1530  
    7979                        newLogLine = "FAIL!!!!! gaze: " + a.getParameters().get(0); 
    8080                else if (a.getName().equals("wozQuestion") && a.getSubject().equals("Sarah")) 
    81                         newLogLine = "FAIL!!!!! question: " + a.getParameters().get(0) + " " + a.getParameters().get(1); 
     81                        newLogLine = "FAIL!!!!! question: " + a.getParameters(); 
    8282 
    8383                final String finalLogLine = newLogLine; 
     
    107107                        newLogLine = "***** gaze: " + a.getParameters().get(0); 
    108108                else if (a.getName().equals("wozQuestion") && a.getSubject().equals("Sarah")) 
    109                         newLogLine = "***** question: " + a.getParameters().get(0) + " " + a.getParameters().get(1); 
     109                        newLogLine = "***** question: " + a.getParameters(); 
    110110                else if (a.getName().equals("wozSendSMS") && a.getSubject().equals("Sarah")) 
    111111                        newLogLine = "sms: " + a.getParameters().get(1); 
  • scenarios/InTheWild/cmionInTheWild/src/cmion/inTheWild/woz/ITWEmysWozFrame.java

    r1470 r1530  
    217217        private JComboBox comboBoxCommon; 
    218218        private JLabel lblLeft; 
     219        private JButton btnEmysInvisible; 
     220        private JButton btnEmysVisible; 
     221        private JButton btnClearScreen; 
     222        private JLabel jLabel22; 
     223        private JTextField txtFieldChoice3; 
     224        private JLabel jLabel21; 
     225        private JTextField txtFieldChoice4; 
    219226        private JButton btnSetGaze; 
    220227        private JComboBox comboBoxTask; 
     
    235242        private JLabel jLabel13; 
    236243        private JLabel lblRight; 
    237         private JTextField txtFieldRight; 
    238         private JTextField txtFieldLeft; 
     244        private JTextField txtFieldChoice2; 
     245        private JTextField txtFieldChoice1; 
    239246        private JTable jTable1; 
    240247        private JScrollPane jScrollPane1; 
     
    411418                                        jLabel4 = new JLabel(); 
    412419                                        jPanel1.add(jLabel4); 
    413                                         jLabel4.setText("display binary choice"); 
     420                                        jLabel4.setText("display multiple choice"); 
    414421                                        jLabel4.setBounds(16, 225, 182, 14); 
    415422                                        jLabel4.setForeground(new java.awt.Color(255,255,255)); 
     
    434441                                        jPanel1.add(btnShowChoice); 
    435442                                        btnShowChoice.setText("display"); 
    436                                         btnShowChoice.setBounds(418, 221, 83, 22); 
     443                                        btnShowChoice.setBounds(417, 214, 97, 29); 
    437444                                        btnShowChoice.addActionListener(this); 
    438445                                } 
     
    441448                                        jPanel1.add(jLabel5); 
    442449                                        jLabel5.setText("talk:"); 
    443                                         jLabel5.setBounds(6, 276, 29, 14); 
     450                                        jLabel5.setBounds(6, 330, 29, 14); 
    444451                                        jLabel5.setForeground(new java.awt.Color(255,255,255)); 
    445452                                } 
     
    447454                                        jTextAreaTalk = new JTextArea(); 
    448455                                        jPanel1.add(jTextAreaTalk); 
    449                                         jTextAreaTalk.setBounds(43, 250, 417, 68); 
     456                                        jTextAreaTalk.setBounds(43, 304, 417, 68); 
    450457                                        jTextAreaTalk.setLineWrap(true); 
    451458                                        jTextAreaTalk.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); 
     
    456463                                        jPanel1.add(btnTalk); 
    457464                                        btnTalk.setText("talk as Sarah"); 
    458                                         btnTalk.setBounds(514, 234, 123, 23); 
     465                                        btnTalk.setBounds(514, 288, 123, 23); 
    459466                                        btnTalk.addActionListener(this); 
    460467                                } 
     
    463470                                        jPanel1.add(btnSendText); 
    464471                                        btnSendText.setText("send as sms"); 
    465                                         btnSendText.setBounds(514, 263, 121, 23); 
     472                                        btnSendText.setBounds(514, 317, 121, 23); 
    466473                                        btnSendText.addActionListener(this); 
    467474                                } 
     
    469476                                        comboBoxReceiver = new JComboBox(); 
    470477                                        jPanel1.add(comboBoxReceiver); 
    471                                         comboBoxReceiver.setBounds(514, 287, 120, 23); 
     478                                        comboBoxReceiver.setBounds(514, 341, 120, 23); 
    472479                                } 
    473480                                { 
     
    475482                                        jPanel1.add(jLabel7); 
    476483                                        jLabel7.setText("to"); 
    477                                         jLabel7.setBounds(493, 292, 21, 14); 
     484                                        jLabel7.setBounds(493, 346, 21, 14); 
    478485                                        jLabel7.setForeground(new java.awt.Color(255,255,255)); 
    479486                                } 
     
    481488                                        comboBoxCommon = new JComboBox(); 
    482489                                        jPanel1.add(comboBoxCommon); 
    483                                         comboBoxCommon.setBounds(6, 374, 628, 23); 
     490                                        comboBoxCommon.setBounds(6, 428, 628, 23); 
    484491                                        comboBoxCommon.addActionListener(this); 
    485492                                } 
     
    488495                                        jPanel1.add(jLabel8); 
    489496                                        jLabel8.setText("type above or select a template below"); 
    490                                         jLabel8.setBounds(43, 324, 277, 14); 
     497                                        jLabel8.setBounds(43, 378, 277, 14); 
    491498                                        jLabel8.setForeground(new java.awt.Color(255,255,255)); 
    492499                                } 
     
    536543                                        jPanel1.add(jLabel6); 
    537544                                        jLabel6.setText("or"); 
    538                                         jLabel6.setBounds(493, 267, 21, 14); 
     545                                        jLabel6.setBounds(493, 321, 21, 14); 
    539546                                        jLabel6.setForeground(new java.awt.Color(255,255,255)); 
    540547                                } 
     
    544551                                        jLabel12.setText("or"); 
    545552                                        jLabel12.setForeground(new java.awt.Color(255,255,255)); 
    546                                         jLabel12.setBounds(493, 318, 21, 14); 
     553                                        jLabel12.setBounds(493, 372, 21, 14); 
    547554                                } 
    548555                                { 
     
    550557                                        jPanel1.add(btnNewTemplate); 
    551558                                        btnNewTemplate.setText("add template"); 
    552                                         btnNewTemplate.setBounds(514, 314, 117, 24); 
     559                                        btnNewTemplate.setBounds(514, 368, 117, 24); 
    553560                                        btnNewTemplate.addActionListener(this); 
    554561                                } 
     
    570577                                        lblLeft = new JLabel(); 
    571578                                        jPanel1.add(lblLeft); 
    572                                         lblLeft.setText("left:"); 
     579                                        lblLeft.setText("1"); 
    573580                                        lblLeft.setBounds(157, 224, 19, 16); 
    574581                                        lblLeft.setForeground(new java.awt.Color(255,255,255)); 
    575582                                } 
    576583                                { 
    577                                         txtFieldLeft = new JTextField(); 
    578                                         jPanel1.add(txtFieldLeft); 
    579                                         txtFieldLeft.setBounds(180, 218, 91, 28); 
    580                                 } 
    581                                 { 
    582                                         txtFieldRight = new JTextField(); 
    583                                         jPanel1.add(txtFieldRight); 
    584                                         txtFieldRight.setBounds(314, 218, 91, 28); 
     584                                        txtFieldChoice1 = new JTextField(); 
     585                                        jPanel1.add(txtFieldChoice1); 
     586                                        txtFieldChoice1.setBounds(180, 218, 91, 28); 
     587                                } 
     588                                { 
     589                                        txtFieldChoice2 = new JTextField(); 
     590                                        jPanel1.add(txtFieldChoice2); 
     591                                        txtFieldChoice2.setBounds(314, 218, 91, 28); 
    585592                                } 
    586593                                { 
    587594                                        lblRight = new JLabel(); 
    588595                                        jPanel1.add(lblRight); 
    589                                         lblRight.setText("right:"); 
     596                                        lblRight.setText("2"); 
    590597                                        lblRight.setForeground(new java.awt.Color(255,255,255)); 
    591598                                        lblRight.setBounds(280, 224, 28, 16); 
     
    634641                                        jSpinnerWhichTemplate = new JSpinner(); 
    635642                                        jPanel1.add(jSpinnerWhichTemplate); 
    636                                         jSpinnerWhichTemplate.setBounds(465, 341, 167, 28); 
     643                                        jSpinnerWhichTemplate.setBounds(516, 395, 115, 29); 
     644                                        jSpinnerWhichTemplate.getEditor().setPreferredSize(new java.awt.Dimension(147, 28)); 
    637645                                } 
    638646                                { 
     
    641649                                        jLabel15.setText("to"); 
    642650                                        jLabel15.setForeground(new java.awt.Color(255,255,255)); 
    643                                         jLabel15.setBounds(446, 349, 21, 14); 
     651                                        jLabel15.setBounds(493, 403, 21, 14); 
    644652                                } 
    645653                                { 
     
    647655                                        jPanel1.add(jLabel16); 
    648656                                        jLabel16.setText("Common Utterances:"); 
    649                                         jLabel16.setBounds(9, 354, 143, 16); 
     657                                        jLabel16.setBounds(9, 408, 143, 16); 
    650658                                        jLabel16.setFont(new java.awt.Font("SansSerif",1,12)); 
    651659                                        jLabel16.setForeground(new java.awt.Color(255,255,255)); 
     
    657665                                        jLabel17.setFont(new java.awt.Font("SansSerif",1,12)); 
    658666                                        jLabel17.setForeground(new java.awt.Color(255,255,255)); 
    659                                         jLabel17.setBounds(11, 400, 175, 16); 
     667                                        jLabel17.setBounds(11, 454, 175, 16); 
    660668                                } 
    661669                                { 
    662670                                        comboBoxLocations = new JComboBox(); 
    663671                                        jPanel1.add(comboBoxLocations); 
    664                                         comboBoxLocations.setBounds(6, 421, 628, 23); 
     672                                        comboBoxLocations.setBounds(6, 475, 628, 23); 
    665673                                        comboBoxLocations.addActionListener(this); 
    666674                                } 
     
    671679                                        jLabel18.setFont(new java.awt.Font("SansSerif",1,12)); 
    672680                                        jLabel18.setForeground(new java.awt.Color(255,255,255)); 
    673                                         jLabel18.setBounds(12, 450, 175, 16); 
     681                                        jLabel18.setBounds(12, 504, 175, 16); 
    674682                                } 
    675683                                { 
    676684                                        comboBoxSmallTalk = new JComboBox(); 
    677685                                        jPanel1.add(comboBoxSmallTalk); 
    678                                         comboBoxSmallTalk.setBounds(5, 472, 628, 23); 
     686                                        comboBoxSmallTalk.setBounds(5, 526, 628, 23); 
    679687                                        comboBoxSmallTalk.addActionListener(this); 
    680688                                } 
     
    685693                                        jLabel19.setFont(new java.awt.Font("SansSerif",1,12)); 
    686694                                        jLabel19.setForeground(new java.awt.Color(255,255,255)); 
    687                                         jLabel19.setBounds(11, 504, 175, 16); 
     695                                        jLabel19.setBounds(11, 558, 175, 16); 
    688696                                } 
    689697                                { 
    690698                                        comboBoxDontUnderstand = new JComboBox(); 
    691699                                        jPanel1.add(comboBoxDontUnderstand); 
    692                                         comboBoxDontUnderstand.setBounds(6, 525, 628, 23); 
     700                                        comboBoxDontUnderstand.setBounds(6, 579, 628, 23); 
    693701                                        comboBoxDontUnderstand.addActionListener(this); 
    694702                                } 
     
    699707                                        jLabel20.setFont(new java.awt.Font("SansSerif",1,12)); 
    700708                                        jLabel20.setForeground(new java.awt.Color(255,255,255)); 
    701                                         jLabel20.setBounds(11, 554, 175, 16); 
     709                                        jLabel20.setBounds(11, 608, 175, 16); 
    702710                                } 
    703711                                { 
    704712                                        comboBoxTask = new JComboBox(); 
    705713                                        jPanel1.add(comboBoxTask); 
    706                                         comboBoxTask.setBounds(7, 575, 628, 23); 
     714                                        comboBoxTask.setBounds(7, 629, 628, 23); 
    707715                                        comboBoxTask.addActionListener(this); 
    708716                                } 
     
    713721                                        btnSetGaze.setBounds(247, 191, 71, 23); 
    714722                                        btnSetGaze.addActionListener(this); 
     723                                } 
     724                                { 
     725                                        txtFieldChoice4 = new JTextField(); 
     726                                        jPanel1.add(txtFieldChoice4); 
     727                                        txtFieldChoice4.setBounds(314, 251, 91, 28); 
     728                                } 
     729                                { 
     730                                        jLabel21 = new JLabel(); 
     731                                        jPanel1.add(jLabel21); 
     732                                        jLabel21.setText("4"); 
     733                                        jLabel21.setForeground(new java.awt.Color(255,255,255)); 
     734                                        jLabel21.setBounds(280, 256, 28, 16); 
     735                                } 
     736                                { 
     737                                        txtFieldChoice3 = new JTextField(); 
     738                                        jPanel1.add(txtFieldChoice3); 
     739                                        txtFieldChoice3.setBounds(180, 251, 91, 28); 
     740                                } 
     741                                { 
     742                                        jLabel22 = new JLabel(); 
     743                                        jPanel1.add(jLabel22); 
     744                                        jLabel22.setText("3"); 
     745                                        jLabel22.setForeground(new java.awt.Color(255,255,255)); 
     746                                        jLabel22.setBounds(157, 257, 19, 16); 
     747                                } 
     748                                { 
     749                                        btnClearScreen = new JButton(); 
     750                                        jPanel1.add(btnClearScreen); 
     751                                        btnClearScreen.setText("clear screen"); 
     752                                        btnClearScreen.setBounds(417, 249, 97, 30); 
     753                                        btnClearScreen.addActionListener(this); 
     754                                } 
     755                                { 
     756                                        btnEmysVisible = new JButton(); 
     757                                        jPanel1.add(btnEmysVisible); 
     758                                        btnEmysVisible.setText("Emys Visible"); 
     759                                        btnEmysVisible.setBounds(520, 212, 111, 29); 
     760                                        btnEmysVisible.addActionListener(this); 
     761                                } 
     762                                { 
     763                                        btnEmysInvisible = new JButton(); 
     764                                        jPanel1.add(btnEmysInvisible); 
     765                                        btnEmysInvisible.setText("Emys Invisible"); 
     766                                        btnEmysInvisible.setBounds(520, 246, 111, 29); 
     767                                        btnEmysInvisible.addActionListener(this); 
    715768                                } 
    716769                        } 
     
    737790                        } 
    738791                        pack(); 
    739                         this.setSize(645, 680); 
     792                        this.setSize(645, 720); 
    740793                } catch (Exception e) { 
    741794                        e.printStackTrace(); 
     
    784837                else if (arg0.getSource() == btnShowChoice) 
    785838                { 
    786                         parameters.add(txtFieldLeft.getText()); 
    787                         parameters.add(txtFieldRight.getText());                         
     839                        String text2 = txtFieldChoice2.getText().trim(); 
     840                        String text3 = txtFieldChoice3.getText().trim(); 
     841                        String text4 = txtFieldChoice4.getText().trim(); 
     842                         
     843                        parameters.add(txtFieldChoice1.getText()); 
     844                        if (!text2.isEmpty()) 
     845                        { 
     846                                parameters.add(text2); 
     847                                if (!text3.isEmpty()) 
     848                                { 
     849                                        parameters.add(text3); 
     850                                        if (!text4.isEmpty()) parameters.add(text4); 
     851                                } 
     852                        } 
    788853                        MindAction mindAction = new MindAction("Sarah", "wozQuestion", parameters); 
    789854                        parentMindConnector.newAction(mindAction); 
    790855                }                
     856                else if (arg0.getSource() == btnClearScreen) 
     857                { 
     858                        MindAction mindAction = new MindAction("Sarah", "wozCancelQuestion", parameters); 
     859                        parentMindConnector.newAction(mindAction);                       
     860                } 
     861                else if (arg0.getSource() == btnEmysVisible) 
     862                { 
     863                        MindAction mindAction = new MindAction("Sarah", "wozSetVisible", parameters); 
     864                        parentMindConnector.newAction(mindAction);                       
     865                } 
     866                else if (arg0.getSource() == btnEmysInvisible) 
     867                { 
     868                        MindAction mindAction = new MindAction("Sarah", "wozSetInvisible", parameters); 
     869                        parentMindConnector.newAction(mindAction);                       
     870                } 
    791871                else if ((arg0.getSource() == comboBoxEmotion) || (arg0.getSource() == btnSetEmotion)) 
    792872                { 
Note: See TracChangeset for help on using the changeset viewer.