24 using namespace yarp::os;
26 using namespace yarp::sig;
39 printf(
"Opening Fake Motor Device Server ...\n");
41 string local=config.check(
"local",Value(
"/fakeyServer")).asString();
42 int Ts=config.check(
"Ts",Value(10)).asInt32();
52 lim(0,0)=-180.0; lim(0,1)=180.0;
53 lim(1,0)=-90.0; lim(1,1)=90.0;
54 lim(2,0)=-45.0; lim(2,1)=45.0;
57 for (
int i=0; i<lim.rows(); i++)
58 q0.push_back((lim(i,0)+lim(i,1))/2.0);
66 setPeriod((
double)Ts/1000.0);
71 printf(
"Fake Motor Device Server successfully open\n");
78 printf(
"Closing Fake Motor Device Server ...\n");
84 PeriodicThread::stop();
103 printf(
"Fake Motor Device Server successfully closed\n");
110 lock_guard<mutex> lg(
mtx);
113 if ((
size_t)
cmd->size()>=
vel.length())
114 for (
size_t i=0; i<
vel.length(); i++)
115 vel[i]=
cmd->get(i).asFloat64();
126 cmd.read(connection);
130 int codeIF=
cmd.get(0).asVocab32();
131 int codeMethod=
cmd.get(1).asVocab32();
133 if (codeIF==Vocab32::encode(
"lim"))
135 if (codeMethod==Vocab32::encode(
"get"))
137 int axis=
cmd.get(2).asInt32();
141 reply.addVocab32(
"ack");
142 reply.addFloat64(
min);
143 reply.addFloat64(
max);
147 else if (codeIF==Vocab32::encode(
"enc"))
149 if (codeMethod==Vocab32::encode(
"axes"))
154 reply.addVocab32(
"ack");
159 else if (codeIF==Vocab32::encode(
"vel"))
161 if (codeMethod==Vocab32::encode(
"move"))
163 int axis=
cmd.get(2).asInt32();
164 double sp=
cmd.get(3).asFloat64();
166 reply.addVocab32(
"ack");
168 else if (codeMethod==Vocab32::encode(
"acc"))
170 int axis=
cmd.get(2).asInt32();
171 double acc=
cmd.get(3).asFloat64();
173 reply.addVocab32(
"ack");
175 else if (codeMethod==Vocab32::encode(
"stop"))
177 int axis=
cmd.get(2).asInt32();
179 reply.addVocab32(
"ack");
184 reply.addVocab32(
"nack");
188 if (ConnectionWriter *returnToSender=connection.getWriter())
189 reply.write(*returnToSender);
203 *
min=lim(axis,0); *
max=lim(axis,1);
231 if ((
size_t)j<
vel.length())
yarp::os::BufferedPort< yarp::sig::Vector > statePort
yarp::os::BufferedPort< yarp::os::Bottle > cmdPort
bool getLimits(int axis, double *min, double *max)
bool read(yarp::os::ConnectionReader &connection)
This method decodes the requests forwarded by the client and responds with corresponding replies.
bool velocityMove(int j, double sp)
iCub::ctrl::Integrator * motors
bool open(yarp::os::Searchable &config)
bool setRefAcceleration(int j, double acc)
A class for defining a saturated integrator based on Tustin formula: .
const yarp::sig::Vector & integrate(const yarp::sig::Vector &x)
Executes one-step integration of input vector.
const yarp::sig::Matrix & getLim()
Returns the constraints matrix.
const yarp::sig::Vector & get() const
Returns the current output vector.