@wandelbots/wandelbots-js-react-components
Version:
React UI toolkit for building applications on top of the Wandelbots platform
205 lines • 8.11 kB
TypeScript
import type { CoordinateSystem, JoggerConnection, MotionGroupSpecification, RobotTcp } from "@wandelbots/nova-js/v1";
import { type IReactionDisposer } from "mobx";
declare const discreteIncrementOptions: {
id: string;
mm: number;
degrees: number;
}[];
declare const incrementOptions: readonly [{
readonly id: "continuous";
}, ...{
id: string;
mm: number;
degrees: number;
}[]];
export type JoggingAxis = "x" | "y" | "z";
export type JoggingDirection = "+" | "-";
export type DiscreteIncrementOption = (typeof discreteIncrementOptions)[number];
export type IncrementOption = (typeof incrementOptions)[number];
export type IncrementOptionId = IncrementOption["id"];
export declare const ORIENTATION_IDS: string[];
export type OrientationId = (typeof ORIENTATION_IDS)[number];
export type IncrementJogInProgress = {
direction: JoggingDirection;
axis: JoggingAxis;
};
export declare class JoggingStore {
readonly jogger: JoggerConnection;
readonly motionGroupSpec: MotionGroupSpecification;
readonly coordSystems: CoordinateSystem[];
readonly tcps: RobotTcp[];
selectedTabId: "cartesian" | "joint" | "debug";
/**
* State of the jogging panel. Starts as "inactive"
*/
activationState: "inactive" | "loading" | "active";
/**
* If an error occurred connecting to the jogging websocket
*/
activationError: unknown | null;
/** To avoid activation race conditions */
activationCounter: number;
/** Locks to prevent UI interactions during certain operations */
locks: Set<string>;
/**
* Id of selected coordinate system from among those defined on the API side
*/
selectedCoordSystemId: string;
/** Id of selected tool center point from among the options available on the robot */
selectedTcpId: string;
/**
* Whether the user is jogging in the coordinate system or tool orientation.
* When in tool orientation, the robot moves in a direction relative to the
* attached tool rotation.
*/
selectedOrientation: OrientationId;
/**
* Id of selected increment amount for jogging. Options are defined by robot pad.
* When non-continuous, jogging moves the robot by a fixed number of mm or degrees
* each time the button is pressed, for extra precision
*/
selectedIncrementId: IncrementOptionId;
/**
* When on the cartesian tab, jogging can be either translating or rotating
* around the TCP.
*/
selectedCartesianMotionType: "translate" | "rotate";
/**
* If the jogger is busy running an incremental jog, this will be set
* with the information about the motion
*/
incrementJogInProgress: IncrementJogInProgress | null;
/** How fast the robot goes when doing cartesian translate jogging in mm/s */
translationVelocityMmPerSec: number;
/** How fast the robot goes when doing cartesian or joint rotation jogging in °/s */
rotationVelocityDegPerSec: number;
/** Minimum translation velocity user can choose on the velocity slider in °/s */
minTranslationVelocityMmPerSec: number;
/** Maximum translation velocity user can choose on the velocity slider in °/s */
maxTranslationVelocityMmPerSec: number;
/** Minimum rotation velocity user can choose on the velocity slider in °/s */
minRotationVelocityDegPerSec: number;
/** Maximum rotation velocity user can choose on the velocity slider in °/s */
maxRotationVelocityDegPerSec: number;
/** Whether to show the coordinate system select dropdown in the UI */
showCoordSystemSelect: boolean;
/** Whether to show the TCP select dropdown in the UI */
showTcpSelect: boolean;
/** Whether to show the orientation select dropdown in the UI */
showOrientationSelect: boolean;
/** Whether to show the increment select dropdown in the UI */
showIncrementSelect: boolean;
/** Whether to show icons in the jogging tabs */
showTabIcons: boolean;
/** Whether to show the label to the right of the velocity slider */
showVelocitySliderLabel: boolean;
/** Whether to show the legend before the slider */
showVelocityLegend: boolean;
/** Whether to show the legend before the joints */
showJointsLegend: boolean;
disposers: IReactionDisposer[];
/**
* Load a jogging store with the relevant data it needs
* from the backend
*/
static loadFor(jogger: JoggerConnection): Promise<JoggingStore>;
constructor(jogger: JoggerConnection, motionGroupSpec: MotionGroupSpecification, coordSystems: CoordinateSystem[], tcps: RobotTcp[]);
dispose(): void;
get coordSystemCountByName(): import("lodash").Dictionary<number>;
deactivate(): Promise<void>;
/** Activate the jogger with current settings */
activate(): Promise<JoggerConnection>;
loadFromLocalStorage(): void;
saveToLocalStorage(): void;
get isLocked(): boolean;
get localStorageSave(): {
selectedTabId: "debug" | "cartesian" | "joint";
selectedCoordSystemId: string;
selectedTcpId: string;
selectedOrientation: string;
selectedIncrementId: string;
selectedCartesianMotionType: "translate" | "rotate";
};
get tabs(): readonly [{
readonly id: "cartesian";
readonly label: "cartesian";
}, {
readonly id: "joint";
readonly label: "joint";
}];
get incrementOptions(): readonly [{
readonly id: "continuous";
}, ...{
id: string;
mm: number;
degrees: number;
}[]];
get discreteIncrementOptions(): {
id: string;
mm: number;
degrees: number;
}[];
get incrementOptionsById(): import("lodash").Dictionary<{
id: string;
mm: number;
degrees: number;
} | {
readonly id: "continuous";
}>;
get tabsById(): import("lodash").Dictionary<{
readonly id: "cartesian";
readonly label: "cartesian";
} | {
readonly id: "joint";
readonly label: "joint";
}>;
get currentTab(): {
readonly id: "cartesian";
readonly label: "cartesian";
} | {
readonly id: "joint";
readonly label: "joint";
};
get tabIndex(): number;
get coordSystemsById(): import("lodash").Dictionary<CoordinateSystem>;
get selectedCoordSystem(): CoordinateSystem;
/**
* The id of the coordinate system to use for jogging.
* If in tool orientation, this is set to "tool", not the
* selected coordinate system.
*/
get activeCoordSystemId(): string;
get tcpsById(): import("lodash").Dictionary<RobotTcp>;
get activeDiscreteIncrement(): {
id: string;
mm: number;
degrees: number;
} | undefined;
/** The selected rotation velocity converted to radians per second */
get rotationVelocityRadsPerSec(): number;
/** Selected velocity in mm/sec or deg/sec */
get velocityInDisplayUnits(): number;
/** Minimum selectable velocity in mm/sec or deg/sec */
get minVelocityInDisplayUnits(): number;
/** Maximum selectable velocity in mm/sec or deg/sec */
get maxVelocityInDisplayUnits(): number;
/**
* For velocity unit purposes, joint and cartesian rotation
* are treated as the same type of motion
*/
get currentMotionType(): "translate" | "rotate";
onTabChange(_event: React.SyntheticEvent, newValue: number): void;
setSelectedCoordSystemId(id: string): void;
setSelectedTcpId(id: string): void;
setSelectedOrientation(orientation: OrientationId): void;
setSelectedIncrementId(id: IncrementOptionId): void;
setCurrentIncrementJog(incrementJog: IncrementJogInProgress | null): void;
setVelocityFromSlider(velocity: number): void;
setSelectedCartesianMotionType(type: "translate" | "rotate"): void;
lock(id: string): void;
unlock(id: string): void;
/** Lock the UI until the given async callback resolves */
withMotionLock(fn: () => Promise<void>): Promise<void>;
}
export {};
//# sourceMappingURL=JoggingStore.d.ts.map