vcServoController
vcServoController is a controller for driving independent joints. The controller itself only supports forward kinematics and cannot be used in robots rather with them. For example, a servo controller can be used for external axis systems, grippers, fixtures, weld guns, and other simple mechanical structures.
Inherits: vcBehaviour
Properties
Name | Type | Access | Description |
FlangeNode | vcNode | RW | Defines the flange node of servo, for example the mount plate or carriage for other kinematic structures. |
HeartbeatTime | Real | RW | If UseHeartbeat is set to True, defines the interval or pulse for updating joints. |
JointCount | Integer | R | Gets the number of joints in servo. |
Joints | List of vcJoint | R | Gets a list of all joints referenced by servo. |
RootNode | vcNode | RW | Defines the root node of servo, thereby the fixed base of kinematic structure. |
Speed | Real | RW | Defines joint speed as a percentage of maximum speed for driving joints in range 0 to 100. |
UseHeartbeat | Boolean | RW | Turns on/off the use of a heartbeat or pulse to drive and update joints. |
Methods
Name | Return Type | Parameters | Description |
calcMotionTime | Real | None | Returns the calculated motion time of servo using current joint values and listed targets. |
createJoint | vcJoint | None | Adds a new joint in servo.
(Deprecated) |
deleteJoint | None | vcJoint joint
or Integer joint_index |
Removes a given joint or one at a given index from servo.
(Deprecated) |
findJoint | vcJoint | String joint_name | Returns the first joint matching a given name in servo; otherwise returns None. |
getJoint | vcJoint | Integer joint_index | Returns a joint at a given index in servo. |
getJointTarget | Real | Integer joint_index | Returns the target value of a joint at a given index in servo. |
getJointValue | Real | Integer joint_index | Returns the current value of a joint at a given index in servo. |
move | Real | [Real joint_0, ... Real joint_n] | Drives all joints in servo to target values, and then returns the actual motion time.
Target values for each joint in servo can be given as separate, optional arguments. |
moveImmediate | None | [Real joint_0, ... Real joint_n] | Drives all joints in servo to target values in zero simulation time.
Target values for each joint in servo can be given as separate, optional arguments. |
moveJoint | Real | Integer joint_index, Real joint_value | Moves a joint at a given index in servo to a given value, and then returns the actual motion time. |
setJointTarget | None | Integer joint_index, Real joint_value | Sets the target value of a joint at a given index in servo to a given value. |
setMotionTime | None | Real time | Forces the servo to execute joint movements at a given motion time. |
Events
Name | Parameters | Description |
OnHeartbeat | vcServoController servo, Enumeration event_type | Triggered when a pulse or heartbeat is generated by servo.
See Controller Constants for more information. Note: This event handler can be used by a vcRobotController object executing a vcRslProcessStatement object in robot program. |
Examples
Example. Create joint and assign it to servo
from vcScript import * comp = getComponent() node = comp.findNode("Link_1") node.JointType = VC_JOINTTYPE_CUSTOM servo = comp.findBehaviour("ServoController") node.Dof.Controller = servo |
Example. Calculate motion time and targets for motion
from vcScript import * def OnRun(): comp = getComponent() servo = comp.findBehaviour('ServoController') # moves j1 to 200 and j2 to 350 servo.move(200, 350) # moves j2 to 100 (index 0 = j1, index 1 = j2, ...) servo.moveJoint(1, 100) # J1: sets the target for next move but doesn't move yet servo.setJointTarget(0,1200) servo.setJointTarget(1,1400) # calculate motion time according to given joint targets and joint speeds # and accelerations predicted_motion_time = servo.calcMotionTime() print predicted_motion_time if predicted_motion_time > 6: # override given accelerations and speeds forcing the motion time to given value servo.setMotionTime( 6.0 ) # call motion to set targets servo.move() |