urdf_traverser::EigenTransform urdf_traverser::getTransform(const urdf::Pose& p)
{
    urdf::Vector3 _jtr = p.position;
    Eigen::Vector3d jtr(_jtr.x, _jtr.y, _jtr.z);
    urdf::Rotation _jrot = p.rotation;
    Eigen::Quaterniond jrot(_jrot.w, _jrot.x, _jrot.y, _jrot.z);
    jrot.normalize();
    EigenTransform tr;
    tr.setIdentity();
    tr = tr.translate(jtr);
    tr = tr.rotate(jrot);
    return tr;
}
Beispiel #2
0
int main ()
{
	vector<double> v(10, 0.0);
	list<double> L;
	for (int i = 0; i < 10; i++)  {
		L.push_back(100 - i * i);
		v.push_back(10-i);
		}
	vectorIterator<double> itr(v);
	for (itr.init(); ! itr; itr++)
	  cout << itr( ) << ' ';
	cout << '\n';
	double total = 0;
	for (itr.init(); ! itr; itr++)
	  total += itr ();
	cout << "total is " << total << '\n';
	vectorIterator<double> jtr(v);
	sort1(itr, jtr);
	for (itr.init(); ! itr; itr++)
	  cout << itr( ) << ' ';
	cout << '\n';
	itr.sort(itr, jtr);
	for (itr.init(); ! itr; itr++)
	  cout << itr( ) << ' ';
	cout << '\n';
	listIterator<double> lt1(L);
	for (lt1.init(); ! lt1; lt1++)
	  cout << lt1( ) << ' ';
	cout << '\n';
	total = 0;
	for (lt1.init(); ! lt1; lt1++)
	  total += lt1 ();
	cout << "total is " << total << '\n';
	listIterator<double> jt1(L);
	sort1(lt1, jt1);
	for (lt1.init(); ! lt1; lt1++)
	  cout << lt1( ) << ' ';
	cout << '\n';
	lt1.sort(lt1, jt1);
	for (lt1.init(); ! lt1; lt1++)
	  cout << lt1( ) << ' ';
	cout << '\n';

   cout << "\nMY STUFF BEGINS HERE!\n";
   cout << "VECTOR ITERATOR:\n" << itr;
   cout << "LIST ITERATOR:\n" << lt1;
   return 1;
}
Beispiel #3
0
void SigmoidNetwork::Init(clrandom & r)
{
  // initialize weights using random number generator r.

  // hidden units.
  {
    float range =  1.0/sqrt(NInputs+1.0);

    vectorIterator<vector<float> *>  itr(hidden);
    for(itr.init(); ! itr; ++itr) {
      vectorIterator<float>  jtr(*itr());
      for(jtr.init(); ! jtr; ++jtr) {
	jtr = r.between(-range, range);
      }
    }

  }

  // for output weights, the fan-in changes
  {
    float range = 1.0/sqrt(NHidden+1.0);

    vectorIterator<vector<float> *>  itr(outputs);
    for(itr.init(); ! itr; ++itr) {
      vector<float> & w = *itr();
      int j;
      float sum = 0.0;
      // 
      for(j = 0;  j < NHidden; j++) {
	w[j] = r.between(-range, range);
	sum += w[j];
      }
      // set the bias unit.  We assume that on the average, half of
      // the inputs will be on. So we set the bias weight to be -sum/2
      w[NHidden] = -sum/2.0;
    }
  }
}
void
RetrogradeCommand::modifySegment()
{
    std::vector<Event *> toErase;
    std::vector<Event *> toInsert;

    timeT a0 = m_selection->getStartTime();
    timeT a1 = m_selection->getEndTime();

    EventSelection::eventcontainer::iterator i;

    bool useNotationTimings = false;

    for (i = m_selection->getSegmentEvents().begin();
            i != m_selection->getSegmentEvents().end(); ++i) {

        RG_DEBUG << "RetrogradeCommand::modifySegment: event at " << (*i)->getAbsoluteTime() << " type " << (*i)->getType();

        if ((*i)->isa(Note::EventRestType))
            continue;

        toErase.push_back(*i);
        timeT newTime = a0 + a1 - (*i)->getDuration() -
                        (useNotationTimings ?
                         (*i)->getNotationAbsoluteTime() : (*i)->getAbsoluteTime());

        Event *e;
        if (useNotationTimings) {
            e = new Event(**i, newTime, (*i)->getDuration(), (*i)->getSubOrdering(),
                          newTime, (*i)->getNotationDuration());
        } else {
            e = new Event(**i, newTime);
        }

        toInsert.push_back(e);
    }

    Segment &segment(m_selection->getSegment());

    for (size_t j = 0; j < toErase.size(); ++j) {
        Segment::iterator jtr(segment.findSingle(toErase[j]));
        if (jtr != segment.end()) {
            RG_DEBUG << "found event " << j;
            segment.erase(jtr);
        } else {
            RG_DEBUG << "failed to find event " << j;
        }
    }

    for (size_t j = 0; j < toInsert.size(); ++j) {

        Segment::iterator jtr = segment.end();

        // somewhat like the NoteOverlay part of PasteEventsCommand::modifySegment
        /* nah -- let's do a de-counterpoint afterwards perhaps
        	if (m_useNotationTimings && toInsert[j]->isa(Note::EventType)) {
        	    long pitch = 0;
        	    Accidental explicitAccidental = NoAccidental;
        	    toInsert[j]->get<String>(ACCIDENTAL, explicitAccidental);
        	    if (toInsert[j]->get<Int>(PITCH, pitch)) {
        		jtr = SegmentNotationHelper(segment).insertNote
        		    (toInsert[j]->getAbsoluteTime(),
        		     Note::getNearestNote(toInsert[j]->getDuration()),
        		     pitch, explicitAccidental);
        		delete toInsert[j];
        		toInsert[j] = *jtr;
        	    }
        	} else {
        */
        jtr = segment.insert(toInsert[j]);
        //	}

        // insert new event back into selection
        m_selection->addEvent(toInsert[j]);

        // if (jtr != segment.end()) m_lastInsertedEvent = toInsert[j];
    }

    segment.normalizeRests(a0, a1);
}