Go to Post our family has no borders... - Greg Hainsworth [more]
Home
Go Back   Chief Delphi > Technical > Programming > C/C++
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Spotlight this post!  
Unread 05-01-2010, 18:34
yara92's Avatar
yara92 yara92 is offline
M.Fawdah Mechanical engineering
AKA: Mohamed
FRC #1946 (Mechka Monster)
Team Role: RoboCoach
 
Join Date: Jan 2007
Rookie Year: 2006
Location: Israel
Posts: 236
yara92 will become famous soon enoughyara92 will become famous soon enough
windriver c++?

Hello
we are trying to write a code on windriver /C++ for mecanum wheels but tell now we haven't succeed to use the HolonomicDrive function and open declaration for it from MyRobot.cpp !!
any suggestion on how to find the declaration for the HolonomicDrive functionand how to use it?
we also tried to upload our prier code which written by EasyCPro 2008 into windriver
any suggestion or advices on how we can use our EsayCPro code in Windirver ,[quote]
Code:
 the code:
void OmniDrive ( void )
{
      int LeftFront; 
      int RightFront; 
      int LeftRear; 
      int RightRear; 
      int spin_speed = 80; 
      int gray_area = 15; 
      int Y_indicator = 0; 
      int solonoid_move_up = 0; 
      int solonoid_move_down = 0; 
      int solonoid_gray_area = 70; 
      int left_greper_motor = 0; 
      int right_greper_motor = 0; 

      InitPressureSwitch ( 7 , 2 ) ;
      // this function mixes the inputs to the motors 
      // and gives the motors PWM commands to drive 
      LeftRear = RightFront = RightRear = LeftFront =0 ;
      //PrintToScreen ( "Xaxis = %d\n" , (int)XAxis ) ;
      //PrintToScreen ( "Yaxis = %d\n" , (int)YAxis ) ;
      if ( YAxis > gray_area  )
      {
            Y_indicator = 1;
      }
      else
      {
      }
      if ( (gray_area * -1) < XAxis && XAxis < gray_area )
      {
             XAxis =0;
      }
      if ( (gray_area * -1) < YAxis && YAxis < gray_area  )
      {
            YAxis =0;
      }
      if (  XAxis ==0 || (XTrig && YAxis==0) ) // X or Y move (90 degrees)
      {
            //PrintToScreen ( "Triger=%d%d\n" , (int)XTrig ) ;
            if ( XAxis > gray_area&& XTrig  )
            {
                  degree_90_fix = - DEGREE_90_FIX;
            }
            else if ( XAxis < - gray_area&& XTrig  )
            {
                  degree_90_fix = DEGREE_90_FIX;
            }
            else
            {
                  degree_90_fix = 0;
            }
            LeftRear =YAxis -XAxis ;
            LeftFront =YAxis + XAxis + degree_90_fix  ;
            RightRear =YAxis + XAxis ;
            RightFront =YAxis  -XAxis + degree_90_fix   ;
      }
      else if ( RTrig && YAxis==0 )
      {
            LeftFront = LeftRear = XAxis ;
            RightFront = RightRear = -XAxis ;
      }
      else if ( XAxis > gray_area ) // Right Turn
      {
            LeftFront = LeftRear = Y_indicator * XAxis + YAxis ;
            RightFront = RightRear = ((127 - XAxis ) /(float) 127.0) *  
YAxis ;
            //LeftRear = LeftFront = YAxis + ( YAxis *.75  * Y_indicator )  
;
            //RightRear = RightFront = YAxis - ( YAxis *0.25 * Y_indicator  
) ;
            PrintToScreen("Right Turn: XaXIS =%d ,  Yaxis=%d, leftrear=% 
d,leftfront=%d,rightrear=%d,rightfront=%d\n-----------Percent= %f---- 
\n",XAxis ,YAxis , LeftRear , LeftFront , RightRear , RightFront , (float)  
RightFront/(float)LeftFront );
      }
      else if ( XAxis < (-1 * gray_area) ) // Left Turn
      {
            RightFront = RightRear = -XAxis* Y_indicator  + YAxis ;
            LeftRear = LeftFront = ((127 + XAxis ) /(float) 127.0) * YAxis  
;
            //LeftRear = LeftFront = YAxis - ( YAxis *0.25 * Y_indicator )  
;
            //RightRear = RightFront = YAxis + ( YAxis *0.75 * Y_indicator  
) ;
            //PrintToScreen("Left Turn:   Xaxis = %d, Yaxis=%d,leftrear=% 
