Thread: Custom Joystick Rotation View Single Post
#4
11-02-2012, 08:49 AM
 mhead10 Member Join Date: Mar 2012 Posts: 40
Defining & Using Multiple Centers (of Rotation)

HELLO!

I'm still trying to find out how to set multiple centers (three) for my custom joystick.

Separately, my three joystick centers (and rotations/translations) work perfectly. However, when I try and put all three of the centers (and rotations/translation) into one main function, I get three separate joysticks or the last of the centers overwrites the first two.

Can someone please tell me how I can have three successive centers (and rotation/translation functions) for my joystick?

The pseudo code would look something like:
Code:
def Kinematics_1():
setCenter_1
setEuler_1
setPosition_1

def Kinematics_2():
setCenter_2
setEuler_2
setPosition_2

def Kinematics_3():
setCenter_3
setEuler_3
setPosition_3

def read_DAQ(): #read in data from DAQ
data = pdata

def director_loop():
Kinematics_1()
Kinematics_2()
Kinematics_3()

My actual current code (summarized):
Code:
shaft = viz.add('shaft.dae', pos = (0,5,-5))
babcock_1 = viz.addChild('origin.dae', parent = shaft)
babcock_2 = viz.addChild('origin.dae', parent = shaft)

scale = 40 #degrees (360/9)
trans_scale = 5 #translation pot (pot #1)

def read_DAQ(): # used obtain DAQ values
float64(-1),
return(pdata)

def Kinematics_1():
shaft.center(0,0,1.738)
#POT 0- BASE ROTATIONS
shaft.setEuler(180+scale*pdata[0],0,0)

#POT 1- TRANSLATION#
shaft.setPosition(0,0,pdata[1]*trans_scale-3)

#pot 2: grasper open/clock

babcock_1.setEuler(160-pdata[2]*scale,0,0)
babcock_2.setEuler(-160+pdata[2]*scale,0,180)

#POT 3: JOYSTICK TIP ROTATION
#POT 4: FIRST U-JOINT ROTATION
shaft.setEuler(180+scale*pdata[0],(pdata[4]*scale)+180,-(pdata[3]*scale)+90) #CORRECT(3), CORRECT(4)

def Kinematics_2():
shaft.setCenter(0,-1.6125,1.738)
#POT 5- 1st U-Joint, 2nd Rotation
#POT 6- 2nd U-Joing, 1st Rotation
shaft.setEuler(0,(-pdata[5]*scale)-180,pdata[6]*scale) #reversed pot glue position 180 deg

def Kinematics_3():
shaft.setCenter(0,-3.227/2,1.738)
shaft.setEuler(0,0,pdata[7]*scale+40)

def read_DAQ(): # used obtain DAQ values