UNPKG

@wandelbots/nova-js

Version:

Official JS client for the Wandelbots API

57 lines (48 loc) 1.63 kB
import type { TcpPose } from "@wandelbots/nova-api/v1" export function jointValuesEqual( oldJointValues: number[], newJointValues: number[], changeDeltaThreshold: number, ): boolean { if (newJointValues.length !== oldJointValues.length) { return true } for (let jointIndex = 0; jointIndex < newJointValues.length; jointIndex++) { if ( // biome-ignore lint/style/noNonNullAssertion: legacy code Math.abs(newJointValues[jointIndex]! - oldJointValues[jointIndex]!) > changeDeltaThreshold ) { return false } } return true } export function tcpPoseEqual( oldTcp: TcpPose | undefined, newTcp: TcpPose | undefined, changeDeltaThreshold: number, ): boolean { // undefined -> defined (+reverse) transition if ((oldTcp === undefined && newTcp) || (oldTcp && newTcp === undefined)) { return false } // the typechecker cannot resolve states to "!= undefined" if "&&" is used if (oldTcp === undefined || newTcp === undefined) { return true } let changedDelta = 0 changedDelta += Math.abs(oldTcp.orientation.x - newTcp.orientation.x) changedDelta += Math.abs(oldTcp.orientation.y - newTcp.orientation.y) changedDelta += Math.abs(oldTcp.orientation.z - newTcp.orientation.z) changedDelta += Math.abs(oldTcp.position.x - newTcp.position.x) changedDelta += Math.abs(oldTcp.position.y - newTcp.position.y) changedDelta += Math.abs(oldTcp.position.z - newTcp.position.z) if (changedDelta > changeDeltaThreshold) { return false } return ( oldTcp.coordinate_system === newTcp.coordinate_system && oldTcp.tcp === newTcp.tcp ) }