Go to Post I know FIRST is all about changing society. But my approach is one person at a time. - Phil 33 [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 01-10-2008, 07:54
xanarchyx xanarchyx is offline
Capt' of Manipulator
AKA: Collin Matthews
FRC #1714 (More Robotics)
Team Role: Engineer
 
Join Date: Jan 2008
Rookie Year: 2006
Location: Wisconson
Posts: 18
xanarchyx is an unknown quantity at this point
Omni Vex code in easyc?

So im a noob at codeing and im trying to do omni drive in easy c. I would be able to maby do it in mplab but i don't got access to that software. im wondering how to go about doing it in easy c?
any suggestions. o ps.....its v.5 not the shiney new version 2.0. theres not that big of a difference though.
any help would be greatly appreciated.
  #2   Spotlight this post!  
Unread 01-10-2008, 10:16
Jon236's Avatar
Jon236 Jon236 is offline
Registered User
AKA: Jon Mittelman
FRC #2648 (Infinite Loop)
Team Role: Mentor
 
Join Date: Jan 2004
Rookie Year: 2000
Location: Windsor, Maine
Posts: 741
Jon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond reputeJon236 has a reputation beyond repute
Re: Omni Vex code in easyc?

You should look at this document:

http://www.chiefdelphi.com/media/papers/1836
__________________
Jon Mittelman

Senior Judge Advisor New England & Israel 2014-2015
Infinite Loop Mentor 2011-2015
TechnoTicks Mentor 2000-2011
Championship Chairman's Award 2009 Team236 TechnoTicks
Judge 2010-2015 Championships
Senior Judge Advisor New England District Championship 2014-2015
Judge Advisor Tel Aviv Regional 2007-2015
Judge Advisor Pine Tree Regional 2013
Maine Regional Planning Committee
New England District Planning Committee
Lead Inspector Microsoft Tel Aviv Regional 2006-2008
Judge & Lead Inspector GM/Technion Tel Aviv Regional 2006
Judge UTC Hartford Regional 2006
  #3   Spotlight this post!  
Unread 01-10-2008, 11:44
Foster Foster is offline
Engineering Program Management
VRC #8081 (STEMRobotics)
Team Role: Mentor
 
Join Date: Jul 2007
Rookie Year: 2005
Location: Delaware
Posts: 1,392
Foster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond repute
Re: Omni Vex code in easyc?

When you say Omni drive, what are trying to say?

Are you thinking about a Mecanum drive? That will be hard to do, since there are not Vex Mecanum wheels (unless you fabricate your own)

Are you thinking about a Holononmic drive? 4 wheel 90 degree offset. That would be four omni wheels, one on each face of a square bot.

Are you thinking about a 3 wheel 120 degree offset or Kiwi drive?

This is a good drive description video

Thanks!
Foster
  #4   Spotlight this post!  
Unread 05-10-2008, 16:32
xanarchyx xanarchyx is offline
Capt' of Manipulator
AKA: Collin Matthews
FRC #1714 (More Robotics)
Team Role: Engineer
 
Join Date: Jan 2008
Rookie Year: 2006
Location: Wisconson
Posts: 18
xanarchyx is an unknown quantity at this point
Re: Omni Vex code in easyc?

yes....im thinking the 4 wheel 90* off set. Sorry for not clarifying
  #5   Spotlight this post!  
Unread 05-10-2008, 17:41
Foster Foster is offline
Engineering Program Management
VRC #8081 (STEMRobotics)
Team Role: Mentor
 
Join Date: Jul 2007
Rookie Year: 2005
Location: Delaware
Posts: 1,392
Foster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond reputeFoster has a reputation beyond repute
Re: Omni Vex code in easyc?

If you search for holonomic drive, you can find a number of posts about it.

Arthur Dutra wrote this code (and posted it) to support a holononmic drive. One joystick stick moves forward/back and side-side (and diagonally) for translation motion. The other joystic moves left/right to rotate, both can be moved at the same time.

The platform consists of four omni wheels mounted at 180 degrees from the next corner (ie two go "forward / backwards" two go "left / right"

Code is for the WPILibrary, so it should work fine with EasyC.

Let us know how you make out.

Code:
#include "API.h"

void main ( void )
{
int LF; // Left Front
int RF; // Right Front
int LR; // Left Rear
int RR; // Right Rear
int leftx;
int lefty;
int rightx;
int spin;
      while ( 1 )
      {
            // Get Data 
            leftx = GetRxInput ( 1 , 4 ) ; // Left Joystick, X Axis
            lefty = GetRxInput ( 1 , 3 ) ; // Left Joystick, Y Axis
            rightx = GetRxInput ( 1 , 1 ) ; // Right Joystick, X Axis
            // Half the input signal (so code does not overflow past 255)
            leftx = leftx / 2 ;
            lefty = lefty / 2 ;
            spin = rightx / 2 ;
            // Drive Code Algorithim
            LF = RR = lefty - leftx + 127 ;
            RF = LR = 255 - lefty - leftx ;
            RR = 255 - RR ; // Reverse Direction of RR motor
            LR = 255 - LR ; // Reverse Direction of LR motor
            // Spin Code Algorithim
            RF = RF - spin + 63 ;
            RR = RR - spin + 63 ;
            LF = LF - spin + 63 ;
            LR = LR - spin + 63 ;
            // Code overflow prevention
            if ( LF < 0 )
            {
                  LF = 0 ;
            }
            else if ( LF > 255 )
            {
                  LF = 255 ;
            }
            if ( RF < 0 )
            {
                  RF = 0 ;
            }
            else if ( RF > 255 )
            {
                  RF = 255 ;
            }
            if ( RR < 0 )
            {
                  RR = 0 ;
            }
            else if ( RR > 255 )
            {
                  RR = 255 ;
            }
            if ( LR < 0 )
            {
                  LR = 0 ;
            }
            else if ( LR > 255 )
            {
                  LR = 255 ;
            }
            // Set Motors
            SetMotor ( 1 , RF ) ;
            SetMotor ( 2 , LF ) ;
            SetMotor ( 3 , LR ) ;
            SetMotor ( 4 , RR ) ;
      }
}
  #6   Spotlight this post!  
Unread 21-10-2008, 20:57
xanarchyx xanarchyx is offline
Capt' of Manipulator
AKA: Collin Matthews
FRC #1714 (More Robotics)
Team Role: Engineer
 
Join Date: Jan 2008
Rookie Year: 2006
Location: Wisconson
Posts: 18
xanarchyx is an unknown quantity at this point
Re: Omni Vex code in easyc?

stupid question but how do i upload this into easy c....this looks like its for mp lab.

Last edited by xanarchyx : 21-10-2008 at 21:03.
  #7   Spotlight this post!  
Unread 21-10-2008, 23:37
Aaron S's Avatar
Aaron S Aaron S is offline
Registered User
FRC #1612 (Robosharks)
Team Role: Programmer
 
Join Date: Jul 2008
Rookie Year: 2008
Location: United States
Posts: 11
Aaron S is an unknown quantity at this point
Send a message via AIM to Aaron S
Re: Omni Vex code in easyc?

Just look at the code and match it in EasyC with blocks, you can't just copy and paste.
  #8   Spotlight this post!  
Unread 22-10-2008, 10:17
Kingofl337's Avatar
Kingofl337 Kingofl337 is offline
You didn't see anything....
AKA: Adam
FRC #0501 (Power Knights)
Team Role: Mentor
 
Join Date: Feb 2005
Rookie Year: 1998
Location: Manchester, NH
Posts: 861
Kingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond repute
Send a message via Yahoo to Kingofl337
Re: Omni Vex code in easyc?

With easyC Pro you can.
__________________
FIRST Team 501 PowerKnights - Mentor
FIRST Team 40 Checkmate - Mentor Alum
FIRST Team 146 Blue Lightning - Alumni
  #9   Spotlight this post!  
Unread 22-10-2008, 22:47
xanarchyx xanarchyx is offline
Capt' of Manipulator
AKA: Collin Matthews
FRC #1714 (More Robotics)
Team Role: Engineer
 
Join Date: Jan 2008
Rookie Year: 2006
Location: Wisconson
Posts: 18
xanarchyx is an unknown quantity at this point
Re: Omni Vex code in easyc?

ok ill try and match it...but i got pro, i haven't been able to figure out how to manually code....like i know you can....im just missing it.
  #10   Spotlight this post!  
Unread 23-10-2008, 09:29
Kingofl337's Avatar
Kingofl337 Kingofl337 is offline
You didn't see anything....
AKA: Adam
FRC #0501 (Power Knights)
Team Role: Mentor
 
Join Date: Feb 2005
Rookie Year: 1998
Location: Manchester, NH
Posts: 861
Kingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond reputeKingofl337 has a reputation beyond repute
Send a message via Yahoo to Kingofl337
Re: Omni Vex code in easyc?

Here is the easiest way to do what you wish.
1.) Right click on User Functions -> Add New -> Name it omni and click ok
2.) Click on the project tab.
3.) Right Click on the function name -> Convert to 'C' Code -> Yes
4.) After you function will look like this....