d,leftfront=%d,rightrear=%d,rightfront=%d\n----------------turn percent =  
%f-----------\n",XAxis ,YAxis , LeftRear , LeftFront , RightRear ,  
RightFront ,(float) LeftRear/(float)RightRear);
      }
      // The following nominalizes the values for the speed 
      if ( LeftFront < MAX_SPEED_B  )
      {
            LeftFront = MAX_SPEED_B  ;
      }
      if ( LeftFront > MAX_SPEED_F  )
      {
            LeftFront = MAX_SPEED_F  ;
      }
      if ( RightFront < MAX_SPEED_B  )
      {
            RightFront = MAX_SPEED_B  ;
      }
      if ( RightFront > MAX_SPEED_F  )
      {
            RightFront = MAX_SPEED_F  ;
      }
      if ( RightRear < MAX_SPEED_B  )
      {
            RightRear = MAX_SPEED_B  ;
      }
      if ( RightRear > MAX_SPEED_F  )
      {
            RightRear = MAX_SPEED_F  ;
      }
      if ( LeftRear < MAX_SPEED_B  )
      {
            LeftRear = MAX_SPEED_B  ;
      }
      if ( LeftRear > MAX_SPEED_F  )
      {
            LeftRear = MAX_SPEED_F  ;
      }
      // Now we add 6 back to the speed 
      // The speed values are stored in an array from 0 - 13 
      // with 7 as neutral 
      // We used 0 as neutral before to allow for seemless addition and  
subtraction 
      // Set the motors and add back 127 for 0-255 
      // If you need to invert a motor replace with"255-(LeftFront+127)" 
      SetPWM ( Left_Rear_PWM , (LeftRear+127) ) ; // Output to Motor
      SetPWM ( Left_Front_PWM , LeftFront+127 ) ; // Output to Motor
      SetPWM ( Right_Rear_PWM , (255-RightRear+127) ) ; // Output to Motor
      SetPWM ( Rigth_Front_PWM , (255-RightFront+127) ) ; // Output to  
Motor
      if ( solonoid_Yaxis > solonoid_gray_area  )
      {
            solonoid_move_up = 1 ;
            solonoid_move_down = -1 ;
      }
      else if (  solonoid_Yaxis < (-1) *  solonoid_gray_area )
      {
            solonoid_move_up= -1 ;
            solonoid_move_down = 1 ;
      }
      else
      {
            solonoid_move_up = 0 ;
            solonoid_move_down = 0 ;
      }
      SetRelay ( 1 , solonoid_move_up , solonoid_move_down ) ;
      if ( Solonoid_push  )
      {
            SetRelay ( 3 , 1 , 0 ) ;
            Wait ( 400 ) ;
            SetRelay ( 3 , 0 , 1 ) ;
            Wait ( 400 ) ;
            SetRelay ( 3 , 0 , 0 ) ;
      }
      if ( greper_inital_open_trig && inital_done  )
      {
            inital_done = 0 ;
            left_greper_motor = 1 ;
            right_greper_motor  = 1 ;
      }
      else if ( greper_open_trig  )
      {
            printf("----------in OPEN trig-----------\n");
            left_greper_motor = 70 ;
            right_greper_motor  = 70 ;
      }
      else if ( grepre_close_trig  )
      {
            printf("----------in CLOSE trig-----------\n");
            left_greper_motor = 200 ;
            right_greper_motor  = 200 ;
      }
      else
      {
            printf("----------in ELSE trig-----------\n");
            left_greper_motor = 127 ;
            right_greper_motor  = 127 ;
      }
      SetPWM ( LEFT_GREPER_PWM , left_greper_motor ) ; // Output to Motor
      SetPWM ( RIGHT_GREPER_PWM , right_greper_motor ) ; // Output to  
Motor
}
Team 1946
__________________
TEAM 1946-Tamra
Reply With Quote
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
WindRiver purchase karatekid C/C++ 7 21-01-2010 17:04
Windriver Scarra3 C/C++ 1 31-12-2009 03:10
WindRiver Errors ExarKun666 C/C++ 7 04-03-2009 20:32
compiling in windriver koreabell Programming 4 05-01-2009 15:32


All times are GMT -5. The time now is 11:58.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi