diff --git a/src/components/arm/ArmModel.vue b/src/components/arm/ArmModel.vue index 3450b46..57f94e9 100644 --- a/src/components/arm/ArmModel.vue +++ b/src/components/arm/ArmModel.vue @@ -6,33 +6,45 @@ import { CanBusID, useTelemetryData } from '@/lib/roslibUtils/telemetry'; const { scene } = await useGLTF('newarm.glb'); -//TODO: - add remaining bones -// - connect data to bones +//const wrist = scene.getObjectByName('Wrist') as Bone; const shoulder = scene.getObjectByName('Shoulder') as Bone; const elbow = scene.getObjectByName('Elbow') as Bone; +const turntable = scene.getObjectByName('Turntable') as Bone; function degreesToRadians(degrees: number): number { return degrees * (Math.PI / 180); } //default rotations on the 3d model +//const wristDefault = degreesToRadians(12.69); const shoulderDefault = degreesToRadians(-72.88); const elbowDefault = degreesToRadians(153.65); +const turntableDefault = degreesToRadians(-37.76); -useTelemetryData([CanBusID.ArmShoulder, CanBusID.ArmElbow], (data) => data.position, null, { - armShoulder: (position) => { - // Multiply the telemetry fraction by 2π to get the incoming additional radians. - const additionalShoulderRotation = position * -2 * Math.PI; - // The final rotation equals the default plus the telemetry offset. - const shoulderRotation = shoulderDefault + additionalShoulderRotation; - shoulder.rotation.x = shoulderRotation; +useTelemetryData( + [CanBusID.ArmShoulder, CanBusID.ArmElbow, CanBusID.ArmTurntable], + (data) => data.position, + null, + { + armShoulder: (position) => { + // Multiply the telemetry fraction by 2π to get the incoming additional radians. + const additionalShoulderRotation = position * -2 * Math.PI; + // The final rotation equals the default plus the telemetry offset. + const shoulderRotation = shoulderDefault + additionalShoulderRotation; + shoulder.rotation.x = shoulderRotation; + }, + armElbow: (position) => { + const additionalElbowRotation = position * 2 * Math.PI; + const elbowRotation = elbowDefault + additionalElbowRotation; + elbow.rotation.x = elbowRotation; + }, + armTurntable: (position) => { + const additionalTurntableRotation = position * 2 * Math.PI; + const turntableRotation = turntableDefault + additionalTurntableRotation; + turntable.rotation.x = turntableRotation; + }, }, - armElbow: (position) => { - const additionalElbowRotation = position * 2 * Math.PI; - const elbowRotation = elbowDefault + additionalElbowRotation; - elbow.rotation.x = elbowRotation; - }, -}); +);