#include "Main.h"

void omni ( void )
{
<---Paste the code in here
}

5.) Paste the code provided between the braces starting at the variables and ending with the last brace.
6.) Rename SetMotor to SetPWM
7.) Goto the UserInclude.h File and under where it says "Add User Code Here"
Add a line : void omni (void );


This should work, I tested it out.
__________________
FIRST Team 501 PowerKnights - Mentor
FIRST Team 40 Checkmate - Mentor Alum
FIRST Team 146 Blue Lightning - Alumni
  #11   Spotlight this post!  
Unread 09-11-2008, 11:22
daltore's Avatar
daltore daltore is offline
Electronics/programming/design
AKA: Aaron Osmer
FRC #3529 (ausTIN CANs)
Team Role: Mentor
 
Join Date: Dec 2007
Rookie Year: 2007
Location: San Antonio, TX
Posts: 272
daltore has a spectacular aura aboutdaltore has a spectacular aura aboutdaltore has a spectacular aura about
Send a message via AIM to daltore Send a message via MSN to daltore Send a message via Yahoo to daltore
Re: Omni Vex code in easyc?

Why is it necessary to cap the values at the maximums and minimums? Does the processor not automatically do this? I've always found it easier to subtract values from full drive and having the motors that need to be full power just have values greater than 255 and subtracting values from the other wheels instead of just starting from half power for everything. That way, you get full speed, but everything still works fine. I've never done a holonomic function, but this usually works fine for homemade arcade drives and the similar.

