You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(59) |
Jun
(40) |
Jul
(59) |
Aug
(81) |
Sep
(14) |
Oct
(9) |
Nov
(22) |
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(25) |
Feb
(3) |
Mar
(27) |
Apr
(14) |
May
(15) |
Jun
(112) |
Jul
(44) |
Aug
(7) |
Sep
(18) |
Oct
(34) |
Nov
(17) |
Dec
(20) |
2006 |
Jan
(12) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(11) |
From: Dominic L. <ma...@us...> - 2005-11-24 21:15:23
|
Update of /cvsroot/robotflow/RobotFlow/OpenCV/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25576 Modified Files: CvCaptureFrame.cc CvHaarDetect.cc Log Message: fixed memory leaks, added VisualROI vector output Index: CvHaarDetect.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/OpenCV/src/CvHaarDetect.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CvHaarDetect.cc 24 Nov 2005 20:18:34 -0000 1.1 --- CvHaarDetect.cc 24 Nov 2005 21:15:07 -0000 1.2 *************** *** 12,15 **** --- 12,16 ---- #include <highgui.h> #include <time.h> + #include <Vector.h> using namespace FD; *************** *** 86,90 **** * * @output_name OUT_ROI ! * @output_type VisualROI * @output_description Region of interest corresponding to current model. * --- 87,91 ---- * * @output_name OUT_ROI ! * @output_type Vector<ObjectRef> * @output_description Region of interest corresponding to current model. * *************** *** 153,157 **** m_contourStorage = cvCreateMemStorage(0); ! m_objectROI = RCPtr<VisualROI>(new VisualROI(e_VISUALROI_rectangular, 1, 1, 1, 1, 0)); } --- 154,159 ---- m_contourStorage = cvCreateMemStorage(0); ! m_ROIVect = RCPtr<Vector<ObjectRef> >(new Vector<ObjectRef>()); ! //(new VisualROI(e_VISUALROI_rectangular, 1, 1, 1, 1, 0)); } *************** *** 160,164 **** cerr<<"CvHaarDetect destruction"<<endl; cvReleaseImage(&m_curImage); ! //TODO: imageRef->destroy(); } --- 162,166 ---- cerr<<"CvHaarDetect destruction"<<endl; cvReleaseImage(&m_curImage); ! } *************** *** 196,199 **** --- 198,204 ---- //ftime(&t1); + //make sure we have an empty vector + m_ROIVect->resize(0); + // No tracked target, so do standard detection foundObject = ObjectDetection(); *************** *** 210,219 **** (*outputs[m_ImageOutID].buffer)[count] = imageRef; ! if (foundObject) { ! (*outputs[m_roiOutID].buffer)[count] = m_objectROI; ! } ! else { ! (*outputs[m_roiOutID].buffer)[count] = nilObject; ! } } catch (BaseException *e) { --- 215,221 ---- (*outputs[m_ImageOutID].buffer)[count] = imageRef; ! ! (*outputs[m_roiOutID].buffer)[count] = m_ROIVect; ! } catch (BaseException *e) { *************** *** 226,229 **** --- 228,232 ---- int i, detcount; ObjectPos* det; + bool retval = false; try { *************** *** 252,260 **** // << std::endl; ! m_objectROI->SetXCen(r.rect.x + r.rect.width / 2); ! m_objectROI->SetYCen(r.rect.y + r.rect.height / 2); ! m_objectROI->SetHSX(r.rect.width / 2); ! m_objectROI->SetHSY(r.rect.height / 2); /*if( saveDetected ) { --- 255,269 ---- // << std::endl; ! ! VisualROI *objectROI = new VisualROI(e_VISUALROI_rectangular, 1, 1, 1, 1, 0); ! ! objectROI->SetXCen(r.rect.x + r.rect.width / 2); ! objectROI->SetYCen(r.rect.y + r.rect.height / 2); ! objectROI->SetHSX(r.rect.width / 2); ! objectROI->SetHSY(r.rect.height / 2); + m_ROIVect->push_back(ObjectRef(objectROI)); + + retval = true; /*if( saveDetected ) { *************** *** 269,278 **** } ! //FIXME: seems to be usefull ! ! //cvReleaseImage( &m_curImage ); } catch (BaseException *e) { throw e->add(new GeneralException("Exception in CvHaarDetect::ObjectDetection:",__FILE__,__LINE__)); } } --- 278,288 ---- } ! if( det ) { cvFree( (void**)&det ); det = NULL; } ! } catch (BaseException *e) { throw e->add(new GeneralException("Exception in CvHaarDetect::ObjectDetection:",__FILE__,__LINE__)); } + return retval; } *************** *** 311,315 **** RCPtr<Image> m_outputImage; ! RCPtr<VisualROI> m_objectROI; bool isFrontFace; bool isProfileFace; --- 321,327 ---- RCPtr<Image> m_outputImage; ! //RCPtr<VisualROI> m_objectROI; ! RCPtr<Vector<ObjectRef> > m_ROIVect; ! bool isFrontFace; bool isProfileFace; Index: CvCaptureFrame.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/OpenCV/src/CvCaptureFrame.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CvCaptureFrame.cc 24 Nov 2005 20:18:34 -0000 1.1 --- CvCaptureFrame.cc 24 Nov 2005 21:15:07 -0000 1.2 *************** *** 54,58 **** CvCaptureFrame(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) - , m_storage(NULL) , m_capture(NULL) , m_frame(NULL) --- 54,57 ---- *************** *** 121,125 **** } ! //cvReleaseImage( &frame_copy ); } } --- 120,125 ---- } ! cvReleaseImage(&m_frame); ! m_frame = NULL; } } *************** *** 139,145 **** int m_height; ! CvMemStorage *m_storage; - Image *m_imageRef; }; --- 139,145 ---- int m_height; ! //CvMemStorage *m_storage; ! }; |
From: Nicolas P. <npa...@us...> - 2005-11-24 20:18:45
|
Update of /cvsroot/robotflow/RobotFlow/OpenCV/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14092/OpenCV/src Modified Files: Makefile.am Added Files: CvCaptureFrame.cc CvHaarDetect.cc Log Message: Added CvCaptureFrame.cc to capture webcam images using OpenCV Added CvHaarDetect.cc to detect ROI from an image using Haar algorithm in OpenCV Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/OpenCV/src/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile.am 3 Aug 2005 18:41:37 -0000 1.2 --- Makefile.am 24 Nov 2005 20:18:34 -0000 1.3 *************** *** 8,11 **** --- 8,13 ---- libRFOpenCV_la_SOURCES = ColorHistExtraction.cc \ CvFaceDetection.cc \ + CvHaarDetect.cc \ + CvCaptureFrame.cc \ DrawPFParticle.cc \ GetVisualROIParam.cc \ --- NEW FILE: CvHaarDetect.cc --- /* * performance.cpp * * Measure performance of classifier */ #include "BufferedNode.h" #include "cv.h" #include "VisualROI.h" #include "Image.h" #include <stdio.h> #include <math.h> #include <highgui.h> #include <time.h> using namespace FD; using namespace std; #ifdef _WIN32 /* use clock() function insted of time() */ #define time( arg ) (((double) clock()) / CLOCKS_PER_SEC) #endif /* _WIN32 */ #ifndef PATH_MAX #define PATH_MAX 512 #endif /* PATH_MAX */ namespace RobotFlow { typedef struct HidCascade { int size; int count; } HidCascade; typedef struct ObjectPos { float x; float y; float width; int found; /* for reference */ int neghbors; } ObjectPos; class CvHaarDetect; DECLARE_NODE(CvHaarDetect) /*Node * * @name CvHaarDetect * @category RobotFlow:Vision:Detection * @description Generic haar cascade classifier for recognition using OpenCV. * * @parameter_name FRAME_WIDTH * @parameter_type int * @parameter_value 320 * @parameter_description Video frame width. * * @parameter_name FRAME_HEIGHT * @parameter_type int * @parameter_value 240 * @parameter_description Video frame height. * * @parameter_name NUM_CHANNELS * @parameter_type int * @parameter_value 3 * @parameter_description Number of channels of the input image. * * @parameter_name SCALE_FACTOR * @parameter_type float * @parameter_value 1.2 * @parameter_description Detection parameter. * * @parameter_name CLASSIFIER * @parameter_type string * @parameter_value /home/npaquin/u2s/Sources/Vision/Haar/train10/prise10.xml * @parameter_description .xml file of the classifier. * * @input_name IN_IMAGE * @input_type Image * @input_description Current grayscale frame to process. * * @input_name ACTIVATION * @input_type bool * @input_description Node activation flag. * * @output_name OUT_ROI * @output_type VisualROI * @output_description Region of interest corresponding to current model. * * @output_name OUT_IMAGE * @output_type Image * @output_description Image with the ROI on it. * END*/ class CvHaarDetect : public BufferedNode { public: CvHaarDetect(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) , m_storage1(NULL) , m_haarClassifier1(NULL) { m_imageInID = addInput("IN_IMAGE"); m_activatedInID = addInput("ACTIVATION"); m_roiOutID = addOutput("OUT_ROI"); m_ImageOutID = addOutput("OUT_IMAGE"); m_width = dereference_cast<int>(parameters.get("FRAME_WIDTH")); m_height = dereference_cast<int>(parameters.get("FRAME_HEIGHT")); m_numChannels = dereference_cast<int>(parameters.get("NUM_CHANNELS")); m_scaleFactor = dereference_cast<float>(parameters.get("SCALE_FACTOR")); m_classifier = object_cast<String>(parameters.get("CLASSIFIER")); m_numPixels = m_width*m_height; m_numBytesInFrame = m_numPixels*m_numChannels; m_imgXCen = m_width/2; m_imgYCen = m_height/2; CvSize imgSize; imgSize.width = m_width; imgSize.height = m_height; m_curImage = cvCreateImage(imgSize, IPL_DEPTH_8U, m_numChannels); m_storage1 = cvCreateMemStorage(0); // Read the .xml file representing the classifier constructed from the classifier dir with convert_cascade sample program in OpenCV m_haarClassifier1 = (CvHaarClassifierCascade*)cvLoad( m_classifier.val().c_str(), 0, 0, 0 ); if (!m_haarClassifier1) { throw new GeneralException("Cannot load haar classifiers : from file CLASSIFIER",__FILE__,__LINE__); } /* // cvLoadHaarClassifierCascade load the dir containing the clissifier (obsolete) m_haarClassifier1 = cvLoadHaarClassifierCascade( m_classifier.val().c_str(), cvSize( m_windowWidth, m_windowHeight ) ); if( m_haarClassifier1 == NULL ) { throw new GeneralException( "Unable to load classifier from file classifierdir",__FILE__,__LINE__); } */ /* int* numclassifiers = new int[m_haarClassifier1->count]; numclassifiers[0] = m_haarClassifier1->stage_classifier[0].count; for( i = 1; i < m_haarClassifier1->count; i++ ) { numclassifiers[i] = numclassifiers[i-1] + m_haarClassifier1->stage_classifier[i].count; }*/ m_contourStorage = cvCreateMemStorage(0); m_objectROI = RCPtr<VisualROI>(new VisualROI(e_VISUALROI_rectangular, 1, 1, 1, 1, 0)); } virtual ~CvHaarDetect() { cerr<<"CvHaarDetect destruction"<<endl; cvReleaseImage(&m_curImage); //TODO: imageRef->destroy(); } void calculate(int output_id, int count, Buffer &out) { try { // Get activation flag m_activated = getInput(m_activatedInID, count); if (!(*m_activated)) { // Output nilObjects and return (*outputs[m_roiOutID].buffer)[count] = nilObject; (*outputs[m_ImageOutID].buffer)[count] = nilObject; return; } //struct timeb t1, t2; bool foundObject = false; imageRef = getInput(m_imageInID, count); if(&imageRef == 0) throw new GeneralException ("CvHaarDetect::calculate : input image is null.",__FILE__,__LINE__); // Verify input image sanity if (imageRef->get_width() != m_width || imageRef->get_height() != m_height || imageRef->get_pixelsize() != m_numChannels) { throw new GeneralException ("CvHaarDetect::calculate : image parameters do not correspond to given input.",__FILE__,__LINE__); } // Copy input image memcpy(m_curImage->imageData, imageRef->get_data(), m_numBytesInFrame); // Start timer //ftime(&t1); // No tracked target, so do standard detection foundObject = ObjectDetection(); // End timer //ftime(&t2); // Display time used //double timeDiff=(t2.time-t1.time)+((t2.millitm-t1.millitm)/1000.0); //cout << "Total run time (sec): " << timeDiff << " found object=" << foundObject << endl; unsigned char * temp = (unsigned char *) m_curImage->imageData; imageRef->put_data(temp, m_numBytesInFrame); (*outputs[m_ImageOutID].buffer)[count] = imageRef; if (foundObject) { (*outputs[m_roiOutID].buffer)[count] = m_objectROI; } else { (*outputs[m_roiOutID].buffer)[count] = nilObject; } } catch (BaseException *e) { throw e->add(new GeneralException("Exception in CvHaarDetect::calculate:",__FILE__,__LINE__)); } } bool ObjectDetection() { int i, detcount; ObjectPos* det; try { cvClearMemStorage(m_storage1); // Detect objects CvSeq* objects = cvHaarDetectObjects( m_curImage, m_haarClassifier1, m_storage1, m_scaleFactor, 1 ); detcount = ( objects ? objects->total : 0); det = (detcount > 0) ? ( (ObjectPos*)cvAlloc( detcount * sizeof( *det )) ) : NULL; for( i = 0; i < detcount; i++ ){ CvAvgComp r = *((CvAvgComp*) cvGetSeqElem( objects, i )); det[i].x = 0.5F * r.rect.width + r.rect.x; det[i].y = 0.5F * r.rect.height + r.rect.y; det[i].width = sqrtf( 0.5F * (r.rect.width * r.rect.width + r.rect.height * r.rect.height) ); det[i].neghbors = r.neighbors; cvRectangle( m_curImage, cvPoint( r.rect.x, r.rect.y ), cvPoint( r.rect.x + r.rect.width, r.rect.y + r.rect.height ), CV_RGB( 255, 0, 0 ), 3 ); //std::cout << "ROI: x=" << r.rect.x << " y=" << r.rect.y // << " width=" << r.rect.width << " height=" << r.rect.height // << std::endl; m_objectROI->SetXCen(r.rect.x + r.rect.width / 2); m_objectROI->SetYCen(r.rect.y + r.rect.height / 2); m_objectROI->SetHSX(r.rect.width / 2); m_objectROI->SetHSY(r.rect.height / 2); /*if( saveDetected ) { strcpy( detfilename, detname ); strcat( detfilename, filename ); strcpy( filename, detfilename ); cvvSaveImage( fullname, m_curImage ); }*/ //FIXME: Mem leek possible !!! //if( det ) { cvFree( (void**)&det ); det = NULL; } } //FIXME: seems to be usefull ! //cvReleaseImage( &m_curImage ); } catch (BaseException *e) { throw e->add(new GeneralException("Exception in CvHaarDetect::ObjectDetection:",__FILE__,__LINE__)); } } private: int m_imageInID; int m_maskInID; int m_activatedInID; int m_roiOutID; int m_ImageOutID; RCPtr<Bool> m_activated; int m_width; int m_height; float m_scaleFactor; String m_classifier; int m_numChannels; int m_numPixels; int m_numBytesInFrame; int m_imgXCen; int m_imgYCen; int m_maxNumSkinRegions; int m_minROIWidth; int m_minROIHeight; CvMemStorage *m_storage1; CvMemStorage *m_storage2; CvHaarClassifierCascade *m_haarClassifier1; IplImage *m_curImage; RCPtr<Image> imageRef; // Internal contour memory storage CvMemStorage *m_contourStorage; RCPtr<Image> m_outputImage; RCPtr<VisualROI> m_objectROI; bool isFrontFace; bool isProfileFace; }; } --- NEW FILE: CvCaptureFrame.cc --- #ifndef _CVCAPTUREFRAME_CC_ #define _CVCAPTUREFRAME_CC_ #include "BufferedNode.h" #include "cv.h" #include "highgui.h" #include "Image.h" #include "VisualROI.h" #include <stdlib.h> #include <sys/timeb.h> using namespace FD; using namespace std; namespace RobotFlow { class CvCaptureFrame; DECLARE_NODE(CvCaptureFrame) /*Node * * @name CvCaptureFrame * @category RobotFlow:Vision:Detection * @description Capture a frame using OpenCV. * * @parameter_name FRAME_WIDTH * @parameter_type int * @parameter_value 640 * @parameter_description Video frame width. * * @parameter_name FRAME_HEIGHT * @parameter_type int * @parameter_value 480 * @parameter_description Video frame height. * * @parameter_name DEVICE * @parameter_type int * @parameter_value 0 * @parameter_description Device where to grab the frame (/dev/video#). * * @output_name OUT_IMAGE * @output_type Image * @output_description Grabbed image. * END*/ class CvCaptureFrame : public BufferedNode { public: CvCaptureFrame(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) , m_storage(NULL) , m_capture(NULL) , m_frame(NULL) { m_imageOutID = addOutput("OUT_IMAGE"); m_width = dereference_cast<int>(parameters.get("FRAME_WIDTH")); m_height = dereference_cast<int>(parameters.get("FRAME_HEIGHT")); m_device = dereference_cast<int>(parameters.get("DEVICE")); m_capture = cvCaptureFromCAM( m_device ); cvSetCaptureProperty( m_capture, CV_CAP_PROP_FRAME_WIDTH, (double)m_width ); cvSetCaptureProperty( m_capture, CV_CAP_PROP_FRAME_HEIGHT, (double)m_height ); } virtual ~CvCaptureFrame() { cerr<<"CvCaptureFrame destruction"<<endl; cvReleaseCapture( &m_capture ); } void calculate(int output_id, int count, Buffer &out) { try { // Get activation flag //m_activated = getInput(m_activatedInID, count); //if (!(*m_activated)) { // // Output nilObjects and return // (*outputs[m_roiOutID].buffer)[count] = nilObject; // return; //} if( m_capture ) { if( !cvGrabFrame( m_capture )) return; m_frame = cvRetrieveFrame( m_capture ); if( !m_frame ) return; //fprintf( stdout, "Image capture's type = %s %s %i\n", m_frame->colorModel, m_frame->channelSeq, m_frame->depth ); //fprintf( stdout, "Image capture's size = %i %i %i\n", m_frame->width, m_frame->height, m_frame->nChannels ); //fprintf(stdout, "BGR? %i\n", strcmp(m_frame->channelSeq, "BGR")); if(strcmp(m_frame->channelSeq, "BGR") == 0) { cvCvtColor(m_frame, m_frame, CV_BGR2RGB); } int m_pixelSize = m_frame->nChannels; Image *my_image = NULL; if (m_pixelSize == 2){ my_image = Image::alloc(m_width, m_height, m_pixelSize); memcpy(my_image->get_data(),m_frame->imageData, m_frame->imageSize); out[count] = ObjectRef(my_image); } else if (m_pixelSize == 3) { my_image = Image::alloc(m_width, m_height, m_pixelSize); memcpy(my_image->get_data(),m_frame->imageData, m_frame->imageSize); out[count] = ObjectRef(my_image); } else { throw new GeneralException("PIXELSIZE not yet supported",__FILE__,__LINE__); } //cvReleaseImage( &frame_copy ); } } catch (BaseException *e) { throw e->add(new GeneralException("Exception in CvCaptureFrame::calculate:",__FILE__,__LINE__)); } } private: int m_imageOutID; CvCapture* m_capture; IplImage * m_frame; int m_device; int m_width; int m_height; CvMemStorage *m_storage; Image *m_imageRef; }; } #endif |
From: MagellanPro <mag...@us...> - 2005-11-18 16:16:28
|
Update of /cvsroot/robotflow/RobotFlow/Probes/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9945/src Modified Files: Makefile.am SoundSourceDisplay.cc Log Message: working display of audio sources Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Probes/src/Makefile.am,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Makefile.am 18 Nov 2005 15:10:55 -0000 1.17 --- Makefile.am 18 Nov 2005 16:16:20 -0000 1.18 *************** *** 36,40 **** INCLUDES = -I../include $(OVERFLOW_INCLUDE) $(GNOME_INCLUDE) \ -I../../Vision/include -I ../../OpenCV/include \ ! $(SDL_INCLUDE) -I$(OVERFLOW_DATA)/HMM $(OPENCV_CFLAGS) LDADD = $(SDL_LIB) --- 36,40 ---- INCLUDES = -I../include $(OVERFLOW_INCLUDE) $(GNOME_INCLUDE) \ -I../../Vision/include -I ../../OpenCV/include \ ! -I../../Audio/include $(SDL_INCLUDE) -I$(OVERFLOW_DATA)/HMM $(OPENCV_CFLAGS) LDADD = $(SDL_LIB) Index: SoundSourceDisplay.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Probes/src/SoundSourceDisplay.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SoundSourceDisplay.cc 18 Nov 2005 14:59:02 -0000 1.1 --- SoundSourceDisplay.cc 18 Nov 2005 16:16:20 -0000 1.2 *************** *** 2,5 **** --- 2,6 ---- #include "SoundSourceDisplay.h" + #include "SourceInfo.h" #include "net_types.h" #include "Object.h" *************** *** 23,26 **** --- 24,31 ---- * @description Virtual joystick with 2 standard buttons and 2 toggle buttons * + * @input_name SOURCES_INFO + * @input_type Vector<ObjectRef> + * @input_description The active sound sources list + * * @parameter_name BUTTONS_VISIBLE * @parameter_type bool *************** *** 78,82 **** m_outputID = addOutput("OUTPUT"); ! } --- 83,87 ---- m_outputID = addOutput("OUTPUT"); ! m_sourcesID = addInput("SOURCES_INFO"); } *************** *** 243,247 **** --- 248,254 ---- NULL); + //create joystick handle + /* m_pHandle = gnome_canvas_item_new(gnome_canvas_root(m_pCanvas), gnome_canvas_ellipse_get_type(), *************** *** 259,263 **** this); ! //display window --- 266,270 ---- this); ! */ //display window *************** *** 370,402 **** gdk_threads_enter(); - double x1,y1,x2,y2; ! gnome_canvas_item_get_bounds(m_pHandle,&x1,&y1,&x2,&y2); ! int size = 0; ! if (m_buttonsVisible) { ! size = 4; ! } ! else { ! size = 2; } ! Vector<float> *data = Vector<float>::alloc(size); ! (*data)[0] = ((x2 + x1) / 2.0) - 160.0; ! (*data)[1] = 160.0 - ((y2 + y1) / 2.0); ! if (m_buttonsVisible) { ! (*data)[2] = (float) m_button1_on; ! (*data)[3] = (float) m_button2_on; ! //(*data)[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_pButton3)); ! //(*data)[5] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_pButton4)); ! } ! out[count] = ObjectRef(data); gdk_threads_leave(); --- 377,424 ---- gdk_threads_enter(); ! ObjectRef SourcesInfoValue = getInput(m_sourcesID,count); + //double x1,y1,x2,y2; + //gnome_canvas_item_get_bounds(m_pHandle,&x1,&y1,&x2,&y2); ! RCPtr<Vector<ObjectRef> > allSources = SourcesInfoValue; ! //cerr<<"SOUNDSOURCEDISPLAY : "<<"Got sources count :"<<allSources->size()<<endl; ! ! //destroy all actual canvas items ! for (int i = 0; i < m_sourceItems.size(); i++) { ! gtk_object_destroy(GTK_OBJECT(m_sourceItems[i])); } + m_sourceItems.resize(0); ! //display all sources ! for (int i = 0; i < allSources->size(); i++) { ! ! RCPtr<SourceInfo> mySource = (*allSources)[i]; ! unsigned int color = 0x000000FF; //opaque ! float strength = mySource->strength * 255.0; ! color |= ((((unsigned int) strength) & 0x000000FF) << 8); + + //create source item + GnomeCanvasItem *item = gnome_canvas_item_new(gnome_canvas_root(m_pCanvas), + gnome_canvas_ellipse_get_type(), + "x1",(double)(-mySource->x[1] * 160.0 + 160.0 - 10.0), + "y1",(double)(mySource->x[0] * 160.0 + 160.0 - 10.0), + "x2",(double)(-mySource->x[1] * 160.0 + 160.0 + 10.0), + "y2",(double)(mySource->x[0] * 160.0 + 160.0 + 10.0), + "fill_color_rgba", color, + "outline_color", "black", + NULL); + + m_sourceItems.push_back(item); + } ! ! out[count] = SourcesInfoValue; gdk_threads_leave(); |
From: MagellanPro <mag...@us...> - 2005-11-18 16:16:28
|
Update of /cvsroot/robotflow/RobotFlow/Probes/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9945/include Modified Files: SoundSourceDisplay.h Log Message: working display of audio sources Index: SoundSourceDisplay.h =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Probes/include/SoundSourceDisplay.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SoundSourceDisplay.h 18 Nov 2005 15:00:33 -0000 1.1 --- SoundSourceDisplay.h 18 Nov 2005 16:16:20 -0000 1.2 *************** *** 32,35 **** --- 32,37 ---- int m_outputID; + int m_sourcesID; + //GUI widgets GtkWidget* m_pWindow1; *************** *** 44,47 **** --- 46,50 ---- GnomeCanvasItem* m_pBorder; GnomeCanvasItem* m_pHandle; + std::vector<GnomeCanvasItem*> m_sourceItems; public: |
From: Dominic L. <ma...@us...> - 2005-11-18 15:11:04
|
Update of /cvsroot/robotflow/RobotFlow/Probes/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26877/src Modified Files: Makefile.am Log Message: testing source display Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Probes/src/Makefile.am,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Makefile.am 3 Aug 2005 19:52:54 -0000 1.16 --- Makefile.am 18 Nov 2005 15:10:55 -0000 1.17 *************** *** 25,28 **** --- 25,29 ---- ColorTrain.cc \ PTZControl.cc \ + SoundSourceDisplay.cc \ $(IMAGEPROBE_SDL_SOURCE) \ SymbolKeypad.cc \ |
From: Dominic L. <ma...@us...> - 2005-11-18 15:11:03
|
Update of /cvsroot/robotflow/RobotFlow/Probes/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26877/include Modified Files: Makefile.am Log Message: testing source display Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Probes/include/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Makefile.am 26 Jul 2004 15:13:49 -0000 1.3 --- Makefile.am 18 Nov 2005 15:10:55 -0000 1.4 *************** *** 4,7 **** --- 4,8 ---- MapDef.h \ VirtualJoystick.h \ + SoundSourceDisplay.h \ PTZControl.h \ SymbolKeypad.h |
From: Dominic L. <ma...@us...> - 2005-11-18 15:00:43
|
Update of /cvsroot/robotflow/RobotFlow/Probes/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24259/include Added Files: SoundSourceDisplay.h Log Message: testing.. --- NEW FILE: SoundSourceDisplay.h --- // Copyright (C) 2005 Dominic Letourneau #ifndef _SOUNDSOURCEDISPLAY_H_ #define _SOUNDSOURCEDISPLAY_H_ #include "BufferedNode.h" #include <pthread.h> #include <gnome.h> namespace RobotFlow { /** Virtual Joystick is a visual probe that shows a joystick with 2 standard buttons and 2 toggle buttons. \author Dominic Letourneau */ class SoundSourceDisplay : public FD::BufferedNode { protected: ///Flag for the visibility of all the buttons bool m_buttonsVisible; ///button 1 state bool m_button1_on; ///button 2 state bool m_button2_on; ///button 3 state bool m_toggleButton3_on; ///button 4 state bool m_toggleButton4_on; ///The output vector containing the state of the virtual joystick int m_outputID; //GUI widgets GtkWidget* m_pWindow1; GtkWidget* m_pVbox2; GtkWidget* m_pToolbar2; GnomeCanvas* m_pCanvas; GnomeCanvasGroup* m_pGroup; GtkWidget* m_pButton1; GtkWidget* m_pButton2; GtkWidget* m_pButton3; GtkWidget* m_pButton4; GnomeCanvasItem* m_pBorder; GnomeCanvasItem* m_pHandle; public: /** Constructor \param nodeName The name of the node \param params The parameters passed at construction */ SoundSourceDisplay(std::string nodeName, FD::ParameterSet params); ///Destructor virtual ~SoundSourceDisplay(); /** Class specific initialization routine. Each class will call its subclass specificInitialize() method */ virtual void initialize(); /** Calculate inherited from BufferedNode \param output_id the output to calculate \param count the iteration number \param out the buffer where to write the result */ virtual void calculate(int output_id, int count, FD::Buffer &out); /** Catch a GdkEvent on the canvas \param event The GdkEvent */ gint event(GdkEvent *event); /** Called when a button changed its status \param button_id the id of the button */ bool change_button_status(int button_id); }; }//namespace RobotFlow #endif |
From: Dominic L. <ma...@us...> - 2005-11-18 14:59:10
|
Update of /cvsroot/robotflow/RobotFlow/Probes/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23805/src Added Files: SoundSourceDisplay.cc Log Message: include/SoundSourceDisplay.h --- NEW FILE: SoundSourceDisplay.cc --- // Copyright (C) 2002 Dominic Letourneau #include "SoundSourceDisplay.h" #include "net_types.h" #include "Object.h" #include <gnome.h> #include "Vector.h" #ifdef HAVE_CONFIG_H # include <config.h> #endif using namespace std; using namespace FD; namespace RobotFlow { DECLARE_NODE(SoundSourceDisplay) /*Node * * @name SoundSourceDisplay * @category RobotFlow:Probes * @description Virtual joystick with 2 standard buttons and 2 toggle buttons * * @parameter_name BUTTONS_VISIBLE * @parameter_type bool * @parameter_value true * @parameter_description True if you want to use buttons. * * @output_name OUTPUT * @output_type Vector<float> * @output_description x, y, button1, button2 of the joystick * END*/ static gboolean ignore_delete(GtkWidget *widget, GdkEvent *event, gpointer user_data) { return TRUE; } static void button1_click (GtkButton *button, SoundSourceDisplay* self) { //cout<<"Button 1 clicked"<<endl; self->change_button_status(1); } static void button2_click (GtkButton *button, SoundSourceDisplay* self) { //cout<<"Button 2 clicked"<<endl; self->change_button_status(2); } static gint handle_event_handler (GnomeCanvasItem *item, GdkEvent *event, SoundSourceDisplay *self) { return self->event(event); } SoundSourceDisplay::SoundSourceDisplay(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) { m_button1_on = false; m_button2_on = false; m_toggleButton3_on = false; m_toggleButton4_on = false; //get parameters m_buttonsVisible = dereference_cast<bool>(parameters.get("BUTTONS_VISIBLE")); m_pWindow1 = NULL; m_pVbox2 = NULL; m_pToolbar2 = NULL; m_pButton1 = NULL; m_pButton2 = NULL; m_pButton3 = NULL; m_pButton4 = NULL; m_pCanvas = NULL; m_pGroup = NULL; m_pHandle = NULL; m_pBorder = NULL; m_outputID = addOutput("OUTPUT"); } SoundSourceDisplay::~SoundSourceDisplay() { //destroy object cerr<<"destruct"<<endl; gdk_threads_enter(); if (m_pWindow1) { gtk_widget_destroy (m_pWindow1); } gdk_threads_leave(); } void SoundSourceDisplay::initialize() { BufferedNode::initialize(); gdk_threads_enter(); // Add buttons & canvas try { GtkWidget *handlebox; GtkWidget *tmp_toolbar_icon; //create window m_pWindow1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (m_pWindow1), "m_pWindow1", m_pWindow1); gtk_window_set_title (GTK_WINDOW (m_pWindow1), getName().c_str()); gtk_signal_connect (GTK_OBJECT (m_pWindow1), "delete-event", GTK_SIGNAL_FUNC (ignore_delete), NULL); //create vbox m_pVbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_ref (m_pVbox2); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "m_pVbox2", m_pVbox2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (m_pVbox2); gtk_container_add (GTK_CONTAINER (m_pWindow1), m_pVbox2); //create toolbar if user wants to display buttons if (m_buttonsVisible) { //create handlebox handlebox = gtk_handle_box_new (); gtk_widget_ref (handlebox); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "handlebox", handlebox,(GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (handlebox); gtk_box_pack_start (GTK_BOX (m_pVbox2), handlebox, FALSE, FALSE, 0); gtk_handle_box_set_snap_edge (GTK_HANDLE_BOX (handlebox), GTK_POS_LEFT); m_pToolbar2 = gtk_toolbar_new (); gtk_widget_ref (m_pToolbar2); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "m_pToolbar2", m_pToolbar2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (m_pToolbar2); gtk_container_add (GTK_CONTAINER (handlebox), m_pToolbar2); // Joystick button 1 //tmp_toolbar_icon = gnome_stock_pixmap_widget (m_pWindow1, GNOME_STOCK_PIXMAP_DOWN); tmp_toolbar_icon = gtk_button_new_from_stock ("gtk-go-down"); m_pButton1 = gtk_toolbar_append_element (GTK_TOOLBAR (m_pToolbar2), GTK_TOOLBAR_CHILD_BUTTON,NULL, _("STOP"), NULL, NULL,tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (m_pButton1); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "m_pButton1", m_pButton1,(GtkDestroyNotify) gtk_widget_unref); gtk_button_set_relief(GTK_BUTTON(m_pButton1), GTK_RELIEF_NONE); gtk_widget_show (m_pButton1); gtk_signal_connect (GTK_OBJECT (m_pButton1), "pressed",GTK_SIGNAL_FUNC (button1_click),this); gtk_signal_connect (GTK_OBJECT (m_pButton1), "released",GTK_SIGNAL_FUNC (button1_click),this); // Joystick button 2 //tmp_toolbar_icon = gnome_stock_pixmap_widget (m_pWindow1, GNOME_STOCK_PIXMAP_DOWN); tmp_toolbar_icon = gtk_button_new_from_stock ("gtk-go-down"); m_pButton2 = gtk_toolbar_append_element (GTK_TOOLBAR (m_pToolbar2), GTK_TOOLBAR_CHILD_BUTTON,NULL, _("START"), NULL, NULL,tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (m_pButton2); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "m_pButton2", m_pButton2,(GtkDestroyNotify) gtk_widget_unref); gtk_button_set_relief(GTK_BUTTON(m_pButton2), GTK_RELIEF_NONE); gtk_widget_show (m_pButton2); gtk_signal_connect (GTK_OBJECT (m_pButton2), "pressed",GTK_SIGNAL_FUNC (button2_click),this); gtk_signal_connect (GTK_OBJECT (m_pButton2), "released",GTK_SIGNAL_FUNC (button2_click),this); /* // Joystick toggle button 3 tmp_toolbar_icon = gtk_button_new_with_label("T1"); m_pButton3 = gtk_toolbar_append_element (GTK_TOOLBAR (m_pToolbar2), GTK_TOOLBAR_CHILD_TOGGLEBUTTON,NULL, _("WANDER"), NULL, NULL,tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (m_pButton3); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "m_pButton3", m_pButton3,(GtkDestroyNotify) gtk_widget_unref); //show button 3 gtk_widget_show (m_pButton3); // Joystick toggle button 4 tmp_toolbar_icon = gtk_button_new_with_label("T2"); m_pButton4 = gtk_toolbar_append_element (GTK_TOOLBAR (m_pToolbar2), GTK_TOOLBAR_CHILD_TOGGLEBUTTON,NULL, _("AVOID"), NULL, NULL,tmp_toolbar_icon, NULL, NULL); gtk_widget_ref (m_pButton4); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "m_pButton4", m_pButton4,(GtkDestroyNotify) gtk_widget_unref); //show button 4 gtk_widget_show (m_pButton4); */ } //create buttons widgets if required //canvas GtkWidget* canvas1 = gnome_canvas_new(); gtk_widget_pop_colormap (); gtk_widget_pop_visual (); if (m_buttonsVisible) { gtk_window_set_default_size(GTK_WINDOW(m_pWindow1), 450,500); } else { gtk_window_set_default_size(GTK_WINDOW(m_pWindow1), 350,350); } gtk_widget_ref (canvas1); gtk_object_set_data_full (GTK_OBJECT (m_pWindow1), "canvas1", canvas1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (canvas1); gtk_box_pack_start (GTK_BOX (m_pVbox2), canvas1, TRUE, TRUE, 0); m_pCanvas = GNOME_CANVAS(canvas1); gnome_canvas_set_scroll_region(m_pCanvas, 0.0, 0.0, 320.0, 320.0); //canvas group m_pGroup = GNOME_CANVAS_GROUP (gnome_canvas_item_new (gnome_canvas_root(m_pCanvas), gnome_canvas_group_get_type(), "x",0.0, "y",0.0, NULL)); //create joystick border m_pBorder = gnome_canvas_item_new(gnome_canvas_root(m_pCanvas), gnome_canvas_ellipse_get_type(), "x1",0.0, "y1",0.0, "x2",320.0, "y2",320.0, "fill_color_rgba", 0xFF0000FF, "outline_color", "black", NULL); //create joystick handle m_pHandle = gnome_canvas_item_new(gnome_canvas_root(m_pCanvas), gnome_canvas_ellipse_get_type(), "x1",140.0, "y1",140.0, "x2",180.0, "y2",180.0, "fill_color_rgba", 0x000000FF, "outline_color", "black", NULL); gtk_signal_connect(GTK_OBJECT(m_pHandle), "event", (GtkSignalFunc) handle_event_handler, this); //display window gtk_widget_show(m_pWindow1); } catch (BaseException *e) { gdk_threads_leave(); throw e->add(new NodeException(this, "Exception caught in SoundSourceDisplay::initialize", __FILE__, __LINE__)); } gdk_threads_leave(); } gint SoundSourceDisplay::event(GdkEvent *event) { double item_x, item_y; static double item_old_x = 0; static double item_old_y = 0; item_x = event->button.x; item_y = event->button.y; //gnome_canvas_item_w2i(item->parent, &item_x, &item_y); switch (event->type) { case GDK_BUTTON_PRESS: switch(event->button.button) { case 1: //printf("button1 clicked for virtual joystick : (%f, %f)\n",item_x,item_y); item_old_x = item_x; item_old_y = item_y; break; default: break; } break; case GDK_MOTION_NOTIFY: if (event->motion.state & GDK_BUTTON1_MASK) { //gnome_canvas_item_move (m_pHandle, item_x - item_old_x, item_y - item_old_y); if (sqrt(pow(item_x - 160.0,2) + pow(item_y - 160.0,2)) <= 160.0) { //inside circle gnome_canvas_item_set (m_pHandle, "x1",item_x - 20.0, "y1",item_y - 20.0, "x2",item_x + 20.0, "y2",item_y + 20.0, NULL); } else { //outside circle double dx = 160.0 - item_x; double dy = 160.0 - item_y; double m = dy / dx; double b = (item_y) - (m * item_x); //printf("(dx %f) (dy %f) (m %f) (b %f)\n", dx, dy,m,b); double x_pos = sqrt((25600 - b * b) / (1 + m * m)); double x_neg = - x_pos; //printf("(xpos : %f) (xneg : %f)\n",x_pos,x_neg); } gnome_canvas_item_request_update(m_pHandle); } break; case GDK_BUTTON_RELEASE: switch(event->button.button) { case 1: gnome_canvas_item_set (m_pHandle, "x1",140.0, "y1",140.0, "x2",180.0, "y2",180.0, NULL); gnome_canvas_item_request_update(m_pHandle); break; default: break; } break; default: break; } item_old_x = item_x; item_old_y = item_y; return FALSE; } void SoundSourceDisplay::calculate(int output_id, int count, Buffer &out) { gdk_threads_enter(); double x1,y1,x2,y2; gnome_canvas_item_get_bounds(m_pHandle,&x1,&y1,&x2,&y2); int size = 0; if (m_buttonsVisible) { size = 4; } else { size = 2; } Vector<float> *data = Vector<float>::alloc(size); (*data)[0] = ((x2 + x1) / 2.0) - 160.0; (*data)[1] = 160.0 - ((y2 + y1) / 2.0); if (m_buttonsVisible) { (*data)[2] = (float) m_button1_on; (*data)[3] = (float) m_button2_on; //(*data)[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_pButton3)); //(*data)[5] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(m_pButton4)); } out[count] = ObjectRef(data); gdk_threads_leave(); } bool SoundSourceDisplay::change_button_status(int button_id) { switch (button_id) { case 1: m_button1_on = !m_button1_on; return m_button1_on; break; case 2: m_button2_on = !m_button2_on; return m_button2_on; break; default: throw new GeneralException("Unknown button id",__FILE__,__LINE__); return false; break; } return false; } }//namespace RobotFlow |
From: Dominic L. <dom...@us...> - 2005-11-17 13:22:48
|
It's already fixed in the CVS. Dominic On Wed, 2005-16-11 at 21:10 +0000, Nicolas Paquin wrote: --=20 Dominic L=E9tourneau, ing., M.Sc.A. Universit=E9 de Sherbrooke, Qu=E9bec, Canada. D=E9partement de g=E9nie =E9lectrique et de g=E9nie informatique LABORIUS (http://www.gel.usherbrooke.ca/laborius) Courriel : Dom...@US... |
From: Nicolas P. <Nic...@US...> - 2005-11-17 02:10:48
|
Hi, I compiled RobotFlow with Player support, but player toolbox didn't compile. I think the is something missing the the RobotFlow Makefile.am at line 18. The line is: SUBDIRS = Pioneer2 Generic Behaviors Audio Vision Control Devices Probes FSM $(MARIE_DIR) $(OPENCV_DIR) shouldn't it be: SUBDIRS = Pioneer2 Generic Behaviors Audio Vision Control Devices Probes FSM $(MARIE_DIR) $(OPENCV_DIR) $(PLAYER_DIR) thanks for fixing it ! Nicolas Paquin |
Update of /cvsroot/robotflow/RobotFlow/Vision/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2023/Vision/src Modified Files: RGB152GREY.cc RGB242RGB15.cc RGBMerge.cc RGBSplit.cc RectAnalyser.cc RectBoundaries.cc Scale.cc ScalePrint.cc SymbolLoad.cc Log Message: fixed log2 problems Index: RectAnalyser.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/RectAnalyser.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** RectAnalyser.cc 29 Mar 2005 15:20:48 -0000 1.4 --- RectAnalyser.cc 15 Nov 2005 13:19:08 -0000 1.5 *************** *** 22,26 **** #include "CRect.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 22,25 ---- Index: RGBSplit.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/RGBSplit.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** RGBSplit.cc 29 Mar 2005 15:20:48 -0000 1.6 --- RGBSplit.cc 15 Nov 2005 13:19:08 -0000 1.7 *************** *** 20,24 **** #include "BufferedNode.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 20,23 ---- Index: SymbolLoad.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/SymbolLoad.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SymbolLoad.cc 29 Mar 2005 15:20:48 -0000 1.4 --- SymbolLoad.cc 15 Nov 2005 13:19:08 -0000 1.5 *************** *** 22,26 **** #include "CRect.h" #include <math.h> - #include "misc.h" #include "net_types.h" --- 22,25 ---- Index: Scale.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/Scale.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Scale.cc 29 Mar 2005 15:20:48 -0000 1.5 --- Scale.cc 15 Nov 2005 13:19:08 -0000 1.6 *************** *** 22,26 **** #include "CRect.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 22,25 ---- Index: RGBMerge.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/RGBMerge.cc,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** RGBMerge.cc 29 Mar 2005 15:20:48 -0000 1.7 --- RGBMerge.cc 15 Nov 2005 13:19:08 -0000 1.8 *************** *** 20,24 **** #include "BufferedNode.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 20,23 ---- Index: ScalePrint.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/ScalePrint.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ScalePrint.cc 29 Mar 2005 15:20:48 -0000 1.4 --- ScalePrint.cc 15 Nov 2005 13:19:08 -0000 1.5 *************** *** 21,25 **** #include "CRect.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 21,24 ---- Index: RectBoundaries.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/RectBoundaries.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** RectBoundaries.cc 29 Mar 2005 15:20:48 -0000 1.4 --- RectBoundaries.cc 15 Nov 2005 13:19:08 -0000 1.5 *************** *** 22,26 **** #include "CRect.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 22,25 ---- Index: RGB152GREY.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/RGB152GREY.cc,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** RGB152GREY.cc 29 Mar 2005 15:20:48 -0000 1.6 --- RGB152GREY.cc 15 Nov 2005 13:19:08 -0000 1.7 *************** *** 20,24 **** #include "BufferedNode.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 20,23 ---- Index: RGB242RGB15.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/RGB242RGB15.cc,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** RGB242RGB15.cc 29 Mar 2005 15:20:48 -0000 1.5 --- RGB242RGB15.cc 15 Nov 2005 13:19:08 -0000 1.6 *************** *** 20,24 **** #include "BufferedNode.h" #include <math.h> - #include "misc.h" #include "net_types.h" #include "Vector.h" --- 20,23 ---- |
From: Dominic L. <ma...@us...> - 2005-11-15 13:19:17
|
Update of /cvsroot/robotflow/RobotFlow/Devices/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2023/Devices/src Modified Files: CANON_VCC4.cc EVID30.cc IMU400CC_200.cc LaserDevice.cc SICKLMS200.cc SNCRZ30RS232.cc Log Message: fixed log2 problems Index: SNCRZ30RS232.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/SNCRZ30RS232.cc,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** SNCRZ30RS232.cc 19 Sep 2005 16:06:12 -0000 1.8 --- SNCRZ30RS232.cc 15 Nov 2005 13:19:08 -0000 1.9 *************** *** 22,26 **** #include "SerialDriver.h" #include "BaseException.h" - #include "misc.h" #include <fcntl.h> #include <stdio.h> --- 22,25 ---- *************** *** 37,40 **** --- 36,40 ---- #include "pseudosem.h" #include "SocketStream.h" + #include "misc.h" using namespace std; Index: SICKLMS200.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/SICKLMS200.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SICKLMS200.cc 29 Mar 2005 15:20:39 -0000 1.4 --- SICKLMS200.cc 15 Nov 2005 13:19:08 -0000 1.5 *************** *** 14,18 **** #include "BaseException.h" #include "BufferedNode.h" - #include "misc.h" #include "pseudosem.h" #include "Vector.h" --- 14,17 ---- Index: EVID30.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/EVID30.cc,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** EVID30.cc 29 Mar 2005 15:20:38 -0000 1.9 --- EVID30.cc 15 Nov 2005 13:19:08 -0000 1.10 *************** *** 22,26 **** #include "SerialDriver.h" #include "BaseException.h" - #include "misc.h" #include <fcntl.h> #include <stdio.h> --- 22,25 ---- *************** *** 36,39 **** --- 35,39 ---- #include <sched.h> #include "pseudosem.h" + #include <misc.h> using namespace std; Index: LaserDevice.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/LaserDevice.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** LaserDevice.cc 29 Mar 2005 15:20:39 -0000 1.4 --- LaserDevice.cc 15 Nov 2005 13:19:08 -0000 1.5 *************** *** 13,17 **** #include "BaseException.h" - #include "misc.h" #include "pseudosem.h" --- 13,16 ---- Index: CANON_VCC4.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/CANON_VCC4.cc,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** CANON_VCC4.cc 29 Mar 2005 15:20:38 -0000 1.7 --- CANON_VCC4.cc 15 Nov 2005 13:19:08 -0000 1.8 *************** *** 22,26 **** #include "SerialDriver.h" #include "BaseException.h" - #include "misc.h" #include <fcntl.h> #include <stdio.h> --- 22,25 ---- Index: IMU400CC_200.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Devices/src/IMU400CC_200.cc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** IMU400CC_200.cc 26 Apr 2005 14:25:48 -0000 1.2 --- IMU400CC_200.cc 15 Nov 2005 13:19:08 -0000 1.3 *************** *** 22,26 **** #include "SerialDriver.h" #include "BaseException.h" - #include "misc.h" #include <fcntl.h> #include <stdio.h> --- 22,25 ---- |
From: clement r. <kl...@us...> - 2005-11-08 19:17:28
|
Update of /cvsroot/robotflow/RobotFlow/MARIE/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6274/MARIE/src Modified Files: newMarieCommandBehavior.cpp Log Message: add a empty vector check Index: newMarieCommandBehavior.cpp =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/MARIE/src/newMarieCommandBehavior.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** newMarieCommandBehavior.cpp 12 Sep 2005 21:31:19 -0000 1.10 --- newMarieCommandBehavior.cpp 8 Nov 2005 19:17:15 -0000 1.11 *************** *** 86,136 **** { VECTOR_OBJECTREF_PTR vector = vectorPtr; ! CommandBehavior *cb = new CommandBehavior(); ! ! for(unsigned int i = 0; i < (*vector).size(); i++) { ! ObjectRef elementPtr = (*vector)[i]; ! if(!elementPtr->isNil()) { ! COMPOSITE_TYPE_PTR element = elementPtr; ! ! ObjectRef namePtr = element->get("BEHAVIOR_NAME"); ! ObjectRef activationPtr = element->get("BEHAVIOR_ACTIVATION"); ! ObjectRef exploitationPtr = element->get("BEHAVIOR_EXPLOITATION"); ! ObjectRef parametersPtr = element->get("BEHAVIOR_PARAMETERS"); ! ObjectRef resultsPtr = element->get("BEHAVIOR_RESULTS"); ! if(!namePtr->isNil()) { ! RCPtr<String> name = namePtr; ! ! if(!activationPtr->isNil()) ! { ! RCPtr<Bool> activation = activationPtr; ! cb->setActivation(*name, *activation); ! } ! ! if(!exploitationPtr->isNil()) ! { ! RCPtr<Bool> exploitation = exploitationPtr; ! cb->setExploitation(*name, *exploitation); ! } ! if(!parametersPtr->isNil()) ! { ! RCPtr<String> parameters = parametersPtr; ! cb->setParameters(*name, *parameters); ! } ! if(!resultsPtr->isNil()) { ! RCPtr<String> results = resultsPtr; ! cb->setResults(*name, *results); } } } } - out[count] = ObjectRef(new MarieObject(cb)); } else --- 86,143 ---- { VECTOR_OBJECTREF_PTR vector = vectorPtr; ! if (!vector->vempty()) { ! CommandBehavior *cb = new CommandBehavior(); ! for(unsigned int i = 0; i < (*vector).size(); i++) { ! ObjectRef elementPtr = (*vector)[i]; ! if(!elementPtr->isNil()) { ! COMPOSITE_TYPE_PTR element = elementPtr; ! ObjectRef namePtr = element->get("BEHAVIOR_NAME"); ! ObjectRef activationPtr = element->get("BEHAVIOR_ACTIVATION"); ! ObjectRef exploitationPtr = element->get("BEHAVIOR_EXPLOITATION"); ! ObjectRef parametersPtr = element->get("BEHAVIOR_PARAMETERS"); ! ObjectRef resultsPtr = element->get("BEHAVIOR_RESULTS"); ! if(!namePtr->isNil()) { ! RCPtr<String> name = namePtr; ! ! if(!activationPtr->isNil()) ! { ! RCPtr<Bool> activation = activationPtr; ! cb->setActivation(*name, *activation); ! } ! ! if(!exploitationPtr->isNil()) ! { ! RCPtr<Bool> exploitation = exploitationPtr; ! cb->setExploitation(*name, *exploitation); ! } ! ! if(!parametersPtr->isNil()) ! { ! RCPtr<String> parameters = parametersPtr; ! cb->setParameters(*name, *parameters); ! } ! ! if(!resultsPtr->isNil()) ! { ! RCPtr<String> results = resultsPtr; ! cb->setResults(*name, *results); ! } } } } + out[count] = ObjectRef(new MarieObject(cb)); + } + else + { + out[count] = ObjectRef(new MarieObject(new DataNull())); } } else |
From: clement r. <kl...@us...> - 2005-11-07 21:08:11
|
Update of /cvsroot/robotflow/RobotFlow/MARIE/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8937 Modified Files: Makefile.am Log Message: add gripper and list data handling Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/MARIE/src/Makefile.am,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** Makefile.am 12 Sep 2005 22:43:47 -0000 1.29 --- Makefile.am 7 Nov 2005 21:08:00 -0000 1.30 *************** *** 7,11 **** ! lib_LTLIBRARIES = libRFMarie.la libRFMarie_la_SOURCES = \ --- 7,11 ---- ! lib_LTLIBRARIES = libRFMarie.la libRFMarie_la_SOURCES = \ *************** *** 24,27 **** --- 24,28 ---- newMarieDataMap.cpp \ newMarieDataNull.cpp \ + newMarieDataGripper.cpp \ newMarieRequestSystem.cpp \ newMarieCommandBehavior.cpp \ *************** *** 29,32 **** --- 30,35 ---- newMarieCommandMotor.cpp \ newMarieCommandJoystick.cpp \ + newMarieCommandGripper.cpp \ + newMarieDataList.cpp \ extractMarieDataLaser.cpp \ extractMarieDataLocalisation.cpp \ *************** *** 38,41 **** --- 41,45 ---- extractMarieDataBumper.cpp \ extractMarieDataMap.cpp \ + extractMarieDataGripper.cpp \ extractMarieRequestSystem.cpp \ extractMarieCommandBehavior.cpp \ *************** *** 43,46 **** --- 47,52 ---- extractMarieCommandMotor.cpp \ extractMarieCommandJoystick.cpp \ + extractMarieCommandGripper.cpp \ + extractMarieDataList.cpp \ isMarieDataNull.cpp *************** *** 51,55 **** (cd $(libdir); rm -f RFMarie.tlb; ln -s libRFMarie.so RFMarie.tlb) - libRFMarie_la_LDFLAGS = -release $(LT_RELEASE) $(OVERFLOW_LIB) \ $(XML2_LIB) $(MARIE_LIBS) --- 57,60 ---- |
From: clement r. <kl...@us...> - 2005-11-07 20:33:23
|
Update of /cvsroot/robotflow/RobotFlow/MARIE/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31013 Added Files: extractMarieCommandGripper.cpp extractMarieDataGripper.cpp newMarieCommandGripper.cpp newMarieDataGripper.cpp CommandGripper.n DataGripper.n DataList.n UT.n Log Message: initial add --- NEW FILE: newMarieCommandGripper.cpp --- /* * MARIE - Mobile and Autonomous Robotics Integration Environment * Copyright (C) 2004 Dominic Letourneau / Carle Cote / Clement Raievsky * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * You can contact MARIE development team at http://marie.sourceforge.net */ #include <sstream> #include <string> #include <map> #include "MarieObject.h" #include "CommandGripper.h" #include "DataNull.h" #include "BufferedNode.h" #include "CompositeType.h" using namespace std; using namespace FD; namespace marie { //forward declaration class newMarieCommandGripper; DECLARE_NODE(newMarieCommandGripper) /*Node * * @name newMarieCommandGripper * @category RobotFlow:MARIE:COMMAND * @description Create an object of type MarieObject containing a CommandGripper data * * @input_name GRIPPER_COMPOSITE * @input_type CompositeType * @input_description Composite <PAD_OPEN <Bool>, PAD_CLOSE <Bool>, PAD_STOP <Bool>, LIFT_UP <Bool>, LIFT_DOWN <Bool>, LIFT_STOP <Bool>, STORE <Bool>, DEPLOY <Bool>, HALT <Bool>> -> Gripper State, all state variables are optional. Only present ones will be changed. * * @output_name COMMAND_GRIPPER * @output_description Output MarieObject containing a DataGripper data * @output_type MarieObject * END*/ class newMarieCommandGripper : public BufferedNode { typedef RCPtr<CompositeType> COMPOSITE_TYPE_PTR; private: //intputs int m_GripperCompositeID; //outputs int m_GripperCommandID; public: newMarieCommandGripper(string nodeName, ParameterSet params) : BufferedNode(nodeName,params) { //inputs m_GripperCompositeID = addInput("GRIPPER_COMPOSITE"); //outputs m_GripperCommandID = addOutput("COMMAND_GRIPPER"); } void calculate(int output_id, int count, Buffer &out) { ObjectRef compositePtr = getInput(m_GripperCompositeID,count); if (!compositePtr->isNil()) { COMPOSITE_TYPE_PTR composite = compositePtr; CommandGripper *commandGripper = new CommandGripper(); std::map<std::string, ObjectRef> commandState; commandState["PAD_OPEN"] = nilObject; commandState["PAD_CLOSE"] = nilObject; commandState["PAD_STOP"] = nilObject; commandState["LIFT_UP"] = nilObject; commandState["LIFT_DOWN"] = nilObject; commandState["LIFT_STOP"] = nilObject; commandState["STORE"] = nilObject; commandState["DEPLOY"] = nilObject; commandState["HALT"] = nilObject; std::map<std::string, ObjectRef>::iterator stateIt = commandState.begin(); for(;stateIt != commandState.end() ; stateIt++) { try { stateIt->second = composite->get(stateIt->first); } catch(...) {} } if (!commandState["PAD_OPEN"]->isNil()) { RCPtr<Bool> padOpen = commandState["PAD_OPEN"]; bool value = *padOpen; if (value) { commandGripper->open(); } } if (!commandState["PAD_CLOSE"]->isNil()) { RCPtr<Bool> padClose = commandState["PAD_CLOSE"]; bool value = *padClose; if (value) { commandGripper->close(); } } if (!commandState["PAD_STOP"]->isNil()) { RCPtr<Bool> padStop = commandState["PAD_STOP"]; bool value = *padStop; if (value) { commandGripper->stop(); } } if (!commandState["LIFT_UP"]->isNil()) { RCPtr<Bool> liftUp = commandState["LIFT_UP"]; bool value = *liftUp; if (value) { commandGripper->liftUp(); } } if (!commandState["LIFT_DOWN"]->isNil()) { RCPtr<Bool> liftDown = commandState["LIFT_DOWN"]; bool value = *liftDown; if (value) { commandGripper->liftDown(); } } if (!commandState["LIFT_STOP"]->isNil()) { RCPtr<Bool> liftStop = commandState["LIFT_STOP"]; bool value = *liftStop; if (value) { commandGripper->liftStop(); } } if (!commandState["STORE"]->isNil()) { RCPtr<Bool> store = commandState["STORE"]; bool value = *store; if (value) { commandGripper->store(); } } if (!commandState["DEPLOY"]->isNil()) { RCPtr<Bool> deploy = commandState["DEPLOY"]; bool value = *deploy; if (value) { commandGripper->deploy(); } } if (!commandState["HALT"]->isNil()) { RCPtr<Bool> halt = commandState["HALT"]; bool value = *halt; if (value) { commandGripper->halt(); } } out[count] = ObjectRef(new MarieObject(commandGripper)); } else { out[count] = ObjectRef(new MarieObject(new DataNull())); } } };//class newMarieCommandGripper }//namespace marie --- NEW FILE: UT.n --- #!/usr/bin/env batchflow <?xml version="1.0"?> <Document> <Network type="subnet" name="MAIN"> <Node name="node_LOOP0_1" type="LOOP0" x="-363.000000" y="-90.000000"> <Parameter name="DOWHILE" type="bool" value="" description="No description available"/> </Node> <NetOutput name="OUTPUT" node="node_LOOP0_1" terminal="OUTPUT" object_type="" description="The output = The input"/> <Note x="0" y="0" visible="0" text="Created with FlowDesigner 0.9.0"/> </Network> <Network type="iterator" name="LOOP0"> <Node name="node_Constant_1" type="Constant" x="105.000000" y="-33.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_1" type="NOP" x="829.000000" y="92.000000"/> <Node name="node_DataMap_1" type="DataMap" x="117.500000" y="46.000000"/> <Node name="node_IF_1" type="IF" x="255.500000" y="85.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_TextProbe_1" type="TextProbe" x="713.500000" y="91.000000"> <Parameter name="BREAK_AT" type="int" value="1" description="If set, the probe runs until (count = BREAK_AT)"/> <Parameter name="SHOW" type="bool" value="true" description="Whether or not to show the the data by default"/> <Parameter name="SKIP" type="int" value="" description="Count increment for each "Next""/> <Parameter name="PROBE_NAME" type="string" value="results" description="Name (title) of the probe"/> </Node> <Node name="node_MakeComposite_1" type="MakeComposite" x="282.500000" y="29.000000"/> <Node name="node_AppendComposite_1" type="AppendComposite" x="516.500000" y="90.000000"> <Parameter name="OVERRIDE" type="bool" value="true" description="if true, insertion of new object ref with key existing in given composite will override existing object ref"/> </Node> <Node name="node_Constant_2" type="Constant" x="113.000000" y="85.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_Constant_3" type="Constant" x="114.000000" y="108.000000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Link from="node_DataMap_1" output="OUTPUT" to="node_IF_1" input="COND"/> <Link from="node_TextProbe_1" output="OUTPUT" to="node_NOP_1" input="INPUT"/> <Link from="node_MakeComposite_1" output="OUTPUT" to="node_AppendComposite_1" input="COMPOSITE"/> <Link from="node_IF_1" output="OUTPUT" to="node_AppendComposite_1" input="DataMap"/> <Link from="node_AppendComposite_1" output="OUTPUT" to="node_TextProbe_1" input="INPUT"/> <Link from="node_Constant_2" output="VALUE" to="node_IF_1" input="THEN"/> <Link from="node_Constant_3" output="VALUE" to="node_IF_1" input="ELSE"/> <NetCondition name="CONDITION" node="node_Constant_1" terminal="VALUE"/> <NetOutput name="OUTPUT" node="node_NOP_1" terminal="OUTPUT" object_type="any" description="The output = The input"/> <Note x="0" y="0" visible="0" text="Created with FlowDesigner 0.9.0"/> </Network> <Network type="subnet" name="DataMap"> <Node name="node_NOP_1" type="NOP" x="566.000000" y="139.000000"/> <Node name="node_MakeComposite_1" type="MakeComposite" x="-440.000000" y="8.000000"/> <Node name="node_Constant_1" type="Constant" x="-637.000000" y="78.000000"> <Parameter name="VALUE" type="string" value="412" description="The value"/> </Node> <Node name="node_newMarieDataMap_1" type="newMarieDataMap" x="-284.000000" y="9.000000"/> <Node name="node_Constant_2" type="Constant" x="-640.000000" y="152.000000"> <Parameter name="VALUE" type="int" value="413" description="The value"/> </Node> <Node name="node_extractMarieDataMap_1" type="extractMarieDataMap" x="-116.000000" y="9.000000"/> <Node name="node_GetComposite_1" type="GetComposite" x="42.000000" y="9.000000"/> <Node name="node_Equal_1" type="Equal" x="284.000000" y="69.000000"/> <Node name="node_AND_1" type="AND" x="491.000000" y="139.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_Equal_2" type="Equal" x="351.000000" y="146.000000"/> <Node name="node_ToInt_1" type="ToInt" x="229.000000" y="106.000000"/> <Link from="node_Constant_1" output="VALUE" to="node_MakeComposite_1" input="essai"/> <Link from="node_Constant_2" output="VALUE" to="node_MakeComposite_1" input="autre"/> <Link from="node_MakeComposite_1" output="OUTPUT" to="node_newMarieDataMap_1" input="COMPOSITE"/> <Link from="node_newMarieDataMap_1" output="DATA_MAP" to="node_extractMarieDataMap_1" input="DATA_MAP"/> <Link from="node_extractMarieDataMap_1" output="COMPOSITE" to="node_GetComposite_1" input="INPUT"/> <Link from="node_GetComposite_1" output="essai" to="node_Equal_1" input="INPUT1"/> <Link from="node_Constant_1" output="VALUE" to="node_Equal_1" input="INPUT2"/> <Link from="node_Equal_1" output="OUTPUT" to="node_AND_1" input="INPUT1"/> <Link from="node_Equal_2" output="OUTPUT" to="node_AND_1" input="INPUT2"/> <Link from="node_ToInt_1" output="OUTPUT" to="node_Equal_2" input="INPUT1"/> <Link from="node_Constant_2" output="VALUE" to="node_Equal_2" input="INPUT2"/> <Link from="node_GetComposite_1" output="autre" to="node_ToInt_1" input="INPUT"/> <Link from="node_AND_1" output="OUTPUT" to="node_NOP_1" input="INPUT"/> <NetOutput name="OUTPUT" node="node_NOP_1" terminal="OUTPUT" object_type="any" description="The output = The input"/> <Note x="0" y="0" visible="0" text="Created with FlowDesigner 0.9.0"/> </Network> </Document> --- NEW FILE: DataGripper.n --- #!/usr/bin/env batchflow <?xml version="1.0"?> <Document> <Network type="subnet" name="MAIN"> <Node name="node_MakeComposite_1" type="MakeComposite" x="-782.000000" y="32.000000"/> <Node name="node_Constant_1" type="Constant" x="-1070.500000" y="-65.500000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_2" type="NOP" x="1231.000000" y="402.000000"/> <Node name="node_Constant_2" type="Constant" x="338.000000" y="168.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_OPENED comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_1" type="IF" x="530.000000" y="151.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_1" type="Throw" x="418.000000" y="166.500000"/> <Node name="node_NOP_6" type="NOP" x="-911.000000" y="149.000000"/> <Node name="node_Constant_3" type="Constant" x="-1071.000000" y="-38.000000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Node name="node_Constant_4" type="Constant" x="335.000000" y="245.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_CLOSED comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_2" type="IF" x="528.000000" y="228.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_2" type="Throw" x="415.000000" y="243.500000"/> <Node name="node_NOP_7" type="NOP" x="-911.000000" y="175.500000"/> <Node name="node_Constant_5" type="Constant" x="-1070.500000" y="-9.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_8" type="NOP" x="-910.500000" y="203.000000"/> <Node name="node_Constant_6" type="Constant" x="342.000000" y="314.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_MOVING comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_3" type="IF" x="528.000000" y="297.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_3" type="Throw" x="422.000000" y="312.500000"/> <Node name="node_Constant_7" type="Constant" x="-1072.500000" y="18.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_Constant_8" type="Constant" x="345.000000" y="378.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_ERROR comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_4" type="IF" x="529.000000" y="361.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_4" type="Throw" x="425.000000" y="376.500000"/> <Node name="node_NOP_13" type="NOP" x="-912.000000" y="229.000000"/> <Node name="node_Constant_9" type="Constant" x="-1072.500000" y="44.500000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Node name="node_NOP_14" type="NOP" x="-911.500000" y="255.000000"/> <Node name="node_Constant_10" type="Constant" x="344.000000" y="446.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_UP comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_5" type="IF" x="529.000000" y="429.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_5" type="Throw" x="425.000000" y="444.500000"/> <Node name="node_Constant_11" type="Constant" x="-1072.000000" y="71.000000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Node name="node_Constant_12" type="Constant" x="-1073.500000" y="99.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_17" type="NOP" x="-908.000000" y="308.000000"/> <Node name="node_NOP_18" type="NOP" x="-910.000000" y="282.000000"/> <Node name="node_Constant_13" type="Constant" x="344.000000" y="511.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_DOWN comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_6" type="IF" x="528.000000" y="494.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_6" type="Throw" x="424.000000" y="509.500000"/> <Node name="node_Constant_14" type="Constant" x="344.000000" y="577.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_MOVING comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_7" type="IF" x="528.000000" y="560.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_7" type="Throw" x="424.000000" y="575.500000"/> <Node name="node_Constant_15" type="Constant" x="-1073.000000" y="125.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_Constant_16" type="Constant" x="345.000000" y="646.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_ERROR comparison while testing DataGripper" description="The value"/> </Node> <Node name="node_IF_8" type="IF" x="529.000000" y="629.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_8" type="Throw" x="425.000000" y="644.500000"/> <Node name="node_NOP_25" type="NOP" x="-909.000000" y="334.500000"/> <Node name="node_AND_11" type="AND" x="641.000000" y="189.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_12" type="AND" x="767.000000" y="261.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_13" type="AND" x="642.000000" y="327.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_14" type="AND" x="643.000000" y="462.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_15" type="AND" x="644.000000" y="597.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_16" type="AND" x="904.000000" y="402.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_17" type="AND" x="766.000000" y="534.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_Catch_1" type="Catch" x="1056.000000" y="410.000000"/> <Node name="node_extractMarieDataGripper_1" type="extractMarieDataGripper" x="-444.000000" y="30.500000"/> <Node name="node_newMarieDataGripper_1" type="newMarieDataGripper" x="-625.000000" y="32.500000"/> <Node name="node_GetComposite_2" type="GetComposite" x="-266.000000" y="29.500000"/> <Node name="node_BOOL_EQUAL_1" type="BOOL_EQUAL" x="241.500000" y="137.500000"/> <Node name="node_BOOL_EQUAL_2" type="BOOL_EQUAL" x="242.500000" y="211.500000"/> <Node name="node_BOOL_EQUAL_3" type="BOOL_EQUAL" x="247.500000" y="284.500000"/> <Node name="node_BOOL_EQUAL_4" type="BOOL_EQUAL" x="245.500000" y="345.500000"/> <Node name="node_BOOL_EQUAL_5" type="BOOL_EQUAL" x="244.500000" y="415.500000"/> <Node name="node_BOOL_EQUAL_6" type="BOOL_EQUAL" x="246.500000" y="479.500000"/> <Node name="node_BOOL_EQUAL_7" type="BOOL_EQUAL" x="247.500000" y="545.500000"/> <Node name="node_BOOL_EQUAL_8" type="BOOL_EQUAL" x="248.500000" y="614.500000"/> <Link from="node_Throw_1" output="OUTPUT" to="node_IF_1" input="ELSE"/> <Link from="node_Constant_2" output="VALUE" to="node_Throw_1" input="INPUT"/> <Link from="node_Constant_1" output="VALUE" to="node_NOP_6" input="INPUT"/> <Link from="node_Throw_2" output="OUTPUT" to="node_IF_2" input="ELSE"/> <Link from="node_Constant_4" output="VALUE" to="node_Throw_2" input="INPUT"/> <Link from="node_Constant_3" output="VALUE" to="node_NOP_7" input="INPUT"/> <Link from="node_Constant_5" output="VALUE" to="node_NOP_8" input="INPUT"/> <Link from="node_Throw_3" output="OUTPUT" to="node_IF_3" input="ELSE"/> <Link from="node_Constant_6" output="VALUE" to="node_Throw_3" input="INPUT"/> <Link from="node_Throw_4" output="OUTPUT" to="node_IF_4" input="ELSE"/> <Link from="node_Constant_8" output="VALUE" to="node_Throw_4" input="INPUT"/> <Link from="node_Constant_7" output="VALUE" to="node_NOP_13" input="INPUT"/> <Link from="node_Constant_9" output="VALUE" to="node_NOP_14" input="INPUT"/> <Link from="node_Throw_5" output="OUTPUT" to="node_IF_5" input="ELSE"/> <Link from="node_Constant_10" output="VALUE" to="node_Throw_5" input="INPUT"/> <Link from="node_Constant_12" output="VALUE" to="node_NOP_17" input="INPUT"/> <Link from="node_Constant_11" output="VALUE" to="node_NOP_18" input="INPUT"/> <Link from="node_Throw_6" output="OUTPUT" to="node_IF_6" input="ELSE"/> <Link from="node_Constant_13" output="VALUE" to="node_Throw_6" input="INPUT"/> <Link from="node_Throw_7" output="OUTPUT" to="node_IF_7" input="ELSE"/> <Link from="node_Constant_14" output="VALUE" to="node_Throw_7" input="INPUT"/> <Link from="node_Throw_8" output="OUTPUT" to="node_IF_8" input="ELSE"/> <Link from="node_Constant_16" output="VALUE" to="node_Throw_8" input="INPUT"/> <Link from="node_AND_11" output="OUTPUT" to="node_AND_12" input="INPUT1"/> <Link from="node_AND_13" output="OUTPUT" to="node_AND_12" input="INPUT2"/> <Link from="node_AND_12" output="OUTPUT" to="node_AND_16" input="INPUT1"/> <Link from="node_AND_17" output="OUTPUT" to="node_AND_16" input="INPUT2"/> <Link from="node_AND_14" output="OUTPUT" to="node_AND_17" input="INPUT1"/> <Link from="node_AND_15" output="OUTPUT" to="node_AND_17" input="INPUT2"/> <Link from="node_IF_1" output="OUTPUT" to="node_AND_11" input="INPUT1"/> <Link from="node_IF_2" output="OUTPUT" to="node_AND_11" input="INPUT2"/> <Link from="node_IF_3" output="OUTPUT" to="node_AND_13" input="INPUT1"/> <Link from="node_IF_4" output="OUTPUT" to="node_AND_13" input="INPUT2"/> <Link from="node_IF_5" output="OUTPUT" to="node_AND_14" input="INPUT1"/> <Link from="node_IF_6" output="OUTPUT" to="node_AND_14" input="INPUT2"/> <Link from="node_IF_7" output="OUTPUT" to="node_AND_15" input="INPUT1"/> <Link from="node_IF_8" output="OUTPUT" to="node_AND_15" input="INPUT2"/> <Link from="node_Catch_1" output="EXCEPTION" to="node_Catch_1" input="CATCH"/> <Link from="node_Catch_1" output="OUTPUT" to="node_NOP_2" input="INPUT"/> <Link from="node_MakeComposite_1" output="OUTPUT" to="node_newMarieDataGripper_1" input="GRIPPER_COMPOSITE"/> <Link from="node_newMarieDataGripper_1" output="DATA_GRIPPER" to="node_extractMarieDataGripper_1" input="DATA_GRIPPER"/> <Link from="node_extractMarieDataGripper_1" output="GRIPPER_COMPOSITE" to="node_GetComposite_2" input="INPUT"/> <Link from="node_Constant_1" output="VALUE" to="node_MakeComposite_1" input="PAD_OPENED"/> <Link from="node_Constant_3" output="VALUE" to="node_MakeComposite_1" input="PAD_CLOSED"/> <Link from="node_Constant_5" output="VALUE" to="node_MakeComposite_1" input="PAD_MOVING"/> <Link from="node_Constant_7" output="VALUE" to="node_MakeComposite_1" input="PAD_ERROR"/> <Link from="node_Constant_9" output="VALUE" to="node_MakeComposite_1" input="LIFT_UP"/> <Link from="node_Constant_11" output="VALUE" to="node_MakeComposite_1" input="LIFT_DOWN"/> <Link from="node_Constant_12" output="VALUE" to="node_MakeComposite_1" input="LIFT_MOVING"/> <Link from="node_Constant_15" output="VALUE" to="node_MakeComposite_1" input="LIFT_ERROR"/> <Link from="node_AND_16" output="OUTPUT" to="node_Catch_1" input="INPUT"/> <Link from="node_GetComposite_2" output="PAD_OPENED" to="node_BOOL_EQUAL_1" input="INPUT_1"/> <Link from="node_NOP_6" output="OUTPUT" to="node_BOOL_EQUAL_1" input="INPUT_0"/> <Link from="node_BOOL_EQUAL_1" output="OUTPUT" to="node_IF_1" input="COND"/> <Link from="node_BOOL_EQUAL_1" output="OUTPUT" to="node_IF_1" input="THEN"/> <Link from="node_BOOL_EQUAL_2" output="OUTPUT" to="node_IF_2" input="COND"/> <Link from="node_BOOL_EQUAL_2" output="OUTPUT" to="node_IF_2" input="THEN"/> <Link from="node_GetComposite_2" output="PAD_CLOSED" to="node_BOOL_EQUAL_2" input="INPUT_1"/> <Link from="node_NOP_7" output="OUTPUT" to="node_BOOL_EQUAL_2" input="INPUT_0"/> <Link from="node_GetComposite_2" output="PAD_MOVING" to="node_BOOL_EQUAL_3" input="INPUT_1"/> <Link from="node_NOP_8" output="OUTPUT" to="node_BOOL_EQUAL_3" input="INPUT_0"/> <Link from="node_GetComposite_2" output="PAD_ERROR" to="node_BOOL_EQUAL_4" input="INPUT_1"/> <Link from="node_NOP_13" output="OUTPUT" to="node_BOOL_EQUAL_4" input="INPUT_0"/> <Link from="node_GetComposite_2" output="LIFT_UP" to="node_BOOL_EQUAL_5" input="INPUT_1"/> <Link from="node_NOP_14" output="OUTPUT" to="node_BOOL_EQUAL_5" input="INPUT_0"/> <Link from="node_GetComposite_2" output="LIFT_DOWN" to="node_BOOL_EQUAL_6" input="INPUT_1"/> <Link from="node_NOP_18" output="OUTPUT" to="node_BOOL_EQUAL_6" input="INPUT_0"/> <Link from="node_GetComposite_2" output="LIFT_MOVING" to="node_BOOL_EQUAL_7" input="INPUT_1"/> <Link from="node_NOP_17" output="OUTPUT" to="node_BOOL_EQUAL_7" input="INPUT_0"/> <Link from="node_GetComposite_2" output="LIFT_ERROR" to="node_BOOL_EQUAL_8" input="INPUT_1"/> <Link from="node_NOP_25" output="OUTPUT" to="node_BOOL_EQUAL_8" input="INPUT_0"/> <Link from="node_BOOL_EQUAL_3" output="OUTPUT" to="node_IF_3" input="COND"/> <Link from="node_BOOL_EQUAL_3" output="OUTPUT" to="node_IF_3" input="THEN"/> <Link from="node_BOOL_EQUAL_4" output="OUTPUT" to="node_IF_4" input="COND"/> <Link from="node_BOOL_EQUAL_4" output="OUTPUT" to="node_IF_4" input="THEN"/> <Link from="node_BOOL_EQUAL_5" output="OUTPUT" to="node_IF_5" input="COND"/> <Link from="node_BOOL_EQUAL_5" output="OUTPUT" to="node_IF_5" input="THEN"/> <Link from="node_BOOL_EQUAL_6" output="OUTPUT" to="node_IF_6" input="COND"/> <Link from="node_BOOL_EQUAL_6" output="OUTPUT" to="node_IF_6" input="THEN"/> <Link from="node_BOOL_EQUAL_7" output="OUTPUT" to="node_IF_7" input="COND"/> <Link from="node_BOOL_EQUAL_7" output="OUTPUT" to="node_IF_7" input="THEN"/> <Link from="node_BOOL_EQUAL_8" output="OUTPUT" to="node_IF_8" input="COND"/> <Link from="node_BOOL_EQUAL_8" output="OUTPUT" to="node_IF_8" input="THEN"/> <Link from="node_Constant_15" output="VALUE" to="node_NOP_25" input="INPUT"/> <NetOutput name="OUTPUT" node="node_NOP_2" terminal="OUTPUT" object_type="any" description="The output = The input"/> <Note x="0" y="0" visible="0" text="Created with FlowDesigner 0.9.0"/> </Network> <Network type="subnet" name="BOOL_EQUAL"> <Node name="node_OR_1" type="OR" x="390.000000" y="146.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_1" type="AND" x="234.000000" y="139.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_1" type="NOP" x="97.000000" y="131.500000"/> <Node name="node_OR_2" type="OR" x="228.000000" y="191.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_1" type="NOT" x="282.000000" y="190.500000"/> <Node name="node_NOP_2" type="NOP" x="96.000000" y="158.500000"/> <Link from="node_AND_1" output="OUTPUT" to="node_OR_1" input="INPUT1"/> <Link from="node_NOT_1" output="OUTPUT" to="node_OR_1" input="INPUT2"/> <Link from="node_NOP_1" output="OUTPUT" to="node_AND_1" input="INPUT1"/> <Link from="node_NOP_2" output="OUTPUT" to="node_AND_1" input="INPUT2"/> <Link from="node_NOP_1" output="OUTPUT" to="node_OR_2" input="INPUT1"/> <Link from="node_NOP_2" output="OUTPUT" to="node_OR_2" input="INPUT2"/> <Link from="node_OR_2" output="OUTPUT" to="node_NOT_1" input="INPUT"/> <NetInput name="INPUT_1" node="node_NOP_2" terminal="INPUT" object_type="any" description="The input"/> <NetInput name="INPUT_0" node="node_NOP_1" terminal="INPUT" object_type="any" description="The input"/> <NetOutput name="OUTPUT" node="node_OR_1" terminal="OUTPUT" object_type="bool" description="Boolean output"/> <Note x="0" y="0" visible="0" text="Created with FlowDesigner 0.9.0"/> </Network> </Document> --- NEW FILE: CommandGripper.n --- #!/usr/bin/env batchflow <?xml version="1.0"?> <Document> <Network type="subnet" name="MAIN"> <Node name="node_extractMarieCommandGripper_1" type="extractMarieCommandGripper" x="-392.000000" y="-7.000000"/> <Node name="node_newMarieCommandGripper_1" type="newMarieCommandGripper" x="-626.000000" y="-6.000000"/> <Node name="node_MakeComposite_1" type="MakeComposite" x="-815.000000" y="-6.000000"/> <Node name="node_Constant_1" type="Constant" x="-1075.500000" y="-65.500000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_GetComposite_1" type="GetComposite" x="-212.000000" y="-6.000000"/> <Node name="node_NOP_2" type="NOP" x="1465.000000" y="588.000000"/> <Node name="node_OR_1" type="OR" x="380.000000" y="136.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_1" type="AND" x="224.000000" y="129.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_1" type="NOP" x="87.000000" y="121.500000"/> <Node name="node_OR_2" type="OR" x="218.000000" y="181.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_1" type="NOT" x="272.000000" y="180.500000"/> <Node name="node_NOP_3" type="NOP" x="86.000000" y="148.500000"/> <Node name="node_Constant_2" type="Constant" x="352.000000" y="202.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_OPEN comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_1" type="IF" x="530.000000" y="151.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_1" type="Throw" x="432.000000" y="200.500000"/> <Node name="node_AND_3" type="AND" x="1146.000000" y="589.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_6" type="NOP" x="-911.000000" y="149.000000"/> <Node name="node_Constant_3" type="Constant" x="-1075.000000" y="-37.000000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Node name="node_OR_3" type="OR" x="374.000000" y="239.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_2" type="AND" x="218.000000" y="232.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_4" type="NOP" x="81.000000" y="224.500000"/> <Node name="node_OR_4" type="OR" x="212.000000" y="284.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_2" type="NOT" x="266.000000" y="283.500000"/> <Node name="node_NOP_5" type="NOP" x="80.000000" y="251.500000"/> <Node name="node_Constant_4" type="Constant" x="346.000000" y="305.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_CLOSE comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_2" type="IF" x="524.000000" y="254.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_2" type="Throw" x="426.000000" y="303.500000"/> <Node name="node_NOP_7" type="NOP" x="-911.000000" y="175.500000"/> <Node name="node_Constant_5" type="Constant" x="-1074.500000" y="-9.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_8" type="NOP" x="-910.500000" y="203.000000"/> <Node name="node_OR_5" type="OR" x="376.000000" y="340.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_4" type="AND" x="220.000000" y="333.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_9" type="NOP" x="83.000000" y="325.500000"/> <Node name="node_OR_6" type="OR" x="214.000000" y="385.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_3" type="NOT" x="268.000000" y="384.500000"/> <Node name="node_NOP_10" type="NOP" x="82.000000" y="352.500000"/> <Node name="node_Constant_6" type="Constant" x="348.000000" y="406.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_STOP comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_3" type="IF" x="526.000000" y="355.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_3" type="Throw" x="428.000000" y="404.500000"/> <Node name="node_Constant_7" type="Constant" x="-1074.500000" y="18.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_OR_7" type="OR" x="379.000000" y="450.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_5" type="AND" x="223.000000" y="443.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_11" type="NOP" x="86.000000" y="435.500000"/> <Node name="node_OR_8" type="OR" x="217.000000" y="495.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_4" type="NOT" x="271.000000" y="494.500000"/> <Node name="node_NOP_12" type="NOP" x="85.000000" y="462.500000"/> <Node name="node_Constant_8" type="Constant" x="351.000000" y="516.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_UP comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_4" type="IF" x="529.000000" y="465.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_4" type="Throw" x="431.000000" y="514.500000"/> <Node name="node_NOP_13" type="NOP" x="-912.000000" y="229.000000"/> <Node name="node_Constant_9" type="Constant" x="-1075.500000" y="44.500000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Node name="node_NOP_14" type="NOP" x="-911.500000" y="255.000000"/> <Node name="node_OR_9" type="OR" x="381.000000" y="551.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_6" type="AND" x="225.000000" y="544.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_15" type="NOP" x="88.000000" y="536.500000"/> <Node name="node_OR_10" type="OR" x="219.000000" y="596.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_5" type="NOT" x="273.000000" y="595.500000"/> <Node name="node_NOP_16" type="NOP" x="87.000000" y="563.500000"/> <Node name="node_Constant_10" type="Constant" x="352.000000" y="617.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_DOWN comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_5" type="IF" x="531.000000" y="566.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_5" type="Throw" x="433.000000" y="615.500000"/> <Node name="node_Constant_11" type="Constant" x="-1074.000000" y="71.000000"> <Parameter name="VALUE" type="bool" value="false" description="The value"/> </Node> <Node name="node_Constant_12" type="Constant" x="-1073.500000" y="99.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_17" type="NOP" x="-908.000000" y="308.000000"/> <Node name="node_NOP_18" type="NOP" x="-910.000000" y="282.000000"/> <Node name="node_Constant_13" type="Constant" x="353.000000" y="719.500000"> <Parameter name="VALUE" type="string" value="failure of LIFT_STOP comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_6" type="IF" x="531.000000" y="668.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_NOT_6" type="NOT" x="273.000000" y="697.500000"/> <Node name="node_Throw_6" type="Throw" x="433.000000" y="717.500000"/> <Node name="node_OR_11" type="OR" x="219.000000" y="698.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_OR_12" type="OR" x="381.000000" y="653.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOP_19" type="NOP" x="87.000000" y="665.500000"/> <Node name="node_OR_13" type="OR" x="383.000000" y="754.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_7" type="AND" x="225.000000" y="646.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_20" type="NOP" x="88.000000" y="638.500000"/> <Node name="node_AND_8" type="AND" x="227.000000" y="747.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_21" type="NOP" x="90.000000" y="739.500000"/> <Node name="node_OR_14" type="OR" x="221.000000" y="799.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_7" type="NOT" x="275.000000" y="798.500000"/> <Node name="node_NOP_22" type="NOP" x="89.000000" y="766.500000"/> <Node name="node_Constant_14" type="Constant" x="355.000000" y="820.500000"> <Parameter name="VALUE" type="string" value="failure of STORE comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_7" type="IF" x="533.000000" y="769.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_7" type="Throw" x="435.000000" y="818.500000"/> <Node name="node_OR_15" type="OR" x="385.000000" y="860.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_Constant_15" type="Constant" x="-1076.000000" y="128.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_AND_9" type="AND" x="229.000000" y="853.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_23" type="NOP" x="92.000000" y="845.500000"/> <Node name="node_OR_16" type="OR" x="223.000000" y="905.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_8" type="NOT" x="277.000000" y="904.500000"/> <Node name="node_NOP_24" type="NOP" x="91.000000" y="872.500000"/> <Node name="node_Constant_16" type="Constant" x="357.000000" y="926.500000"> <Parameter name="VALUE" type="string" value="failure of DEPLOY comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_8" type="IF" x="535.000000" y="875.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_8" type="Throw" x="437.000000" y="924.500000"/> <Node name="node_NOP_25" type="NOP" x="-909.000000" y="334.500000"/> <Node name="node_Constant_17" type="Constant" x="-1077.000000" y="159.000000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_NOP_26" type="NOP" x="-908.500000" y="360.500000"/> <Node name="node_OR_17" type="OR" x="387.000000" y="961.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_AND_10" type="AND" x="231.000000" y="954.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_NOP_27" type="NOP" x="94.000000" y="946.500000"/> <Node name="node_OR_18" type="OR" x="225.000000" y="1006.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is true"/> </Node> <Node name="node_NOT_9" type="NOT" x="279.000000" y="1005.500000"/> <Node name="node_NOP_28" type="NOP" x="93.000000" y="973.500000"/> <Node name="node_Constant_18" type="Constant" x="359.000000" y="1027.500000"> <Parameter name="VALUE" type="string" value="failure of HALT comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_9" type="IF" x="537.000000" y="976.500000"> <Parameter name="PULL_ANYWAY" type="bool" value="" description="If true, the IF statement pulls also on the branch not taken"/> </Node> <Node name="node_Throw_9" type="Throw" x="439.000000" y="1025.500000"/> <Node name="node_AND_11" type="AND" x="652.000000" y="214.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_12" type="AND" x="785.000000" y="314.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_13" type="AND" x="654.000000" y="413.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_14" type="AND" x="674.000000" y="613.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_15" type="AND" x="672.000000" y="820.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_16" type="AND" x="975.000000" y="580.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_AND_17" type="AND" x="818.000000" y="708.000000"> <Parameter name="PULL_ANYWAY" type="bool" value="false" description="Pull on INPUT2 even if INPUT1 is false"/> </Node> <Node name="node_Catch_1" type="Catch" x="1290.000000" y="596.000000"/> <Link from="node_Constant_1" output="VALUE" to="node_MakeComposite_1" input="PAD_OPEN"/> <Link from="node_newMarieCommandGripper_1" output="COMMAND_GRIPPER" to="node_extractMarieCommandGripper_1" input="COMMAND_GRIPPER"/> <Link from="node_extractMarieCommandGripper_1" output="GRIPPER_COMPOSITE" to="node_GetComposite_1" input="INPUT"/> <Link from="node_AND_1" output="OUTPUT" to="node_OR_1" input="INPUT1"/> <Link from="node_NOT_1" output="OUTPUT" to="node_OR_1" input="INPUT2"/> <Link from="node_NOP_1" output="OUTPUT" to="node_AND_1" input="INPUT1"/> <Link from="node_NOP_3" output="OUTPUT" to="node_AND_1" input="INPUT2"/> <Link from="node_NOP_1" output="OUTPUT" to="node_OR_2" input="INPUT1"/> <Link from="node_NOP_3" output="OUTPUT" to="node_OR_2" input="INPUT2"/> <Link from="node_OR_2" output="OUTPUT" to="node_NOT_1" input="INPUT"/> <Link from="node_OR_1" output="OUTPUT" to="node_IF_1" input="COND"/> <Link from="node_OR_1" output="OUTPUT" to="node_IF_1" input="THEN"/> <Link from="node_Throw_1" output="OUTPUT" to="node_IF_1" input="ELSE"/> <Link from="node_Constant_2" output="VALUE" to="node_Throw_1" input="INPUT"/> <Link from="node_GetComposite_1" output="PAD_OPEN" to="node_NOP_1" input="INPUT"/> <Link from="node_Constant_1" output="VALUE" to="node_NOP_6" input="INPUT"/> <Link from="node_NOP_6" output="OUTPUT" to="node_NOP_3" input="INPUT"/> <Link from="node_AND_2" output="OUTPUT" to="node_OR_3" input="INPUT1"/> <Link from="node_NOT_2" output="OUTPUT" to="node_OR_3" input="INPUT2"/> <Link from="node_NOP_4" output="OUTPUT" to="node_AND_2" input="INPUT1"/> <Link from="node_NOP_5" output="OUTPUT" to="node_AND_2" input="INPUT2"/> <Link from="node_NOP_4" output="OUTPUT" to="node_OR_4" input="INPUT1"/> <Link from="node_NOP_5" output="OUTPUT" to="node_OR_4" input="INPUT2"/> <Link from="node_OR_4" output="OUTPUT" to="node_NOT_2" input="INPUT"/> <Link from="node_NOP_7" output="OUTPUT" to="node_NOP_5" input="INPUT"/> <Link from="node_OR_3" output="OUTPUT" to="node_IF_2" input="COND"/> <Link from="node_OR_3" output="OUTPUT" to="node_IF_2" input="THEN"/> <Link from="node_Throw_2" output="OUTPUT" to="node_IF_2" input="ELSE"/> <Link from="node_Constant_4" output="VALUE" to="node_Throw_2" input="INPUT"/> <Link from="node_Constant_3" output="VALUE" to="node_NOP_7" input="INPUT"/> <Link from="node_Constant_5" output="VALUE" to="node_NOP_8" input="INPUT"/> <Link from="node_AND_4" output="OUTPUT" to="node_OR_5" input="INPUT1"/> <Link from="node_NOT_3" output="OUTPUT" to="node_OR_5" input="INPUT2"/> <Link from="node_NOP_9" output="OUTPUT" to="node_AND_4" input="INPUT1"/> <Link from="node_NOP_10" output="OUTPUT" to="node_AND_4" input="INPUT2"/> <Link from="node_NOP_9" output="OUTPUT" to="node_OR_6" input="INPUT1"/> <Link from="node_NOP_10" output="OUTPUT" to="node_OR_6" input="INPUT2"/> <Link from="node_OR_6" output="OUTPUT" to="node_NOT_3" input="INPUT"/> <Link from="node_NOP_8" output="OUTPUT" to="node_NOP_10" input="INPUT"/> <Link from="node_OR_5" output="OUTPUT" to="node_IF_3" input="COND"/> <Link from="node_OR_5" output="OUTPUT" to="node_IF_3" input="THEN"/> <Link from="node_Throw_3" output="OUTPUT" to="node_IF_3" input="ELSE"/> <Link from="node_Constant_6" output="VALUE" to="node_Throw_3" input="INPUT"/> <Link from="node_AND_5" output="OUTPUT" to="node_OR_7" input="INPUT1"/> <Link from="node_NOT_4" output="OUTPUT" to="node_OR_7" input="INPUT2"/> <Link from="node_NOP_11" output="OUTPUT" to="node_AND_5" input="INPUT1"/> <Link from="node_NOP_12" output="OUTPUT" to="node_AND_5" input="INPUT2"/> <Link from="node_NOP_11" output="OUTPUT" to="node_OR_8" input="INPUT1"/> <Link from="node_NOP_12" output="OUTPUT" to="node_OR_8" input="INPUT2"/> <Link from="node_OR_8" output="OUTPUT" to="node_NOT_4" input="INPUT"/> <Link from="node_NOP_13" output="OUTPUT" to="node_NOP_12" input="INPUT"/> <Link from="node_OR_7" output="OUTPUT" to="node_IF_4" input="COND"/> <Link from="node_OR_7" output="OUTPUT" to="node_IF_4" input="THEN"/> <Link from="node_Throw_4" output="OUTPUT" to="node_IF_4" input="ELSE"/> <Link from="node_Constant_8" output="VALUE" to="node_Throw_4" input="INPUT"/> <Link from="node_Constant_7" output="VALUE" to="node_NOP_13" input="INPUT"/> <Link from="node_Constant_9" output="VALUE" to="node_NOP_14" input="INPUT"/> <Link from="node_AND_6" output="OUTPUT" to="node_OR_9" input="INPUT1"/> <Link from="node_NOT_5" output="OUTPUT" to="node_OR_9" input="INPUT2"/> <Link from="node_NOP_15" output="OUTPUT" to="node_AND_6" input="INPUT1"/> <Link from="node_NOP_16" output="OUTPUT" to="node_AND_6" input="INPUT2"/> <Link from="node_NOP_15" output="OUTPUT" to="node_OR_10" input="INPUT1"/> <Link from="node_NOP_16" output="OUTPUT" to="node_OR_10" input="INPUT2"/> <Link from="node_OR_10" output="OUTPUT" to="node_NOT_5" input="INPUT"/> <Link from="node_NOP_14" output="OUTPUT" to="node_NOP_16" input="INPUT"/> <Link from="node_OR_9" output="OUTPUT" to="node_IF_5" input="COND"/> <Link from="node_OR_9" output="OUTPUT" to="node_IF_5" input="THEN"/> <Link from="node_Throw_5" output="OUTPUT" to="node_IF_5" input="ELSE"/> <Link from="node_Constant_10" output="VALUE" to="node_Throw_5" input="INPUT"/> <Link from="node_Constant_12" output="VALUE" to="node_NOP_17" input="INPUT"/> <Link from="node_Constant_11" output="VALUE" to="node_NOP_18" input="INPUT"/> <Link from="node_OR_12" output="OUTPUT" to="node_IF_6" input="COND"/> <Link from="node_OR_12" output="OUTPUT" to="node_IF_6" input="THEN"/> <Link from="node_Throw_6" output="OUTPUT" to="node_IF_6" input="ELSE"/> <Link from="node_OR_11" output="OUTPUT" to="node_NOT_6" input="INPUT"/> <Link from="node_Constant_13" output="VALUE" to="node_Throw_6" input="INPUT"/> <Link from="node_NOP_20" output="OUTPUT" to="node_OR_11" input="INPUT1"/> <Link from="node_NOP_19" output="OUTPUT" to="node_OR_11" input="INPUT2"/> <Link from="node_AND_7" output="OUTPUT" to="node_OR_12" input="INPUT1"/> <Link from="node_NOT_6" output="OUTPUT" to="node_OR_12" input="INPUT2"/> <Link from="node_AND_8" output="OUTPUT" to="node_OR_13" input="INPUT1"/> <Link from="node_NOT_7" output="OUTPUT" to="node_OR_13" input="INPUT2"/> <Link from="node_NOP_20" output="OUTPUT" to="node_AND_7" input="INPUT1"/> <Link from="node_NOP_19" output="OUTPUT" to="node_AND_7" input="INPUT2"/> <Link from="node_NOP_21" output="OUTPUT" to="node_AND_8" input="INPUT1"/> <Link from="node_NOP_22" output="OUTPUT" to="node_AND_8" input="INPUT2"/> <Link from="node_NOP_21" output="OUTPUT" to="node_OR_14" input="INPUT1"/> <Link from="node_NOP_22" output="OUTPUT" to="node_OR_14" input="INPUT2"/> <Link from="node_OR_14" output="OUTPUT" to="node_NOT_7" input="INPUT"/> <Link from="node_NOP_17" output="OUTPUT" to="node_NOP_22" input="INPUT"/> <Link from="node_OR_13" output="OUTPUT" to="node_IF_7" input="COND"/> <Link from="node_OR_13" output="OUTPUT" to="node_IF_7" input="THEN"/> <Link from="node_Throw_7" output="OUTPUT" to="node_IF_7" input="ELSE"/> <Link from="node_Constant_14" output="VALUE" to="node_Throw_7" input="INPUT"/> <Link from="node_AND_9" output="OUTPUT" to="node_OR_15" input="INPUT1"/> <Link from="node_NOT_8" output="OUTPUT" to="node_OR_15" input="INPUT2"/> <Link from="node_NOP_23" output="OUTPUT" to="node_AND_9" input="INPUT1"/> <Link from="node_NOP_24" output="OUTPUT" to="node_AND_9" input="INPUT2"/> <Link from="node_NOP_23" output="OUTPUT" to="node_OR_16" input="INPUT1"/> <Link from="node_NOP_24" output="OUTPUT" to="node_OR_16" input="INPUT2"/> <Link from="node_OR_16" output="OUTPUT" to="node_NOT_8" input="INPUT"/> <Link from="node_NOP_25" output="OUTPUT" to="node_NOP_24" input="INPUT"/> <Link from="node_OR_15" output="OUTPUT" to="node_IF_8" input="COND"/> <Link from="node_OR_15" output="OUTPUT" to="node_IF_8" input="THEN"/> <Link from="node_Throw_8" output="OUTPUT" to="node_IF_8" input="ELSE"/> <Link from="node_Constant_16" output="VALUE" to="node_Throw_8" input="INPUT"/> <Link from="node_Constant_15" output="VALUE" to="node_NOP_25" input="INPUT"/> <Link from="node_Constant_17" output="VALUE" to="node_NOP_26" input="INPUT"/> <Link from="node_AND_10" output="OUTPUT" to="node_OR_17" input="INPUT1"/> <Link from="node_NOT_9" output="OUTPUT" to="node_OR_17" input="INPUT2"/> <Link from="node_NOP_27" output="OUTPUT" to="node_AND_10" input="INPUT1"/> <Link from="node_NOP_28" output="OUTPUT" to="node_AND_10" input="INPUT2"/> <Link from="node_NOP_27" output="OUTPUT" to="node_OR_18" input="INPUT1"/> <Link from="node_NOP_28" output="OUTPUT" to="node_OR_18" input="INPUT2"/> <Link from="node_OR_18" output="OUTPUT" to="node_NOT_9" input="INPUT"/> <Link from="node_NOP_26" output="OUTPUT" to="node_NOP_28" input="INPUT"/> <Link from="node_OR_17" output="OUTPUT" to="node_IF_9" input="COND"/> <Link from="node_OR_17" output="OUTPUT" to="node_IF_9" input="THEN"/> <Link from="node_Throw_9" output="OUTPUT" to="node_IF_9" input="ELSE"/> <Link from="node_Constant_18" output="VALUE" to="node_Throw_9" input="INPUT"/> <Link from="node_MakeComposite_1" output="OUTPUT" to="node_newMarieCommandGripper_1" input="GRIPPER_COMPOSITE"/> <Link from="node_GetComposite_1" output="PAD_CLOSE" to="node_NOP_4" input="INPUT"/> <Link from="node_GetComposite_1" output="PAD_STOP" to="node_NOP_9" input="INPUT"/> <Link from="node_GetComposite_1" output="LIFT_UP" to="node_NOP_11" input="INPUT"/> <Link from="node_GetComposite_1" output="LIFT_DOWN" to="node_NOP_15" input="INPUT"/> <Link from="node_GetComposite_1" output="LIFT_STOP" to="node_NOP_20" input="INPUT"/> <Link from="node_GetComposite_1" output="STORE" to="node_NOP_21" input="INPUT"/> <Link from="node_GetComposite_1" output="DEPLOY" to="node_NOP_23" input="INPUT"/> <Link from="node_GetComposite_1" output="HALT" to="node_NOP_27" input="INPUT"/> <Link from="node_AND_11" output="OUTPUT" to="node_AND_12" input="INPUT1"/> <Link from="node_AND_13" output="OUTPUT" to="node_AND_12" input="INPUT2"/> <Link from="node_AND_12" output="OUTPUT" to="node_AND_16" input="INPUT1"/> <Link from="node_AND_17" output="OUTPUT" to="node_AND_16" input="INPUT2"/> <Link from="node_AND_14" output="OUTPUT" to="node_AND_17" input="INPUT1"/> <Link from="node_AND_15" output="OUTPUT" to="node_AND_17" input="INPUT2"/> <Link from="node_IF_1" output="OUTPUT" to="node_AND_11" input="INPUT1"/> <Link from="node_IF_2" output="OUTPUT" to="node_AND_11" input="INPUT2"/> <Link from="node_IF_3" output="OUTPUT" to="node_AND_13" input="INPUT1"/> <Link from="node_IF_4" output="OUTPUT" to="node_AND_13" input="INPUT2"/> <Link from="node_IF_5" output="OUTPUT" to="node_AND_14" input="INPUT1"/> <Link from="node_IF_6" output="OUTPUT" to="node_AND_14" input="INPUT2"/> <Link from="node_IF_7" output="OUTPUT" to="node_AND_15" input="INPUT1"/> <Link from="node_IF_8" output="OUTPUT" to="node_AND_15" input="INPUT2"/> <Link from="node_IF_9" output="OUTPUT" to="node_AND_3" input="INPUT2"/> <Link from="node_AND_16" output="OUTPUT" to="node_AND_3" input="INPUT1"/> <Link from="node_Constant_3" output="VALUE" to="node_MakeComposite_1" input="PAD_CLOSE"/> <Link from="node_Constant_5" output="VALUE" to="node_MakeComposite_1" input="PAD_STOP"/> <Link from="node_Constant_7" output="VALUE" to="node_MakeComposite_1" input="LIFT_UP"/> <Link from="node_Constant_9" output="VALUE" to="node_MakeComposite_1" input="LIFT_DOWN"/> <Link from="node_Constant_11" output="VALUE" to="node_MakeComposite_1" input="LIFT_STOP"/> <Link from="node_Constant_12" output="VALUE" to="node_MakeComposite_1" input="STORE"/> <Link from="node_Constant_15" output="VALUE" to="node_MakeComposite_1" input="DEPLOY"/> <Link from="node_Constant_17" output="VALUE" to="node_MakeComposite_1" input="HALT"/> <Link from="node_Catch_1" output="EXCEPTION" to="node_Catch_1" input="CATCH"/> <Link from="node_AND_3" output="OUTPUT" to="node_Catch_1" input="INPUT"/> <Link from="node_Catch_1" output="OUTPUT" to="node_NOP_2" input="INPUT"/> <Link from="node_NOP_18" output="OUTPUT" to="node_NOP_19" input="INPUT"/> <NetOutput name="OUTPUT" node="node_NOP_2" terminal="OUTPUT" object_type="any" description="The output = The input"/> <Note x="0" y="0" visible="0" text="Created with FlowDesigner 0.9.0"/> </Network> </Document> --- NEW FILE: DataList.n --- #!/usr/bin/env batchflow <?xml version="1.0"?> <Document> <Network type="subnet" name="MAIN"> <Node name="node_extractMarieCommandGripper_1" type="extractMarieCommandGripper" x="294.000000" y="-7.000000"/> <Node name="node_newMarieCommandGripper_1" type="newMarieCommandGripper" x="-1006.000000" y="-7.000000"/> <Node name="node_MakeComposite_1" type="MakeComposite" x="-1183.000000" y="-8.000000"/> <Node name="node_Constant_1" type="Constant" x="-1443.500000" y="-67.500000"> <Parameter name="VALUE" type="bool" value="true" description="The value"/> </Node> <Node name="node_GetComposite_1" type="GetComposite" x="492.250000" y="-6.000000"/> <Node name="node_NOP_2" type="NOP" x="2039.250000" y="-89.000000"/> <Node name="node_NOP_1" type="NOP" x="811.250000" y="119.500000"/> <Node name="node_NOP_3" type="NOP" x="811.250000" y="146.500000"/> <Node name="node_Constant_2" type="Constant" x="898.250000" y="166.500000"> <Parameter name="VALUE" type="string" value="failure of PAD_OPEN comparison while testing CommandGripper" description="The value"/> </Node> <Node name="node_IF_1" type="IF" x="1111.250000... [truncated message content] |
From: clement r. <kl...@us...> - 2005-11-07 20:29:39
|
Update of /cvsroot/robotflow/RobotFlow/MARIE/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29975 Added Files: newMarieDataList.cpp extractMarieDataList.cpp Log Message: initial add --- NEW FILE: newMarieDataList.cpp --- /* * MARIE - Mobile and Autonomous Robotics Integration Environment * Copyright (C) 2004 Dominic Letourneau * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * You can contact MARIE development team at http://marie.sourceforge.net */ #include "MarieObject.h" #include "DataList.h" #include "BufferedNode.h" #include <sstream> #include <string> #include "Vector.h" using namespace FD; namespace marie { class newMarieDataList; DECLARE_NODE(newMarieDataList) /*Node * * @name newMarieDataList * @category RobotFlow:MARIE:DATA * @description Create an object of type MarieObject containing a DataList data * * @input_name VECTOR * @input_type Vector<ObjectRef> * @input_description ObjectRef Vector conataining marie data to include in the new list * * @output_name DATA_LIST * @output_description Output MarieObject containing a DataList data * @output_type MarieObject * END*/ using namespace std; class newMarieDataList : public BufferedNode { private: int m_inputID; int m_outputID; public: newMarieDataList(string nodeName, ParameterSet params) : BufferedNode(nodeName,params) { //inputs m_inputID = addInput("VECTOR"); //outputs m_outputID = addOutput("DATA_LIST"); } void calculate(int output_id, int count, Buffer &out) { ObjectRef InputValue = getInput(m_inputID,count); if (!InputValue->isNil()) { RCPtr<Vector<ObjectRef> > vectorObject = InputValue; //create new Marie DataList DataList *dList = new DataList(); //get all the element of the vector std::vector<ObjectRef>::const_iterator it = vectorObject->begin(); for(; it != vectorObject->end(); it++) { try { RCPtr<MarieObject> marieObject = *it; dList->insertBack(marieObject->getData()); } catch(BaseException* e) { throw e->add(new GeneralException("newMarieDataList : invalid data type in input vector : not a MarieObject.", __FILE__, __LINE__)); } } out[count] = ObjectRef(new MarieObject(dList)); } else { out[count] = nilObject; } } };//class newMarieDataList }//namespace marie --- NEW FILE: extractMarieDataList.cpp --- /* * MARIE - Mobile and Autonomous Robotics Integration Environment * Copyright (C) 2004 Dominic Letourneau / Clement Raievsky * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * You can contact MARIE development team at http://marie.sourceforge.net */ #include <sstream> #include <string> #include "BufferedNode.h" #include "MarieObject.h" #include "DataList.h" #include "Vector.h" using namespace FD; namespace marie { //forward declaration class extractMarieDataList; DECLARE_NODE(extractMarieDataList) /*Node * * @name extractMarieDataList * @category RobotFlow:MARIE:DATA * @description Extract data in the FlowDesigner format from MarieObject * * @input_name DATA_LIST * @input_type MarieObject * @input_description input MarieObject object containing a DataList * * @output_name VECTOR * @output_description Vector object equivalent to MARIE DataList. WARNING : order in MARIE DataList is not guaranted. The Flowdesigner object is a vector of composite which are of the form : <X <double>, Y <double>, THETA <double>, ID <int>> * @output_type Vector<ObjectRef> * END*/ using namespace std; class extractMarieDataList : public BufferedNode { private: //intputs int m_dataListID; //outputs int m_vectorID; public: extractMarieDataList(string nodeName, ParameterSet params) : BufferedNode(nodeName,params) { //inputs m_dataListID = addInput("DATA_LIST"); //outputs m_vectorID = addOutput("VECTOR"); } void calculate(int output_id, int count, Buffer &out) { try { //get input RCPtr<MarieObject> dataPtr = getInput(m_dataListID,count); DataList *dataList = dynamic_cast<DataList*>(dataPtr->getData()); if (dataList != NULL) { const std::list<DataAbstract*> myList = dataList->getList(); Vector<ObjectRef> *myVector = new Vector<ObjectRef>(); std::list<DataAbstract*>::const_iterator iter = myList.begin(); for (;iter != myList.end(); iter++) { myVector->push_back(ObjectRef(new MarieObject((*iter)->clone()))); } //output vector out[count] = ObjectRef(myVector); } else { std::cerr << "FD::extractMarieDataList -> MarieObject received data not of DataList type" << std::endl; out[count] = nilObject; } } catch (BaseException *e) { e->print(cerr); e->add(new GeneralException("Unable to process",__FILE__,__LINE__)); throw e; } } };//class extractMarieDataList }//namespace marie |
From: Fernyqc <fe...@us...> - 2005-10-27 19:03:13
|
Update of /cvsroot/robotflow/RobotFlow In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11763 Modified Files: Makefile.am Log Message: Added Sensors to the directory list Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Makefile.am,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Makefile.am 27 Oct 2005 18:02:17 -0000 1.23 --- Makefile.am 27 Oct 2005 19:02:59 -0000 1.24 *************** *** 16,20 **** EXTRA_DIST = RobotFlow.spec RobotFlow.spec.in ! SUBDIRS = Pioneer2 Generic Behaviors Audio Vision Control Devices Probes FSM $(MARIE_DIR) $(OPENCV_DIR) $(PLAYER_DIR) # create the pkg-config entries --- 16,20 ---- EXTRA_DIST = RobotFlow.spec RobotFlow.spec.in ! SUBDIRS = Pioneer2 Generic Behaviors Audio Vision Control Devices Probes FSM Sensors $(MARIE_DIR) $(OPENCV_DIR) $(PLAYER_DIR) # create the pkg-config entries |
From: Dominic L. <ma...@us...> - 2005-10-27 18:55:26
|
Update of /cvsroot/robotflow/RobotFlow/Sensors/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9282 Modified Files: Makefile.am Log Message: installing properly Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Sensors/src/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Makefile.am 27 Oct 2005 18:02:18 -0000 1.1 --- Makefile.am 27 Oct 2005 18:55:17 -0000 1.2 *************** *** 16,19 **** echo "Installing libRFSensors in $(libdir)" mkdir -p $(libdir) ! (perl $(OVERFLOW_BIN)/info2def.pl $(libRFSensors_la_SOURCES) > $(datadir)/RFSensors.def) (rm -f $(libdir)/RFSensors.tlb; cd $(libdir); ln -s libRFSensors.so RFSensors.tlb) --- 16,19 ---- echo "Installing libRFSensors in $(libdir)" mkdir -p $(libdir) ! (perl $(OVERFLOW_BIN)/info2def.pl $(libRFSensors_la_SOURCES) > $(prefix)/RFSensors.def) (rm -f $(libdir)/RFSensors.tlb; cd $(libdir); ln -s libRFSensors.so RFSensors.tlb) |
From: Dominic L. <ma...@us...> - 2005-10-27 18:04:34
|
Update of /cvsroot/robotflow/RobotFlow/Behaviors/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26130/src Modified Files: Makefile.am Removed Files: RangeFashion.cc Log Message: moved in Sensors Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Behaviors/src/Makefile.am,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Makefile.am 4 Jul 2005 06:47:32 -0000 1.19 --- Makefile.am 27 Oct 2005 18:04:25 -0000 1.20 *************** *** 33,37 **** GotoPat.cc \ FollowWall.cc \ - RangeFashion.cc \ SafeVelocityPat.cc \ AvoidPat.cc \ --- 33,36 ---- --- RangeFashion.cc DELETED --- |
From: Dominic L. <ma...@us...> - 2005-10-27 18:02:37
|
Update of /cvsroot/robotflow/RobotFlow/demo/SymbolRecog/n-files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25593/demo/SymbolRecog/n-files Modified Files: Recog.n Log Message: Moved from Behaviors, created new directory Sensors Index: Recog.n =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/demo/SymbolRecog/n-files/Recog.n,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Recog.n 16 Jun 2005 19:00:52 -0000 1.2 --- Recog.n 27 Oct 2005 18:02:19 -0000 1.3 *************** *** 32,36 **** <Parameter name="HORIZONTAL_TOLERANCE" type="float" value="0.8" description="No description available"/> </Node> ! <Node name="node_SNCRZ30_1" type="SNCRZ30" x="-1451.000000" y="160.000000"> <Parameter name="PAN_SPEED" type="int" value="24" description="Pan speed 0-24"/> <Parameter name="TILT_SPEED" type="int" value="20" description="Tilt speed 0-20"/> --- 32,36 ---- <Parameter name="HORIZONTAL_TOLERANCE" type="float" value="0.8" description="No description available"/> </Node> ! <Node name="node_SNCRZ30_1" type="SNCRZ30" x="-1477.000000" y="337.000000"> <Parameter name="PAN_SPEED" type="int" value="24" description="Pan speed 0-24"/> <Parameter name="TILT_SPEED" type="int" value="20" description="Tilt speed 0-20"/> *************** *** 41,45 **** <Parameter name="INQUIRY_POSITION" type="bool" value="false" description="Inquiry position of the pan,tilt,zoom from the device"/> </Node> ! <Node name="node_NilObject_1" type="NilObject" x="-1709.000000" y="122.000000"/> <Node name="node_TextProbe_1" type="TextProbe" x="194.000000" y="156.000000"> <Parameter name="BREAK_AT" type="int" value="-1" description="If set, the probe runs until (count = BREAK_AT)"/> --- 41,45 ---- <Parameter name="INQUIRY_POSITION" type="bool" value="false" description="Inquiry position of the pan,tilt,zoom from the device"/> </Node> ! <Node name="node_NilObject_1" type="NilObject" x="-1735.000000" y="299.000000"/> <Node name="node_TextProbe_1" type="TextProbe" x="194.000000" y="156.000000"> <Parameter name="BREAK_AT" type="int" value="-1" description="If set, the probe runs until (count = BREAK_AT)"/> *************** *** 62,66 **** <Parameter name="FRAME_HEIGHT" type="int" value="240" description="Video frame height."/> <Parameter name="NUM_CHANNELS" type="int" value="3" description="Video frame number of channels."/> ! <Parameter name="NUM_ORIENTATIONS" type="int" value="6" description="Number of bins for the local edge histogram."/> <Parameter name="EDGES_STRENGTH_THRESHOLD" type="float" value="50.0" description="Threshold to remove noisy/weak edges."/> <Parameter name="TEXT_ROI_MIN_WIDTH" type="int" value="10" description="Minimal width of a potential region of interest to consider it as text."/> --- 62,66 ---- <Parameter name="FRAME_HEIGHT" type="int" value="240" description="Video frame height."/> <Parameter name="NUM_CHANNELS" type="int" value="3" description="Video frame number of channels."/> ! <Parameter name="NUM_ORIENTATIONS" type="int" value="8" description="Number of bins for the local edge histogram."/> <Parameter name="EDGES_STRENGTH_THRESHOLD" type="float" value="50.0" description="Threshold to remove noisy/weak edges."/> <Parameter name="TEXT_ROI_MIN_WIDTH" type="int" value="10" description="Minimal width of a potential region of interest to consider it as text."/> *************** *** 68,75 **** <Parameter name="TEXT_ROI_MAX_WIDTH" type="int" value="320" description="Maximal width of a potential region of interest to consider it as text."/> <Parameter name="TEXT_ROI_MAX_HEIGHT" type="int" value="80" description="Maximal height of a potential region of interest to consider it as text."/> ! <Parameter name="MAX_STD_ORIENTATION_BINS" type="float" value="0.75" description="Maximal standard deviation of the local edge orientation histogram bins heightEdges orientation histogram of a potential region of interest to consider it as text."/> <Parameter name="MAX_NUM_TEXT_ROI" type="int" value="100" description="Maximum number of text region of interest to use."/> <Parameter name="MAX_STD" type="float" value="0" description="Low threshold used for edge searching."/> ! <Parameter name="MIN_DIST" type="float" value="60" description="High threshold used for edge searching."/> <Parameter name="HORIZONTAL_SYMMETRY_THRESHOLD" type="float" value="80.0" description="Horizontal edge orientation symmetry treshold. Text region should have lower values than threshold."/> <Parameter name="VERTICAL_SYMMETRY_THRESHOLD" type="float" value="80.0" description="Vertical edge orientation symmetry treshold. Text region should have lower values than threshold."/> --- 68,75 ---- <Parameter name="TEXT_ROI_MAX_WIDTH" type="int" value="320" description="Maximal width of a potential region of interest to consider it as text."/> <Parameter name="TEXT_ROI_MAX_HEIGHT" type="int" value="80" description="Maximal height of a potential region of interest to consider it as text."/> ! <Parameter name="MAX_STD_ORIENTATION_BINS" type="float" value="0.60" description="Maximal standard deviation of the local edge orientation histogram bins heightEdges orientation histogram of a potential region of interest to consider it as text."/> <Parameter name="MAX_NUM_TEXT_ROI" type="int" value="100" description="Maximum number of text region of interest to use."/> <Parameter name="MAX_STD" type="float" value="0" description="Low threshold used for edge searching."/> ! <Parameter name="MIN_DIST" type="float" value="100" description="High threshold used for edge searching."/> <Parameter name="HORIZONTAL_SYMMETRY_THRESHOLD" type="float" value="80.0" description="Horizontal edge orientation symmetry treshold. Text region should have lower values than threshold."/> <Parameter name="VERTICAL_SYMMETRY_THRESHOLD" type="float" value="80.0" description="Vertical edge orientation symmetry treshold. Text region should have lower values than threshold."/> |
From: Dominic L. <ma...@us...> - 2005-10-27 18:02:33
|
Update of /cvsroot/robotflow/RobotFlow In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25593 Modified Files: Doxyfile Makefile.am configure.in Log Message: Moved from Behaviors, created new directory Sensors Index: Doxyfile =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Doxyfile,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Doxyfile 27 May 2004 18:32:15 -0000 1.4 --- Doxyfile 27 Oct 2005 18:02:17 -0000 1.5 *************** *** 24,28 **** # if some version control system is used. ! PROJECT_NUMBER = 0.2.3 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) --- 24,28 ---- # if some version control system is used. ! PROJECT_NUMBER = 0.2.6 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) Index: Makefile.am =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Makefile.am,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** Makefile.am 3 Aug 2005 19:52:54 -0000 1.22 --- Makefile.am 27 Oct 2005 18:02:17 -0000 1.23 *************** *** 16,20 **** EXTRA_DIST = RobotFlow.spec RobotFlow.spec.in ! SUBDIRS = Pioneer2 Generic Behaviors Audio Vision Control Devices Probes FSM $(MARIE_DIR) $(OPENCV_DIR) # create the pkg-config entries --- 16,20 ---- EXTRA_DIST = RobotFlow.spec RobotFlow.spec.in ! SUBDIRS = Pioneer2 Generic Behaviors Audio Vision Control Devices Probes FSM $(MARIE_DIR) $(OPENCV_DIR) $(PLAYER_DIR) # create the pkg-config entries Index: configure.in =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/configure.in,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** configure.in 5 Oct 2005 15:24:30 -0000 1.55 --- configure.in 27 Oct 2005 18:02:17 -0000 1.56 *************** *** 321,324 **** --- 321,327 ---- OpenCV/src/Makefile \ OpenCV/n-files/Makefile \ + Sensors/Makefile \ + Sensors/include/Makefile \ + Sensors/src/Makefile \ RobotFlow.spec \ RobotFlow.pc) |
From: Dominic L. <ma...@us...> - 2005-10-27 18:02:31
|
Update of /cvsroot/robotflow/RobotFlow/Sensors/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25593/Sensors/src Added Files: Makefile.am RangeFashion.cc Log Message: Moved from Behaviors, created new directory Sensors --- NEW FILE: Makefile.am --- ## Process this file with automake to produce Makefile.in. -*-Makefile-*- # $Id: Makefile.am,v 1.1 2005/10/27 18:02:18 maestro Exp $ # Disable automatic dependency tracking if using other tools than gcc and gmake #AUTOMAKE_OPTIONS = no-dependencies lib_LTLIBRARIES = libRFSensors.la # Sources for compilation in the library libRFSensors_la_SOURCES = RangeFashion.cc libRFSensors_la_LDFLAGS = -release $(LT_RELEASE) INCLUDES = -I../include $(OVERFLOW_INCLUDE) install-data-local: echo "Installing libRFSensors in $(libdir)" mkdir -p $(libdir) (perl $(OVERFLOW_BIN)/info2def.pl $(libRFSensors_la_SOURCES) > $(datadir)/RFSensors.def) (rm -f $(libdir)/RFSensors.tlb; cd $(libdir); ln -s libRFSensors.so RFSensors.tlb) --- NEW FILE: RangeFashion.cc --- /* Copyright (C) 2005 Patrick Frenette (Pat...@US...) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _RANGE_FASHION_CC_ #define _RANGE_FASHION_CC_ #include "BufferedNode.h" #include "Vector.h" using namespace std; using namespace FD; namespace RobotFlow { class RangeFashion; DECLARE_NODE(RangeFashion) /*Node * * @name RangeFashion * @category RobotFlow:Sensors * @description Fusion range device in a unique percept * * @input_name LASER * @input_type Vector<int> * @input_description All lasers reading. * * @input_name SONAR * @input_type Vector<int> * @input_description All sonars reading. * * @input_name IR * @input_type Vector<int> * @input_description All IRs reading. * * @output_name RANGE_BELT * @output_type Vector<int> * @output_description Percept after fusion * * @parameter_name TYPE_FASHION * @parameter_description Determine of to make the sensor fashion * @parameter_type int * @parameter_value 0 * * @parameter_name MAX_DIST * @parameter_description Distance when no data from sensor (mm) * @parameter_type int * @parameter_value 10000 * * @parameter_name MAX_DIST_IR * @parameter_description Max range detection of IR (mm) * @parameter_type int * @parameter_value 1000 * * @parameter_name MAX_DIST_SONAR * @parameter_description Max range detection of sonar (mm) * @parameter_type int * @parameter_value 10000 * * @parameter_name MAX_DIST_LASER * @parameter_description Max range detection of laser (mm) * @parameter_type int * @parameter_value 10000 * END*/ class RangeFashion : public BufferedNode { //inputs int laserID; int sonarID; int irID; //outputs int perceptID; //parameters int m_typeFashion; int m_maxDist; int m_maxDistIR; int m_maxDistSonar; int m_maxDistLaser; void priorityBaseFashion(Vector<int> *vectPercept, ObjectRef &laserValue, ObjectRef &sonarValue, ObjectRef &irValue, int count){ // Init vectPercept to -1 vectPercept->assign(12, -1); // Priority #1 // IRs if(!irValue->isNil()){ Vector<int> &irReading = object_cast<Vector<int> >(getInput(irID,count)); // Copy IR values Vector<int>::iterator iterIR; int i=0; for(iterIR = irReading.begin(); iterIR != irReading.end(); ++iterIR){ if(*iterIR <= m_maxDistIR) // Max value IR (*vectPercept)[i]=*iterIR; ++i; } } /*Vector<int>::iterator iterA; std::cout << "IR -> "; for(iterA = vectPercept->begin(); iterA != vectPercept->end(); ++iterA){ std::cout << *iterA << " "; } std::cout << std::endl;*/ // Priority #2 // Lasers if(!laserValue->isNil()){ Vector<int> &laserReading = object_cast<Vector<int> >(getInput(laserID,count)); int ind_vectPercept = 3; // For each position in the range of the laser for(int i=0; i<7; ++i){ // Determine the range for the position int begin = 60 * i - 10; int end = 60 * i + 10; if (i==0) begin = 0; else if (i==6) end = 360; // Get the 3 mins of the range int min1=m_maxDistLaser, min2=m_maxDistLaser, min3=m_maxDistLaser; for(int j=begin; j<end; ++j){ if(laserReading[j] <= min1){ min3 = min2; min2 = min1; min1 = laserReading[j]; } else if(laserReading[j] <= min2){ min3 = min2; min2 = laserReading[j]; } else if(laserReading[j] <= min3){ min3 = laserReading[j]; } } // Evaluate the mean of the min int x_min = (min1+min2+min3)/3; // Transform of the data according to the physical dimension of the robot int offset = 0; /*switch (ind_vectPercept){ case 0: offset = 200; break; case 1: offset = 150; break; case 2: offset = 150; break; case 3: offset = 300; break; case 9: offset = 300; break; case 10: offset = 150; break; case 11: offset = 150; break; }*/ // Save the value if(((*vectPercept)[ind_vectPercept] == -1) && (x_min < m_maxDistLaser)){ (*vectPercept)[ind_vectPercept] = x_min - offset; } // Next position --ind_vectPercept; if(ind_vectPercept<0) ind_vectPercept = 11; } } /*std::cout << "Laser -> "; for(iterA = vectPercept->begin(); iterA != vectPercept->end(); ++iterA){ std::cout << *iterA << " "; } std::cout << std::endl;*/ // Priority #3 // Sonars if(!sonarValue->isNil()){ Vector<int> &sonarReading = object_cast<Vector<int> >(getInput(sonarID,count)); // Copy Sonar values Vector<int>::iterator iterSonar; int i=0; for(iterSonar = sonarReading.begin(); iterSonar != sonarReading.end(); ++iterSonar) { if(((*vectPercept)[i] == -1) && (*iterSonar<m_maxDistSonar)) // Max value Sonar (*vectPercept)[i]=*iterSonar; ++i; } } /*std::cout << "Sonar -> "; for(iterA = vectPercept->begin(); iterA != vectPercept->end(); ++iterA){ std::cout << *iterA << " "; } std::cout << std::endl;*/ // Substitue max range for the value of -1 Vector<int>::iterator iterPercept; for(iterPercept = vectPercept->begin(); iterPercept != vectPercept->end(); ++iterPercept) { if(*iterPercept < 0) *iterPercept = m_maxDist; } /*std::cout << "Percept -> "; for(iterA = vectPercept->begin(); iterA != vectPercept->end(); ++iterA){ std::cout << *iterA << " "; } std::cout << std::endl;*/ } public: RangeFashion(string nodeName, ParameterSet params) : BufferedNode(nodeName, params) { //inputs laserID = addInput("LASER"); sonarID = addInput("SONAR"); irID = addInput("IR"); //outputs perceptID = addOutput("RANGE_BELT"); // parameters m_typeFashion = dereference_cast<int>(parameters.get("TYPE_FASHION")); m_maxDist = dereference_cast<int>(parameters.get("MAX_DIST")); m_maxDistIR = dereference_cast<int>(parameters.get("MAX_DIST_IR")); m_maxDistSonar = dereference_cast<int>(parameters.get("MAX_DIST_SONAR")); m_maxDistLaser = dereference_cast<int>(parameters.get("MAX_DIST_LASER")); } void calculate(int output_id, int count, Buffer &out) { ObjectRef laserValue = getInput(laserID,count); ObjectRef sonarValue = getInput(sonarID,count); ObjectRef irValue = getInput(irID,count); Vector<int> *vectPercept = Vector<int>::alloc(12); ObjectRef percept = nilObject; switch (m_typeFashion) { case 0: priorityBaseFashion(vectPercept, laserValue, sonarValue, irValue, count); percept = ObjectRef(vectPercept); break; } out[count] = percept; }//calculate }; }//namespace RobotFlow #endif |
From: Dominic L. <ma...@us...> - 2005-10-27 18:02:27
|
Update of /cvsroot/robotflow/RobotFlow/Sensors In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25593/Sensors Added Files: Makefile.am Log Message: Moved from Behaviors, created new directory Sensors --- NEW FILE: Makefile.am --- ## Process this file with automake to produce Makefile.in. -*-Makefile-*- # Disable automatic dependency tracking if using other tools than gcc and gmake #AUTOMAKE_OPTIONS = no-dependencies SUBDIRS = src include |
From: Dominic L. <ma...@us...> - 2005-10-27 18:02:27
|
Update of /cvsroot/robotflow/RobotFlow/Sensors/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25593/Sensors/include Added Files: Makefile.am Log Message: Moved from Behaviors, created new directory Sensors --- NEW FILE: Makefile.am --- AUTOMAKE_OPTIONS = no-dependencies include_HEADERS = noinst_HEADERS = |
From: Dominic L. <ma...@us...> - 2005-10-27 17:53:30
|
Update of /cvsroot/robotflow/RobotFlow/Sensors/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23446/Sensors/src Log Message: Directory /cvsroot/robotflow/RobotFlow/Sensors/src added to the repository |