You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
2.4 KiB

#ifndef _SVRDATA_H_
#define _SVRDATA_H_
#include <new>
#include <iostream>
#include <pthread.h>
#include "Singleton.h"
#include "vec.h"
#include "friComm.h"
class SvrData: public Singleton
{
private:
struct {
float jointPos[LBR_MNJ];
float cartPos[FRI_CART_FRM_DIM];
float jacobian[FRI_CART_VEC * LBR_MNJ];
float forceAndTorque[FRI_CART_VEC];
} messured;
struct {
float jointPos[LBR_MNJ];
float cartPos[FRI_CART_FRM_DIM];
float pose[3][4]; //TODO what is this for
} commanded;
struct {
struct {
float velocity[LBR_MNJ];
float accelaration[LBR_MNJ];
float torque[LBR_MNJ];
float range[LBR_MNJ];
} max;
unsigned int joints;
float currentVelocity;
float currentAcceleration;
} robot;
pthread_mutex_t dataLock;
/// private constructor, because the database is a singleton
SvrData();
static bool instanceFlag;
static SvrData* single;
public:
~SvrData(void);
static SvrData* getInstance();
void lock();
void unlock();
int getMessuredJointPos(float* data, size_t size);
Vec<float,LBR_MNJ> getMessuredJointPos();
int getMessuredCartPos (float* data, size_t size);
Mat<float,LBR_MNJ> getMessuredCartPos();
int getMessuredJacobian(float* data, size_t size);
int getMessuredForceTorque(float* data, size_t size);
Vec<float,LBR_MNJ> getMessuredForceTorque();
int getCommandedJointPos(float* data, size_t size);
Vec<float,LBR_MNJ> getCommandedJointPos();
int getCommandedCartPos (float* data, size_t size);
Mat<float,LBR_MNJ> getCommandedCartPos();
float getMaxTorque(unsigned int pos);
int getMaxTorque(float* data, size_t size);
Vec<float,LBR_MNJ> getMaxTorque();
float getMaxVelocity(unsigned int pos);
int getMaxVelocity(float* data, size_t size);
Vec<float,LBR_MNJ> getMaxVelocity();
float getMaxAcceleration(unsigned int pos);
int getMaxAcceleration(float* data, size_t size);
Vec<float,LBR_MNJ> getMaxAcceleration();
float getMaxRange(unsigned int pos);
int getMaxRange(float* data, size_t size);
Vec<float,LBR_MNJ> getMaxRange();
float getRobotVelocity();
int setRobotVelocity(float newVelocity);
float getRobotAcceleration();
int setRobotAcceleration(float newVelocity);
unsigned int getJoints();
};
#endif