Ejemplo n.º 1
0
bool DPipe::ismouse()
{
	vector<SDL_Point> points=vision();
	if((event.button.x>points[0].x && event.button.x<points[1].x) && (event.button.y>points[0].y && event.button.y<points[2].y))
		return true;
	else
		return false;
}
Ejemplo n.º 2
0
void ScavTaskColorShirt::executeTask(int timeout, TaskResult &result, std::string &record)
{

    boost::thread motion( &ScavTaskColorShirt::motionThread, this); 
    boost::thread vision( &ScavTaskColorShirt::visionThread, this);

    motion.join();
    vision.join();

    record = path_to_image; 
    result = SUCCEEDED; 
}
Ejemplo n.º 3
0
void ScavTaskWhiteBoard::executeTask(int timeout, TaskResult &result, std::string &record) {

    boost::thread motion( &ScavTaskWhiteBoard::motionThread, this);
    boost::thread vision( &ScavTaskWhiteBoard::visionThread, this); 

    ros::Rate r(2);
    while (ros::ok() and r.sleep()) {
        if (task_completed) {
            search_planner->cancelCurrentGoal(); 
            break; 
        }
    }

    motion.detach();
    vision.detach(); 
    record = wb_path_to_image; 
    result = SUCCEEDED; 
}
Ejemplo n.º 4
0
	/// If @a base_value is set to true, do not fall back to movement().
	int vision(bool base_value) const { return base_value ? vision_ : vision(); }
Ejemplo n.º 5
0
void Sensor2DeviceImpl::onTrackerMessage(Tracker2Message* message)
{
    if (message->Type != Tracker2Message_Sensors)
        return;
    
    const float     sampleIntervalTimeUnit   = (1.0f / 1000.f);
    double          scaledSampleIntervalTimeUnit  = sampleIntervalTimeUnit;
    Tracker2Sensors& s = message->Sensors;
    
    double       absoluteTimeSeconds = 0.0;

    if (SequenceValid)
    {
        UInt32 runningSampleCountDelta;

        if (s.RunningSampleCount < LastRunningSampleCount)
        {
            // The running sample count on the device rolled around the 16 bit counter
            // (expect to happen about once per minute), so RunningSampleCount 
            // needs a high word increment.
            runningSampleCountDelta = ((((int)s.RunningSampleCount) + 0x10000) - (int)LastRunningSampleCount);
        }
        else
        {
            runningSampleCountDelta = (s.RunningSampleCount - LastRunningSampleCount);
        }

        absoluteTimeSeconds = LastSensorTime.TimeSeconds;
        scaledSampleIntervalTimeUnit = TimeFilter.ScaleTimeUnit(sampleIntervalTimeUnit);
 
        // If we missed a small number of samples, replicate the last sample.
        if ((runningSampleCountDelta > LastNumSamples) && (runningSampleCountDelta <= 254))
        {
            if (HandlerRef.HasHandlers())
            {
                MessageBodyFrame sensors(this);

                sensors.AbsoluteTimeSeconds = absoluteTimeSeconds - s.NumSamples * scaledSampleIntervalTimeUnit;
                sensors.TimeDelta     = (float) ((runningSampleCountDelta - LastNumSamples) * scaledSampleIntervalTimeUnit);
                sensors.Acceleration  = LastAcceleration;
                sensors.RotationRate  = LastRotationRate;
                sensors.MagneticField = LastMagneticField;
                sensors.Temperature   = LastTemperature;

                pCalibration->Apply(sensors);
                HandlerRef.Call(sensors);
            }
        }
    }
    else
    {
        LastAcceleration = Vector3f(0);
        LastRotationRate = Vector3f(0);
        LastMagneticField= Vector3f(0);
        LastTemperature  = 0;
        SequenceValid    = true;
    }

    LastNumSamples = s.NumSamples;
    LastRunningSampleCount = s.RunningSampleCount;

    if (HandlerRef.HasHandlers())
    {
        MessageBodyFrame sensors(this);        
        UByte            iterations = s.NumSamples;

        if (s.NumSamples > 2)
        {
            iterations        = 2;
            sensors.TimeDelta = (float) ((s.NumSamples - 1) * scaledSampleIntervalTimeUnit);
        }
        else
        {
            sensors.TimeDelta = (float) scaledSampleIntervalTimeUnit;
        }

        for (UByte i = 0; i < iterations; i++)
        {            
            sensors.AbsoluteTimeSeconds = absoluteTimeSeconds - ( iterations - 1 - i ) * scaledSampleIntervalTimeUnit;
            sensors.Acceleration = AccelFromBodyFrameUpdate(s, i);
            sensors.RotationRate = EulerFromBodyFrameUpdate(s, i);
            sensors.MagneticField= MagFromBodyFrameUpdate(s);
            sensors.Temperature  = s.Temperature * 0.01f;

            pCalibration->Apply(sensors);
            HandlerRef.Call(sensors);

            // TimeDelta for the last two sample is always fixed.
            sensors.TimeDelta = (float) scaledSampleIntervalTimeUnit;
        }

        // Send pixel read only when frame timestamp changes.
        if (LastFrameTimestamp != s.FrameTimestamp)
        {
            MessagePixelRead pixelRead(this);
            // Prepare message for pixel read
            pixelRead.PixelReadValue    = s.FrameID;
            pixelRead.RawFrameTime      = s.FrameTimestamp;
            pixelRead.RawSensorTime     = s.SampleTimestamp;
            pixelRead.SensorTimeSeconds = LastSensorTime.TimeSeconds;
            pixelRead.FrameTimeSeconds  = LastFrameTime.TimeSeconds;

            HandlerRef.Call(pixelRead);
            LastFrameTimestamp = s.FrameTimestamp;
        }

        UInt16 lowFrameCount = (UInt16) FullCameraFrameCount;
        // Send message only when frame counter changes
        if (lowFrameCount != s.CameraFrameCount)
        {
            // check for the rollover in the counter
            if (s.CameraFrameCount < lowFrameCount)
                FullCameraFrameCount += 0x10000;
            // update the low bits
            FullCameraFrameCount = (FullCameraFrameCount & ~0xFFFF) | s.CameraFrameCount;

            MessageExposureFrame vision(this);
            vision.CameraPattern = s.CameraPattern;
            vision.CameraFrameCount = FullCameraFrameCount;
            vision.CameraTimeSeconds = LastCameraTime.TimeSeconds;

            HandlerRef.Call(vision);
        }

        LastAcceleration = sensors.Acceleration;
        LastRotationRate = sensors.RotationRate;
        LastMagneticField= sensors.MagneticField;
        LastTemperature  = sensors.Temperature;

        //LastPixelRead = pixelRead.PixelReadValue;
        //LastPixelReadTimeStamp = LastFrameTime;
    }
    else
    {
        if (s.NumSamples != 0)
		{
			UByte i = (s.NumSamples > 1) ? 1 : 0;
			LastAcceleration  = AccelFromBodyFrameUpdate(s, i);
			LastRotationRate  = EulerFromBodyFrameUpdate(s, i);
			LastMagneticField = MagFromBodyFrameUpdate(s);
			LastTemperature   = s.Temperature * 0.01f;
		}
    }
}