Page MenuHomec4science

OncillaL2.h
No OneTemporary

File Metadata

Created
Wed, Nov 6, 15:51

OncillaL2.h

#pragma once
#include <iostream>
#include <tr1/memory>
#include <rci/ResourceNode.h>
#include <rci/Controlled.h>
#include <rci/Configurable.h>
#include <rci/Sensing.h>
#include <rci/dto/JointAngles.h>
#include "OncillaSynchronizer.h"
namespace rci {
namespace oncilla {
class OncillaL2;
typedef std::tr1::shared_ptr<OncillaL2> OncillaL2Ptr;
/**
* Node class, representing the knee node of the quadruped robot.
* @todo In case of simulation, this node can also sense the power consumption.
*/
class OncillaL2: public rci::ResourceNode,
public rci::Controlled,
public rci::Sensing,
public rci::PositionControlled,
public rci::PositionSensing,
public rci::VelocityControlled,
public rci::TorqueControlled,
public rci::ImpedanceControlled {
public:
const static unsigned int MotorAxisIndex = 0;
const static unsigned int MagneticEncoderIndex = 1;
OncillaL2(OncillaSynchronizer &s, const std::string &name = "Oncilla Knee");
virtual ~OncillaL2();
/**
* Returns, if controller is converged.
* @return True, if controller is converged after last command.
*/
bool isConverged() const;
/**
* Commanding a joint position.
* @param position Position command
* @return Return, if successfull. (e.g. not exceeding joint limits)
* @todo Check for correct control mode
*/
bool setJointPosition(JointAnglesPtr position);
void setRawLocalCommand(double value);
double getRawLocalCommand() const ;
/**
* Returns current joint position.
* @return Current joint position
*/
virtual JointAnglesPtr getJointPosition() const;
double getRawLocalMotorAxisPosition() const;
double getRawLocalMagneticEncoderPosition() const;
void updateRawLocalMotorAxisPosition(double value);
void updateRawLocalMagneticEncoderPosition(double value);
/**
* Commanding a joint velocity.
* @param position Velocity command
* @return Return, if successfull. (e.g. not exceeding joint limits)
* @todo Check for correct control mode
*/
bool setJointVelocity(JointVelocitiesPtr vel);
/**
* Commanding a joint velocity.
* @param position Velocity command
* @return Return, if successfull. (e.g. not exceeding joint limits)
* @todo Check for correct control mode
*/
bool setJointImpedance(JointImpedancePtr imped);
/**
* Commanding a joint torque.
* @param position Torque command
* @return Return, if successfull. (e.g. not exceeding joint limits)
* @todo Check for correct control mode
*/
virtual bool setJointTorque(rci::JointTorquesPtr torques);
/**
* Returns latest position command. Note, that this is the latest valid
* commanded position. If the position command exceeds limits and is
* therefore rejected, it ..
*/
virtual JointAnglesPtr getLastPositionCommand() const;
/**
* Print
*/
std::string print() const;
private:
OncillaSynchronizer &synchronizer;
};
}
}

Event Timeline