Newer
Older
/*
* Copyright 2010,
* François Bleibel,
* Olivier Stasse,
*
* CNRS/AIST
*
*/
#ifndef __SOT_Control_PD_HH__
#define __SOT_Control_PD_HH__
/* --------------------------------------------------------------------- */
/* --- INCLUDE --------------------------------------------------------- */
/* --------------------------------------------------------------------- */
/* Matrix */
Rohan Budhiraja
committed
#include <dynamic-graph/linear-algebra.h>
/* SOT */
#include <dynamic-graph/entity.h>
#include <dynamic-graph/signal-ptr.h>
#include <dynamic-graph/signal-time-dependent.h>
/* --------------------------------------------------------------------- */
/* --- API ------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
#if defined(WIN32)
#if defined(control_pd_EXPORTS)
#define ControlPD_EXPORT __declspec(dllexport)
#else
#define ControlPD_EXPORT __declspec(dllimport)
#endif
namespace dynamicgraph {
/* --------------------------------------------------------------------- */
/* --- CLASS ----------------------------------------------------------- */
/* --------------------------------------------------------------------- */
static const std::string CLASS_NAME;
virtual void display(std::ostream &os) const;
virtual const std::string &getClassName(void) const { return CLASS_NAME; }
/* Parameters of the torque-control function:
* tau = kp * (qd-q) + kd* (dqd-dq) */
double TimeStep;
SignalPtr<dynamicgraph::Vector, int> KpSIN;
SignalPtr<dynamicgraph::Vector, int> KdSIN;
SignalPtr<dynamicgraph::Vector, int> positionSIN;
SignalPtr<dynamicgraph::Vector, int> desiredpositionSIN;
SignalPtr<dynamicgraph::Vector, int> velocitySIN;
SignalPtr<dynamicgraph::Vector, int> desiredvelocitySIN;
SignalTimeDependent<dynamicgraph::Vector, int> controlSOUT;
SignalTimeDependent<dynamicgraph::Vector, int> positionErrorSOUT;
SignalTimeDependent<dynamicgraph::Vector, int> velocityErrorSOUT;
dynamicgraph::Vector &computeControl(dynamicgraph::Vector &tau, int t);
dynamicgraph::Vector position_error_;
dynamicgraph::Vector velocity_error_;
dynamicgraph::Vector &getPositionError(dynamicgraph::Vector &position_error,
int t);
dynamicgraph::Vector &getVelocityError(dynamicgraph::Vector &velocity_error,
int t);