movemaster-robot
Version:
A module to control a Mitsubishi Movemaster EX RV-M1 robotic arm via USB
91 lines (87 loc) • 3.04 kB
TypeScript
import { SerialPort } from 'serialport';
type Position = {
x: number;
y: number;
z: number;
p: number;
r: number;
};
declare enum ROBOT_ERRORS {
HARDWARE_ERROR = 1,
COMMAND_ERROR = 2,
UNKNOWN_ERROR = 99
}
declare class Robot {
port: SerialPort | null;
position: Position | null;
toolIsOpen: boolean;
toolLength: number;
speed: number;
portIsOpen: boolean;
connect(comPortName: string): Promise<void>;
isConnected(): boolean;
private checkPortOpen;
sendCommandNoAnswer(command: string): Promise<void>;
sendCommandWithAnswer(command: string): Promise<string>;
checkRobotErrorCode(): Promise<{
ok: true;
} | {
ok: false;
error: ROBOT_ERRORS;
}>;
moveTo(position: Position, interpolatePoints?: number): Promise<void>;
/**
* Moves the robot arm to the given absolute x-y-z coordinates using current P and R values
*/
moveToXYZ(x: number, y: number, z: number, interpolatePoints?: number): Promise<void>;
getActualPosition(forceUpdateByHardware?: boolean): Promise<Position>;
setGripper(open: boolean): Promise<void>;
setSpeed(speed: number): Promise<void>;
setToolLength(length: number): Promise<void>;
withCheck<T>(result: Promise<T>): Promise<T>;
movePath(points: Position[]): Promise<void>;
/**
* Moves all axes to zero position
*/
moveToHomePosition(): Promise<void>;
/**
* Moves the robot to its mechanical origin position
* Must be performed immediately after power on
*/
nest(): Promise<void>;
/**
* Resets the control box
*/
reset(): Promise<void>;
/**
* Defines the pressure of the robot arm gripper
* @param startingGripForce Starting gripping force (0-15)
* @param retainedGrippingForce Retained gripping force (0-15)
* @param startGrippingForceRetentionTime Start gripping force retention time (0-99)
*/
setGripPressure(startingGripForce: number, retainedGrippingForce: number, startGrippingForceRetentionTime: number): Promise<void>;
/**
* Rotates the axes relative to the actual position
*/
rotateAxis(x: number, y: number, z: number, p: number, r: number): Promise<void>;
/**
* Moves the robot arm to the given relative position/axis values
* @param interpolatePoints when != 0: use linear calculated path points
*/
moveDelta(x: number, y: number, z: number, interpolatePoints?: number): Promise<void>;
moveDelta(x: number, y: number, z: number, p: number, r: number, interpolatePoints?: number): Promise<void>;
/**
* Utility function to clean up R value based on X and Y coordinates
*/
cleanUpRValue(x: number, y: number, rTarget: number): number;
/**
* Gets if the tool gripper is closed
*/
getGripperClosed(): boolean;
disconnect(): void;
getPosition(): Position | null;
getToolLength(): number;
getSpeed(): number;
listPorts(): Promise<string[]>;
}
export { Robot };