View Single Post
  #10   Spotlight this post!  
Unread 26-10-2010, 18:41
Robototes2412's Avatar
Robototes2412 Robototes2412 is offline
1 * 4 != 14
FRC #2412 (Robototes)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2007
Location: Bellevue
Posts: 312
Robototes2412 is on a distinguished road
Re: RobotPy: Python for FRC

I have basic driving functions and inputs programmed:

output.py
Code:
#Made by Sam Dodrill for Team 2412, WTFPL

from wpilib import Victor, Solenoid
import wpilib
import math

class Driver:
    def __init__(self, FL, FR, RL = None, RR = None):
        self.FLvictor = Victor(FL)
        self.FRvictor = Victor(FR)
        
        if RL != None and RR != None:become standard for the interpreter :)
            self.RLvictor = Victor(RL)
            self.RRvictor = Victor(RR)
            self.fourWheel = True
            
        
    def drive(self, speed):
        self.FLvictor.Set(speed)
        self.FRvictor.Set(-speed)
        
        if fourWheel:
            self.RLvictor.Set(speed)
            self.RRvictor.Set(-speed)
    
    def tankDrive(self, left, right):
        self.FLvictor.Set(left)
        self.FRvictor.Set(-right)
        
        if fourWheel:
            self.RLvictor.Set(left)
            self.FRvictor.Set(-right)
    
    def limit(self, n):
        if n > 1:
            return 1
        elif n < -1:
            return -1
        else:
            return n
    
    def arcadeDrive(self, speed, direction):
        left  = speed - direction
        right = speed + direction
        
        maxi = max(left, right)
        
        if maxi > 1:
            left = left/maxi
            right = right/maxi
        
        left = limit(left)
        right = limit(right)
        
        self.tankDrive(left, right)
        
    def holonomicDrive(self, power, slide, spin):
        fl = power + slide + spin
        fr = power - slide - spin
        rl = power - slide + spin
        rr = power + slide - spin
        
        fl = limit(fl);
        fr = limit(fr);
        rl = limit(rl);
        rr = limit(rr);
        
        self.setSpeed(fl, fr, rl, rr)
        
    def setSpeed(self, fl, fr, rl, rr):
        self.FLvictor.Set(fl)
        self.FRvictor.Set(-fr)
        self.RLvictor.Set(rl)
        self.RRvictor.Set(-rr)
        
    def goLeft(self):
        self.holonomicDrive(0, 0.5, 0)
    
    def goRight(self):
        self.holonomicDrive(0, -0.5, 0)
    
    def goForward(self):
        self.holonomicDrive(0.5, 0, 0)
    
    def goBackward(self):
        self.holonomicDrive(-0.5, 0, 0)
    
    def turnLeft(self):
        self.holonomicDrive(0, 0, -0.5)
        
    def turnRight(self):
        self.holonomicDrive(0, 0, 0.5)
    
    def stop(self):
        print("OH CRAP")
        self.drive(0)
input.py:
Code:
#made by Sam Dodrill for team 2412, but you can use it too

import wpilib, math

class Attack3:
    def __init__(self, port)
        self.joy = wpilib.Joystick(port)
    
    def getX(self):
        return self.joy.GetRawAxis(2)
    
    def getY(self):
        return self.joy.GetRawAxis(1)
    
    def getThrottle(self):
        return self.joy.GetRawAxis(3)
    
    def getTrigger(self):
        return self.joy.GetRawButton(1)
    
    def get2(self):
        return self.joy.GetRawButton(2)
    
    def get3(self):
        return self.joy.GetRawButton(3)
    
    def get4(self):
        return self.joy.GetRawButton(4)
    
    #yada yada yada, TODO: finish with all 11 buttons
    
def calcBuffer(self, n):
    buffers = 0.2
    if math.abs(n) < buffers:
        n = 0
        
    return n
    
class Xbox:
    def __init__(self, port):
        self.joy = wpilib.Joystick(port)
    
    def getStick(self, n1, n2): #returns a list in the form of [x,y]
        r = list()
        r.append(calcBuffer(self.joy.GetRawAxis(n1)))
        r.append(calcBuffer(self.joy.GetRawAxis(n2)))
        return r
    
    def getLeftStick(self):
        return self.getStick(1,2)
    
    def getRightStick(self):
        return self.getStick(4,5)
    
    def getButtons(self, n1, n2, n3, n4): #returns a list in the form of [b1, b2, b3, b4]
        r = list()
        r.append(self.joy.GetRawButton(n1))
        r.append(self.joy.GetRawButton(n2))
        r.append(self.joy.GetRawButton(n3))
        r.append(self.joy.GetRawButton(n4))
        
        return r
        
    def getMainButtons(self): #returns [a,b,x,y]
        return self.getButtons(1, 2, 3, 4)
Reply With Quote