Browse Source

add database for robot and trajectory information

master
philipp schoenberger 10 years ago
parent
commit
52adf91166
  1. 9
      lwrserv/Singleton.h
  2. 58
      lwrserv/SvrData.cpp
  3. 70
      lwrserv/SvrData.h

9
lwrserv/Singleton.h

@ -0,0 +1,9 @@
class Singleton
{
public:
Singleton* getInstance(void);
Singleton() {};
~Singleton() {};
private:
static Singleton* single;
};

58
lwrserv/SvrData.cpp

@ -0,0 +1,58 @@
#include "SvrData.h"
bool SvrData::instanceFlag = false;
SvrData* SvrData::single = 0;
SvrData::SvrData(void)
{
velocity = 20;
accelaration = 10;
robot.joints = LBR_MNJ;
robot.max.velocity = new float[robot.joints];
robot.max.accelaration = new float[robot.joints];
robot.max.torque = new float[robot.joints];
robot.max.range = new float[robot.joints];
double maxVelJnt[] = {110.0,110.0,128.0,128.0,204.0,184.0,184.0};
double maxAccJnt[] = {1.0,1.0,1.0,1.0,2.0,1.0,1.0};
double maxTrqJnt[] = {176.0,176.0,100.0,100.0,100.0,38.0,38.0};
double maxRangeJnt[] = {170.0,120.0,170.0,120.0,170.0,120.0,170.0};
for (int i = 0; i < robot.joints; ++i)
{
robot.max.velocity[i] = maxVelJnt[i];
robot.max.accelaration[i] = maxAccJnt[i];
robot.max.torque[i] = maxTrqJnt[i];
robot.max.range[i] = maxRangeJnt[i];
}
}
SvrData::~SvrData()
{
if (robot.max.velocity != 0)
delete[] robot.max.velocity;
if (robot.max.accelaration != 0)
delete[] robot.max.accelaration;
if (robot.max.torque != 0)
delete[] robot.max.torque;
if (robot.max.velocity != 0)
delete[] robot.max.range;
robot.max.velocity = 0;
robot.max.accelaration = 0;
robot.max.torque = 0;
robot.max.range = 0;
}
SvrData* SvrData::getInstance ()
{
if (instanceFlag)
return single;
single = new SvrData();
instanceFlag = true;
return single;
}

70
lwrserv/SvrData.h

@ -0,0 +1,70 @@
#ifndef _SVRDATA_H_
#define _SVRDATA_H_
#include <new>
#include <iostream>
#include <pthread.h>
#include "Singleton.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;
float velocity;
float accelaration;
struct {
struct {
float* velocity;
float* accelaration;
float* torque;
float* range;
} max;
unsigned int joints;
} robot;
pthread_mutex_t mutexsum;
/// private constructor, because the database is a singleton
SvrData();
static bool instanceFlag;
static SvrData* single;
public:
~SvrData(void);
SvrData* getInstance();
float getMaxTorque(unsigned int pos);
int getMaxTorque(float* data, size_t size);
float getMaxAccelaration(unsigned int pos);
int getMaxAccelaration(float* data, size_t size);
float getMaxRange(unsigned int pos);
int getMaxRange(float* data, size_t size);
unsigned int getJoints();
float getTrajectoryVelocity();
int setTrajectoryVelocity(float);
float getTrajectoryAccelaration();
float setTrajectoryAccelaration(float);
};
#endif
Loading…
Cancel
Save