230 likes | 771 Views
SPiiPlus Training Class. Kinematics. Contents. Kinematics overview Example 1: H Bot Example 2: Slider + rotary. Overview. Kinematics is the relationship between end effector position and actuator position No dynamics involved – just position relationship
E N D
SPiiPlus Training Class Kinematics
Contents • Kinematics overview • Example 1: H Bot • Example 2: Slider + rotary
Overview • Kinematics is the relationship between end effector position and actuator position • No dynamics involved – just position relationship • Forward kinematics expresses actuator positions as a function of end effector positions • Inverse kinematics expresses end effector positions as a function of actuator positions
Overview • Consider a two-link robot arm; • End effector coordinates are (x,y) • Actuator coordinates are (,) ()
Overview • Forward kinematics • Inverse kinematics ()
Overview • How does ACS implement kinematics? • User commands end effector motion (x,y in previous example) • Controller translates this to actuator motion (, in previous example) • Done using CONNECT formula • CONNECT takes motion commanded by user (typically 3rd order profile i.e. PTP, JOG) and transforms it. • Actuators obey kinematic relationship by servoing to the transformed motion command.
Overview • How to specify a kinematic relationship using CONNECT: • After homing with kinematics off, inform controller of initial end effector position using known actuator positions (forward kinematics) • Done once • ACSPL+: SET APOS(x) = f(RPOS(theta1),RPOS(theta2)) • Inform controller how to calculate actuator positions based on commanded end effector position • Specified once, calculated continuously behind the scenes • ACSPL+: CONNECT RPOS(theta1) = f(APOS(x),APOS(y))
H Bot • Schematic • Actuators: • Two rotary axes: Ɵ1, Ɵ2 • End effector: • Carriage located at x, y
H Bot • Kinematics • Forward: • Inverse:
H Bot GLOBALINT o1, o2, x, y GLOBALREAL r o1 = 0; o2 = 1 ! Define actuators x = 2; y = 3 ! Define virtual axes (end effector) r = 1 ! Define radius ! Enable actuators ENABLE (o1,o2) ! Turn off default connection for actuators MFLAGS(o1).#DEFCON = 1; MFLAGS(o1).#DEFCON = 0 MFLAGS(o2).#DEFCON = 1; MFLAGS(o2).#DEFCON = 0 ! Forward kinematics (end effector = f(actuators)) SETAPOS(x) = (1/2)*r*(-RPOS(o1)-RPOS(o2)) SETAPOS(y) = (1/2)*r*(RPOS(o1)-RPOS(o2)) ! Inverse kinematics (actuators = f(end effector)) CONNECTRPOS(o1) = (1/r)*(-APOS(x)+APOS(y)) CONNECTRPOS(o2) = (1/r)*(-APOS(x)-APOS(y)) DEPENDS o1, (x,y) DEPENDS o2, (x,y) STOP
Slider + Rotary • Actuators: • One linear slider (x) with rotary mounted to it (theta) • End effector • (userX,userY)
Slider + Rotary • Kinematics • Forward: • Inverse (two options):
Slider + Rotary • (Not so) unique situation • Two ways of bringing the end effector to the same place • Most customers pick one orientation and stick with it
Slider + Rotary GLOBALINT x, o, userX, userY GLOBALREAL l x = 0; o = 1 ! Define actuators userX = 2; userY = 3 ! Define virtual axes (end effector) l = 1 ! Define radius ! Enable actuators ENABLE (x,o) ! Turn off default connection for actuators MFLAGS(x).#DEFCON = 1; MFLAGS(x).#DEFCON = 0 MFLAGS(o).#DEFCON = 1; MFLAGS(o).#DEFCON = 0 ! Forward kinematics (end effector = f(actuators)) SETAPOS(userX) = RPOS(x) + l*COS(RPOS(o)) SETAPOS(userY) = l*SIN(RPOS(o)) ! Inverse kinematics (actuators = f(end effector)) CONNECTRPOS(x) = APOS(userX) - SQRT(POW(l,2)-POW(APOS(userY),2)) CONNECTRPOS(o) = ATAN(APOS(userY)/SQRT(POW(l,2)-POW(APOS(userY),2))) DEPENDS x, (userX,userY) DEPENDS o, (userX,userY) STOP