Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F87025010
OncillaL1L2.cpp
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
Thu, Oct 10, 01:58
Size
2 KB
Mime Type
text/x-c
Expires
Sat, Oct 12, 01:58 (2 d)
Engine
blob
Format
Raw Data
Handle
21524578
Attached To
R6622 liboncilla
OncillaL1L2.cpp
View Options
#include "OncillaL1L2.h"
#include <stdexcept>
using namespace std;
namespace rci{
namespace oncilla{
OncillaL1L2::OncillaL1L2(OncillaSynchronizer &s, const std::string &name)
: ResourceNode(name)
, Controlled()
, Sensing()
, PositionControlled()
, PositionSensing()
, TorqueControlled()
, ImpedanceControlled()
, synchronizer(s) {
/// \todo add default value as setting
this->_lastCommandedPosition = JointAngles::create(1,0.0);
this->_latestJointPosition = JointAngles::create(2,0.0);
}
bool OncillaL1L2::isConverged() const {
throw std::runtime_error("Not yet implemented.");
return false;
}
bool OncillaL1L2::setJointPosition(JointAnglesPtr position) {
// Successfull
this->_lastCommandedPosition = position;
return true;
}
JointAnglesPtr OncillaL1L2::getJointPosition() const {
return this->_latestJointPosition;
}
bool OncillaL1L2::setJointVelocity(JointVelocitiesPtr ) {
throw std::runtime_error("Not yet implemented.");
}
bool OncillaL1L2::setJointTorque(JointTorquesPtr ) {
throw std::runtime_error("Not yet implemented.");
}
bool OncillaL1L2::setJointImpedance(JointImpedancePtr ) {
if (this->synchronizer.tooBusy()) {
throw std::runtime_error(
"Synchronizer has to be switched off to change JointImpedance.");
} else {
throw std::runtime_error("Not yet implemented.");
}
}
JointAnglesPtr OncillaL1L2::getLastPositionCommand() const {
if (this->_lastCommandedPosition) {
return this->_lastCommandedPosition;
}
// If we don`t have a command yet, we return the latest sensor value
if (this->_latestJointPosition) {
// TODO: Log
return this->_latestJointPosition;
}
throw runtime_error("No position command received yet.");
}
OncillaL1L2::~OncillaL1L2() {
}
std::string OncillaL1L2::print() const {
ostringstream outstream(ostringstream::out);
outstream.precision(3); // Precision when printing double values
outstream << "<Oncilla Hip>" << endl;
return outstream.str();
}
void OncillaL1L2::setRawLocalCommand(double value){
this->_lastCommandedPosition->setValue(0,value);
}
double OncillaL1L2::getRawLocalCommand() const{
return this->_lastCommandedPosition->asDouble(0);
}
double OncillaL1L2::getRawLocalMotorAxisPosition() const{
return this->_latestJointPosition->asDouble(MotorAxisIndex);
}
double OncillaL1L2::getRawLocalMagneticEncoderPosition() const{
return this->_latestJointPosition->asDouble(MagneticEncoderIndex);
}
void OncillaL1L2::updateRawLocalMotorAxisPosition(double value){
this->_latestJointPosition->setValue(MotorAxisIndex,value);
}
void OncillaL1L2::updateRawLocalMagneticEncoderPosition(double value){
this->_latestJointPosition->setValue(MagneticEncoderIndex,value);
}
}
}
Event Timeline
Log In to Comment