kinematics-dynamics
Loading...
Searching...
No Matches
CartesianControlClient.hpp
1// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
2
3#ifndef __CARTESIAN_CONTROL_CLIENT_HPP__
4#define __CARTESIAN_CONTROL_CLIENT_HPP__
5
6#include <mutex>
7#include <vector>
8
9#include <yarp/os/Bottle.h>
10#include <yarp/os/BufferedPort.h>
11#include <yarp/os/PortReaderBuffer.h>
12#include <yarp/os/RpcClient.h>
13
14#include <yarp/dev/Drivers.h>
15
16#include "ICartesianControl.h"
17#include "CartesianControlClient_ParamsParser.h"
18
30class FkStreamResponder : public yarp::os::TypedReaderCallback<yarp::os::Bottle>
31{
32public:
34 void onRead(yarp::os::Bottle& b) override;
35 bool getLastStatData(std::vector<double> &x, int *state, double * timestamp, double timeout);
36
37private:
38 double localArrivalTime;
39 int state;
40 double timestamp;
41 std::vector<double> x;
42 mutable std::mutex mtx;
43};
44
49class CartesianControlClient : public yarp::dev::DeviceDriver,
52{
53public:
54 // -- ICartesianControl declarations. Implementation in ICartesianControlImpl.cpp--
55 bool stat(std::vector<double> &x, int * state = nullptr, double * timestamp = nullptr) override;
56 bool inv(const std::vector<double> &xd, std::vector<double> &q) override;
57 bool movj(const std::vector<double> &xd) override;
58 bool relj(const std::vector<double> &xd) override;
59 bool movl(const std::vector<double> &xd) override;
60 bool movv(const std::vector<double> &xdotd) override;
61 bool gcmp() override;
62 bool forc(const std::vector<double> &fd) override;
63 bool stopControl() override;
64 bool wait(double timeout) override;
65 bool tool(const std::vector<double> &x) override;
66 bool act(int command) override;
67 void pose(const std::vector<double> &x) override;
68 void twist(const std::vector<double> &xdot) override;
69 void wrench(const std::vector<double> &w) override;
70 bool setParameter(int vocab, double value) override;
71 bool getParameter(int vocab, double * value) override;
72 bool setParameters(const std::map<int, double> & params) override;
73 bool getParameters(std::map<int, double> & params) override;
74
75 // -------- DeviceDriver declarations. Implementation in IDeviceImpl.cpp --------
76 bool open(yarp::os::Searchable& config) override;
77 bool close() override;
78
79private:
80 bool handleRpcRunnableCmd(int vocab);
81 bool handleRpcConsumerCmd(int vocab, const std::vector<double>& in);
82 bool handleRpcFunctionCmd(int vocab, const std::vector<double>& in, std::vector<double>& out);
83
84 void handleStreamingConsumerCmd(int vocab, const std::vector<double>& in);
85 void handleStreamingBiConsumerCmd(int vocab, const std::vector<double>& in1, double in2);
86
87 yarp::os::RpcClient rpcClient;
88 yarp::os::BufferedPort<yarp::os::Bottle> fkInPort, commandPort;
89
90 FkStreamResponder fkStreamResponder;
91};
92
93#endif // __CARTESIAN_CONTROL_CLIENT_HPP__
Contains roboticslab::ICartesianControl and related vocabs.
Definition CartesianControlClient_ParamsParser.h:44
The CartesianControlClient class implements ICartesianControl client side.
Definition CartesianControlClient.hpp:52
bool stopControl() override
Stop control.
Definition ICartesianControlImpl.cpp:237
bool forc(const std::vector< double > &fd) override
Force control.
Definition ICartesianControlImpl.cpp:230
bool tool(const std::vector< double > &x) override
Change tool.
Definition ICartesianControlImpl.cpp:258
void pose(const std::vector< double > &x) override
Achieve pose.
Definition ICartesianControlImpl.cpp:279
bool movl(const std::vector< double > &xd) override
Linear move to target position.
Definition ICartesianControlImpl.cpp:209
bool inv(const std::vector< double > &xd, std::vector< double > &q) override
Inverse kinematics.
Definition ICartesianControlImpl.cpp:188
bool stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) override
Current state and position.
Definition ICartesianControlImpl.cpp:141
void twist(const std::vector< double > &xdot) override
Instantaneous velocity steps.
Definition ICartesianControlImpl.cpp:286
bool gcmp() override
Gravity compensation.
Definition ICartesianControlImpl.cpp:223
bool setParameter(int vocab, double value) override
Set a configuration parameter.
Definition ICartesianControlImpl.cpp:300
bool relj(const std::vector< double > &xd) override
Move in joint space, relative coordinates.
Definition ICartesianControlImpl.cpp:202
void wrench(const std::vector< double > &w) override
Exert force.
Definition ICartesianControlImpl.cpp:293
bool getParameter(int vocab, double *value) override
Retrieve a configuration parameter.
Definition ICartesianControlImpl.cpp:315
bool movv(const std::vector< double > &xdotd) override
Linear move with given velocity.
Definition ICartesianControlImpl.cpp:216
bool movj(const std::vector< double > &xd) override
Move in joint space, absolute coordinates.
Definition ICartesianControlImpl.cpp:195
bool setParameters(const std::map< int, double > &params) override
Set multiple configuration parameters.
Definition ICartesianControlImpl.cpp:336
bool getParameters(std::map< int, double > &params) override
Retrieve multiple configuration parameters.
Definition ICartesianControlImpl.cpp:357
bool act(int command) override
Actuate tool.
Definition ICartesianControlImpl.cpp:265
bool wait(double timeout) override
Wait until completion.
Definition ICartesianControlImpl.cpp:244
Responds to streaming FK messages.
Definition CartesianControlClient.hpp:31
Abstract base class for a cartesian controller.
Definition ICartesianControl.h:145