using namespace std;
using namespace OpenRAVE;
namespace cppexamples {
{
public:
{
public:
}
vector<dReal> pgains,igains;
};
{
public:
PIDXMLReader(boost::shared_ptr<XMLData> piddata,
const AttributesList& atts) {
_piddata = piddata;
if( !_piddata )
_piddata.reset(new XMLData());
RAVELOG_INFO(
"the attributes piddata is created with are:\n");
for(AttributesList::const_iterator itatt = atts.begin(); itatt != atts.end(); ++itatt)
RAVELOG_INFO(
"%s=%s\n",itatt->first.c_str(),itatt->second.c_str());
}
return _piddata;
}
virtual ProcessElement startElement(
const std::string& name,
const AttributesList& atts) {
_ss.str("");
return (name == "pgains" || name=="igains") ? PE_Support : PE_Pass;
}
virtual bool endElement(const std::string& name)
{
if( name == "piddata" )
return true;
else if( name == "pgains" )
_piddata->pgains = vector<dReal>((istream_iterator<dReal>(_ss)), istream_iterator<dReal>());
else if( name == "igains" )
_piddata->igains = vector<dReal>((istream_iterator<dReal>(_ss)), istream_iterator<dReal>());
else
return false;
}
virtual void characters(const std::string& ch)
{
_ss.clear();
_ss << ch;
}
protected:
boost::shared_ptr<XMLData> _piddata;
stringstream _ss;
};
{
}
{
}
virtual ~CustomController() {
}
virtual bool Init(
RobotBasePtr robot,
const std::vector<int>& dofindices,
int nControlTransformation)
{
_probot = robot;
_dofindices = dofindices;
_nControlTransformation = nControlTransformation;
boost::shared_ptr<XMLData> piddata = boost::dynamic_pointer_cast<XMLData>(GetReadableInterface("piddata"));
if( !!piddata ) {
stringstream ss;
ss << "piddata from custom XML reader is" << endl << "pgains: ";
for(vector<dReal>::iterator it = piddata->pgains.begin(); it != piddata->pgains.end(); ++it)
ss << *it << " ";
ss << endl << "igains: ";
for(vector<dReal>::iterator it = piddata->igains.begin(); it != piddata->igains.end(); ++it)
ss << *it << " ";
ss << endl;
}
else
return true;
}
virtual const std::vector<int>& GetControlDOFIndices() const {
return _dofindices;
}
virtual int IsControlTransformation() const {
return _nControlTransformation;
}
virtual void Reset(int options) {
}
return false;
}
return false;
}
virtual void SimulationStep(
dReal fTimeElapsed) {
}
virtual bool IsDone() {
return false;
}
virtual dReal GetTime()
const {
return 0;
}
return _probot;
}
protected:
std::vector<int> _dofindices;
int _nControlTransformation;
};
}
{
}
switch(type) {
case PT_Controller:
if( interfacename == "customcontroller")
break;
default:
break;
}
}
{
}
{
}