24 #include <yarp/os/Time.h>
25 #include <yarp/os/RFModule.h>
26 #include <yarp/os/RpcServer.h>
27 #include <yarp/os/RpcClient.h>
28 #include <yarp/os/BufferedPort.h>
29 #include <yarp/os/Port.h>
30 #include <yarp/sig/Image.h>
31 #include <yarp/sig/Vector.h>
33 #include <opencv2/opencv.hpp>
35 #include "iCub/utils.h"
52 class Manager :
public yarp::os::RFModule
59 yarp::os::Port rpcHuman;
60 yarp::os::RpcClient rpcMotorAre;
61 yarp::os::RpcClient rpcMotorKarma;
62 yarp::os::RpcClient iolStateMachine;
63 yarp::os::RpcClient rpcMIL;
64 yarp::os::RpcClient rpcKarmaLearn;
65 yarp::os::RpcClient rpcReconstruct;
66 yarp::os::RpcClient rpcGraspEstimate;
67 yarp::os::RpcClient rpcOPC;
69 ParticleFilter particleFilter;
70 SegmentationPoint segmentPoint;
71 PointedLocation pointedLoc;
73 yarp::os::BufferedPort<yarp::os::Bottle> blobExtractor;
74 yarp::os::BufferedPort<yarp::os::Bottle> particleTracks;
76 std::mutex mutexResources;
78 cv::Point pointLocation;
80 yarp::os::Bottle lastBlobs;
81 yarp::os::Bottle lastTool;
82 yarp::sig::Vector objectPos;
83 yarp::sig::Vector toolSmall, toolBig;
87 blobsData *blobsDetails;
89 std::map<int, double> randActions;
91 yarp::os::Bottle getBlobs();
92 cv::Point getBlobCOG(
const yarp::os::Bottle &blobs,
const int i);
93 double getBlobLenght(
const yarp::os::Bottle &blobs,
const int i);
95 bool get3DPosition(
const cv::Point &point, yarp::sig::Vector &x);
96 yarp::os::Bottle findClosestBlob(
const yarp::os::Bottle &blobs,
const cv::Point &loc);
97 int processHumanCmd(
const yarp::os::Bottle &cmd, yarp::os::Bottle &b);
98 int executeOnLoc(
bool shouldTrain);
99 int executeToolOnLoc();
100 yarp::os::Bottle executeToolLearning();
101 int executeToolSearchOnLoc(
const std::string &objName );
102 yarp::os::Bottle executeBlobRecog(
const std::string &objName );
104 bool executeCloseHand(
int ARM);
105 bool executeDropAway(
int ARM);
106 bool executeGiveAction(
int ARM);
107 bool executeSpeech(
const std::string &speech );
108 double executeVirtualDraw(blobsData &blobsDetails);
109 double executeToolDrawNear(blobsData &blobsDetails);
110 int executeToolAttach(
const yarp::sig::Vector &tool);
111 yarp::os::Bottle executeKarmaOptimize(
const yarp::sig::Vector &tool,
const std::string &objName);
112 yarp::os::Bottle classifyThem();
114 yarp::os::Bottle findBlobLoc();
115 yarp::os::Bottle blobLoc;
116 yarp::os::Bottle blobList;
118 bool executePCLGrasp(
const std::string &objName );
119 double latchTimer, idleTmo;
121 void takeMotionARE();
122 void segmentAndTrack(
int x,
int y );
124 yarp::os::Bottle getOffset(yarp::os::Bottle &closestBlob,
double actionOrient, yarp::sig::Vector &initPos);
126 void getPraticleTracks();
128 void goHomeArmsHead();
129 double wrapAng (
const double ang);
131 yarp::os::Bottle classify(
const yarp::os::Bottle &blobs,
int index);
132 yarp::os::Bottle getType(
const yarp::os::Bottle *mils,
int index);
135 bool configure(yarp::os::ResourceFinder &rf);
136 bool interruptModule();