-
Example Data: {{ example.helloWorldSub.msg?.data }}
+
+
Example Data:
+
+ {{ example.helloWorldSub.msg?.data }}
+
+
diff --git a/src/components/PublishTesterComponent.vue b/src/components/PublishTesterComponent.vue
index 9288d80..c8e3c81 100644
--- a/src/components/PublishTesterComponent.vue
+++ b/src/components/PublishTesterComponent.vue
@@ -114,7 +114,7 @@ function publishTest() {
-
+
Received Message:
{{ receivedMessage }}
@@ -178,17 +178,6 @@ button {
flex-shrink: 0;
}
-.subscriber-box {
- margin-top: 20px;
- padding: 10px;
- border: 1px solid var(--light-grey);
- border-radius: 5px;
- background-color: var(--dark-grey);
- color: var(--white);
- width: 300px;
- max-height: 80px;
-}
-
pre {
white-space: pre-wrap;
word-wrap: break-word;
diff --git a/src/components/arm/ArmModel.vue b/src/components/arm/ArmModel.vue
index 3450b46..257252e 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;
- },
-});
+);
@@ -45,11 +57,4 @@ useTelemetryData([CanBusID.ArmShoulder, CanBusID.ArmElbow], (data) => data.posit
-
+
diff --git a/src/lib/roslibUtils/rosTypes.ts b/src/lib/roslibUtils/rosTypes.ts
index 9be823a..9ff40fa 100644
--- a/src/lib/roslibUtils/rosTypes.ts
+++ b/src/lib/roslibUtils/rosTypes.ts
@@ -11,6 +11,7 @@ export type TopicTypeMap = {
'std_msgs/Float32': StdMsg
;
'std_msgs/Time': StdMsg;
'sensor_msgs/msg/CompressedImage': CompressedImage;
+ 'sensor_msgs/msg/NavSatFix': NavSatFix;
};
export type TopicType = keyof TopicTypeMap;
@@ -28,3 +29,23 @@ export type CompressedImage = {
format: 'jpg' | 'png';
data: Uint8Array;
};
+
+//https://docs.ros.org/en/noetic/api/sensor_msgs/html/msg/NavSatFix.html
+export type NavSatFix = {
+ header: {
+ stamp: {
+ sec: number;
+ nanosec: number;
+ };
+ frame_id: string;
+ };
+ status: {
+ status: number;
+ service: number;
+ };
+ latitude: number;
+ longitude: number;
+ altitude: number;
+ position_covariance: number[];
+ position_covariance_type: number;
+};
diff --git a/src/pages/Arm.vue b/src/pages/Arm.vue
index a6ac1af..6aa7032 100644
--- a/src/pages/Arm.vue
+++ b/src/pages/Arm.vue
@@ -9,9 +9,14 @@ import ArmModel from '../components/arm/ArmModel.vue';
-
- Not yet Implemented