6 #include <dynamic-graph/factory.h> 
    8 #include <sot/core/debug.hh> 
   11 #include <tsid/utils/statistics.hpp> 
   12 #include <tsid/utils/stop-watch.hpp> 
   19 using namespace dynamicgraph::command;
 
   34     : Entity(name), CONSTRUCT_SIGNAL_OUT(trigger, int, sotNOSIGNAL) {
 
   35   Entity::signalRegistration(m_triggerSOUT);
 
   38   addCommand(
"addOutputSignal",
 
   42                      "Add a new output signal",
 
   43                      "Name of the text file where to read the data (string)",
 
   44                      "Name of the output signal (string)")));
 
   49                        docCommandVoid0(
"Update all the output signals.")));
 
   53                               docCommandVoid0(
"Rewind all the data.")));
 
   55   addCommand(
"clear", makeCommandVoid0(
 
   57                           docCommandVoid0(
"Clear all the output signals.")));
 
   65   std::string astr = toString(iter);
 
   73                                   const string& signalName) {
 
   76     return SEND_MSG(
"It already exists a signal with name " + signalName,
 
   80   std::ifstream datafile(fileName.c_str());
 
   82     return SEND_MSG(
"Error trying to read the file " + fileName,
 
   85   const unsigned int SIZE = 1024;
 
   87   std::vector<double> newline;
 
   89   bool firstIter = 
true;
 
   90   std::size_t size = -1;
 
   91   string fileNameShort = fileName.substr(1 + fileName.find_last_of(
"/"));
 
   92   while (datafile.good()) {
 
   93     datafile.getline(buffer, SIZE);
 
   94     const std::size_t gcount = datafile.gcount();
 
   96       return SEND_MSG(
"Read error: line " + toString(nbLines) +
 
   97                           " too long in file " + fileNameShort,
 
  100     std::istringstream iss(buffer);
 
  106       if (iss.fail()) 
break;
 
  107       newline.push_back(x);
 
  110     if (newline.size() > 0) {
 
  112         size = newline.size();
 
  113       else if (size != newline.size()) {
 
  114         SEND_MSG(
"In file " + fileNameShort +
 
  115                      " nb of elements in each line changed from " +
 
  116                      toString(size) + 
" to " + toString(newline.size()) +
 
  117                      " at line " + toString(nbLines),
 
  119         size = newline.size();
 
  121       m_data[signalName].push_back(
 
  122           Eigen::Map<Vector>(&newline[0], newline.size()));
 
  126   SEND_MSG(
"Finished reading " + toString(nbLines) + 
" lines of " +
 
  127                toString(size) + 
" elements from file " + fileNameShort,
 
  134                            ")::output(dynamicgraph::Vector)::" + signalName);
 
  142   typedef std::map<std::string, OutputSignalType*>::iterator it_type;
 
  145     const string& signalName = it->first;
 
  150     if (dataPointer != dataSet.end()) ++dataPointer;
 
  152     if (dataPointer == dataSet.end())
 
  153       SEND_WARNING_STREAM_MSG(
"Reached end of dataset for signal " +
 
  156       signal->setConstant(*dataPointer);
 
  161   typedef std::map<std::string, DataPointerType>::iterator it_type;
 
  163     const string& signalName = it->first;
 
  166     dataPointer = dataSet.begin();
 
  184   os << 
"TracePlayer " << getName();
 
  186     getProfiler().report_all(3, os);
 
  187   } 
catch (ExceptionSignal e) {
 
Entity to play data saved using a Tracer.
 
TracePlayer(const std::string &name)
 
std::list< DataType > DataHistoryType
 
std::map< std::string, DataPointerType > m_dataPointers
 
virtual void display(std::ostream &os) const
 
dynamicgraph::Signal< dynamicgraph::Vector, int > OutputSignalType
 
void addOutputSignal(const std::string &fileName, const std::string &signalName)
 
std::map< std::string, DataHistoryType > m_data
 
DataHistoryType::const_iterator DataPointerType
 
std::map< std::string, OutputSignalType * > m_outputSignals
 
DEFINE_SIGNAL_OUT_FUNCTION(u, dynamicgraph::Vector)
 
AdmittanceController EntityClassName
 
DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(AdmittanceController, "AdmittanceController")