source: scenarios/InTheWild/cmionInTheWild/src/cmion/inTheWild/competencies/KinectTrackerConnector.java @ 1530

Revision 1530, 2.0 KB checked in by michael.kriegel, 7 years ago (diff)

updated in the wild scenario code

  • Property svn:mime-type set to text/plain
Line 
1package cmion.inTheWild.competencies;
2
3import java.util.HashMap;
4import yarp.Bottle;
5import cmion.addOns.samgar.SamgarCompetency;
6import cmion.architecture.IArchitecture;
7import cmion.inTheWild.datastructures.TrackingInfo;
8import cmion.level3.EventRemoteAction;
9import cmion.level3.MindAction;
10
11/** background competency that connects to the kinect samgar module and reads user and hand
12 *  positions */
13public class KinectTrackerConnector extends SamgarCompetency {
14               
15        private long lastTimeClose = 0;
16       
17        public KinectTrackerConnector(IArchitecture architecture) {
18                super(architecture);
19       
20                //name and type of the competence
21                this.competencyName ="Kinect";
22                this.competencyType ="Kinect";
23        }       
24       
25        @Override
26        public void registerHandlers()
27        {
28                super.registerHandlers();
29        }
30
31       
32        @Override
33        public synchronized void onRead(Bottle bottleIn)
34        {
35                if (bottleIn.size()>0)
36                {
37                        if (bottleIn.get(0).asInt()==0) // user tracking information
38                        {
39                                // read the xyz for user
40                                double x = bottleIn.get(1).asDouble();
41                                double y = bottleIn.get(2).asDouble();
42                                double z = bottleIn.get(3).asDouble();
43                                TrackingInfo userInfo = new TrackingInfo(x,y,z);
44                                if (z<1200)
45                                {
46                                        if (timeElapsed()>7000)
47                                        {
48                                                lastTimeClose = System.currentTimeMillis();
49                                                MindAction ma = new MindAction("Anonymous","comeClose",null);
50                                                this.raise(new EventRemoteAction(ma));
51                                        }
52                                }                                       
53                                architecture.getBlackBoard().requestSetProperty("UserTracking", userInfo);                                     
54                        }
55                        else if (bottleIn.get(0).asInt()==1) // user has disappeared
56                        {
57                        }
58
59                }
60       
61        }
62       
63        private synchronized long timeElapsed()
64        {
65                return System.currentTimeMillis() - lastTimeClose;
66        }
67       
68
69        @Override
70        protected boolean competencyCode(HashMap<String, String> parameters)
71        {
72                // we just sleep in the main thread, we react on samgar callbacks instead
73                while(true)
74                {
75                        try {
76                                Thread.sleep(100000);
77                        } catch (InterruptedException e) {}
78                }
79        }
80
81        @Override
82        public boolean runsInBackground() {
83                return true;
84        }
85
86}
Note: See TracBrowser for help on using the repository browser.