File size: 2,015 Bytes
6ce4ca6
 
 
 
67a499d
 
 
 
 
 
 
 
 
6ce4ca6
67a499d
 
 
 
 
 
 
 
6ce4ca6
67a499d
 
 
 
 
 
6ce4ca6
67a499d
 
 
 
 
 
6ce4ca6
67a499d
 
 
 
 
 
6ce4ca6
67a499d
 
 
 
 
 
 
6ce4ca6
 
 
67a499d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Centralized Robot Communication & Performance Configuration
// Single source of truth for all timing and communication parameters

export const ROBOT_CONFIG = {
	// USB Communication Settings
	usb: {
		baudRate: 1000000,
		servoWriteDelay: 8, // ms between servo writes (optimized from 10ms)
		maxRetries: 3, // max retry attempts for failed operations
		retryDelay: 100, // ms between retries
		connectionTimeout: 5000, // ms for connection timeout
		readTimeout: 200 // ms for individual servo reads
	},

	// Polling & Update Frequencies
	polling: {
		uiUpdateRate: 100, // ms (10Hz) - UI state updates
		consumerPollingRate: 40, // ms (25Hz) - USB consumer polling (optimized from 50ms)
		calibrationPollingRate: 16, // ms (60Hz) - calibration polling (needs to be fast)
		errorBackoffRate: 200, // ms - delay after polling errors
		maxPollingErrors: 5 // max consecutive errors before longer backoff
	},

	// Command Processing
	commands: {
		dedupWindow: 16, // ms - skip duplicate commands within this window
		maxQueueSize: 50, // max pending commands before dropping old ones
		batchSize: 6 // max servos to process in parallel batches
	},

	// Remote Connection Settings
	remote: {
		reconnectDelay: 2000, // ms between reconnection attempts
		heartbeatInterval: 30000, // ms for connection health check
		messageTimeout: 5000 // ms for message response timeout
	},

	// Calibration Settings
	calibration: {
		minRangeThreshold: 500, // minimum servo range for valid calibration
		progressUpdateRate: 100, // ms between progress updates
		finalPositionTimeout: 2000 // ms timeout for reading final positions
	},

	// Performance Tuning
	performance: {
		jointUpdateThreshold: 0.5, // min change to trigger joint update
		uiUpdateThreshold: 0.1, // min change to trigger UI update
		maxConcurrentReads: 3, // max concurrent servo reads
		memoryCleanupInterval: 30000 // ms - periodic cleanup interval
	}
} as const;

// Type exports for better IntelliSense
export type RobotConfig = typeof ROBOT_CONFIG;