Also, please correct me when I say the obvious thing I'm missing, but the algorithm doesn't quite look right:

Code:
            LF = RR = lefty - leftx + 127 ;
            RF = LR = 255 - lefty - leftx ;
The first one would seem to stop the front left and rear right motors if the joystick goes to the upper right or bottom left, which would defeat the purpose of being able to translate diagonally, wouldn't it? As for the second one, it looks like it would barely have any power even when the joystick was straight forward, and again stopped when going to the upper left or bottom right. I know I'm probably missing something here, but I can't seem to get it. Is this what the adding 63 is supposed to solve? I figured that was to offset the below 127 motor values for spinning.

I'm designing a robot to drive this way for practicing during Elevation, and I've not yet had time to start (notice the 4 weeks between BEST competition and VEX).

Any clue what I'm missing?
  #12   Spotlight this post!  
Unread 03-09-2009, 16:17
grim's Avatar
grim grim is offline
Inventor Guru
AKA: Todd
FRC #0549 (Devil Dawgs)
Team Role: Mentor
 
Join Date: Feb 2008
Rookie Year: 2006
Location: Leominster, MA
Posts: 29
grim is on a distinguished road
Re: Omni Vex code in easyc?

Quote:
Originally Posted by Kingofl337 View Post
Here is the easiest way to do what you wish.
1.) Right click on User Functions -> Add New -> Name it omni and click ok
2.) Click on the project tab.
3.) Right Click on the function name -> Convert to 'C' Code -> Yes
4.) After you function will look like this....

#include "Main.h"

void omni ( void )
{
<---Paste the code in here
}

5.) Paste the code provided between the braces starting at the variables and ending with the last brace.
6.) Rename SetMotor to SetPWM
7.) Goto the UserInclude.h File and under where it says "Add User Code Here"
Add a line : void omni (void );


This should work, I tested it out.
I'm not seeing the the Convert to 'C' code option on the right click menu. Is this an EasyC Pro function? We have a trial version and it doesn't appear.
__________________
"Does fuzzy logic create lint?"
Closed Thread


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
2008 Omni Drive Code Help Vasily Zaitsev Technical Discussion 5 27-01-2008 00:57
pic: vex omni drive 1902_Battery_SGT FIRST Tech Challenge 6 28-05-2006 17:55
pic: simple omni vex bot colin340 FIRST Tech Challenge 15 05-05-2006 17:16
EasyC Default Code Team 1649 Programming 13 29-01-2006 11:52
Vex Easyc vs Mplab Joohoo Programming 17 27-01-2006 08:22


All times are GMT -5. The time now is 00:07.

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