Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F92117254
OncillaL01.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Nov 17, 12:32
Size
3 KB
Mime Type
text/x-c++
Expires
Tue, Nov 19, 12:32 (2 d)
Engine
blob
Format
Raw Data
Handle
22378192
Attached To
R6622 liboncilla
OncillaL01.h
View Options
#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 OncillaL0;
typedef std::tr1::shared_ptr<OncillaL0> OncillaL0Ptr;
/**
* Node class, representing the hip node of the quadruped robot.
* @todo In case of simulation, this node can also sense the power consumption.
*/
class OncillaL0: public rci::ResourceNode,
public rci::Controlled,
public rci::PositionControlled {
public:
/**
* Special constructor to also link to webots
*/
OncillaL0(const std::string &name = "Oncilla Hip");
virtual ~OncillaL0();
/**
* 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);
/**
* 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;
};
class OncillaL1;
typedef std::tr1::shared_ptr<OncillaL1> OncillaL1Ptr;
/**
* Node class, representing the hip node of the quadruped robot.
*
* @todo In case of simulation, this node can also sense the power consumption.
*/
class OncillaL1: public rci::ResourceNode,
public rci::Controlled,
public rci::Sensing,
public rci::PositionControlled,
public rci::PositionSensing, // Two encoder values
public rci::VelocityControlled,
public rci::TorqueControlled,
public rci::ImpedanceControlled {
public:
/**
* Special constructor to also link to webots
*/
OncillaL1(OncillaSynchronizer &s, const std::string &name = "Oncilla Hip");
virtual ~OncillaL1();
/**
* 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);
/**
* Returns current joint position.
* @return Current joint position
*/
virtual JointAnglesPtr getJointPosition() const;
/**
* Commanding a joint velocity.
* @param position Position command
* @return Return, if successfull. (e.g. not exceeding joint limits)
* @todo Check for correct control mode
*/
virtual bool setJointVelocity(rci::JointVelocitiesPtr vel);
/**
* Returns current joint torque.
* @return Current joint torque
*/
virtual bool setJointTorque(JointTorquesPtr torque);
/**
* Returns current joint torque.
* @return Current joint torque
*/
virtual bool setJointImpedance(JointImpedancePtr imped);
/**
* 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:
/**
* Reference to OncillaSynchronizer
* @todo This is a dangerous reference which will become invalid as soon as
* OncillaSynchronizer gets deleted outside.
*/
OncillaSynchronizer &synchronizer;
};
}
}
Event Timeline
Log In to Comment