#include "tracking.h" extern VWHandle vwhandle; int turn_left(VWHandle *vw_handle) { #ifdef DEBUG LCDPrintf("turning left\n"); #endif if (VWDriveTurn(*vw_handle, TURN_ANGLE, TURN_SPEED)!=0) return false; if (VWDriveWait(*vw_handle) !=0) return false; return true; } int turn_right(VWHandle *vw_handle) { #ifdef DEBUG LCDPrintf("turning right\n"); #endif if (VWDriveTurn(*vw_handle, -TURN_ANGLE, TURN_SPEED)!=0) return false; if (VWDriveWait(*vw_handle) !=0) return false; return true; } int move_forward(VWHandle *vw_handle) { #ifdef DEBUG LCDPrintf("moving forward\n"); #endif if( VWDriveStraight(*vw_handle, DISTANCE, FORWARD_SPEED) !=0)return false; if(VWDriveWait(*vw_handle) !=0) return false; return true; } int move_backward(VWHandle *vw_handle) { #ifdef DEBUG LCDPrintf("moving forward\n"); #endif if( VWDriveStraight(*vw_handle, -DISTANCE, FORWARD_SPEED) !=0)return false; if(VWDriveWait(*vw_handle) !=0) return false; return true; } int initVW(VWHandle *vw_handle) { *vw_handle = VWInit(VW_DRIVE, 1); if (*vw_handle == 0) { LCDPrintf("VWInit() error\n"); return false; } VWStartControl(*vw_handle, 7, 0.3, 7, 0.1); /*optimum drive control*/ /* Vv: 7 (proportional component of the v-controller) * Tv: 0.3 (integrating component of the v-controller) * Vw: 7 (proportional component of the w-controller) * Tw: 0.1 (integrating component of the w-controller) */ return true; } int releaseVW(VWHandle *vw_handle) { if (VWStopControl(*vw_handle) == -1) { LCDPrintf("error stopping VWControl...\n"); return false; } if(VWRelease(*vw_handle)==-1) { LCDPrintf("error releasing VWHandle...\n"); return false; } return true; } void initPSD(PSDHandle *psd_front, PSDHandle *psd_right, PSDHandle *psd_left, PSDHandle *psd_back) { *psd_front = PSDInit(PSD_FRONT); *psd_left = PSDInit(PSD_LEFT); *psd_right = PSDInit(PSD_RIGHT); // *psd_back = PSDInit(PSD_BACK); PSDStart(*psd_front|*psd_left|*psd_right, /* | *psd_back */ TRUE); /* start all 3 psd in continuous measuring cycles*/ } void releasePSD(void) { PSDStop(); PSDRelease(); } void camInit(void) { int camera; /* just used for checking camera status */ camera = CAMInit(NORMAL); /* CAMInit is an eyebot library func */ if (camera == NOCAM) LCDPrintf("Camera not detected!\n"); else if (camera == INITERROR) LCDPrintf("Camera Initialisation Error!\n"); } /** * @brief Releases camera resources. */ void camRelease(void) { if(CAMRelease()==-1) LCDPrintf("Warning: Camera Resources Not Released\n"); }