1) Hardware is hard! I’ve written a separate post about this but hardware requires several software components for communication, so planning interprocess communication through APIs is paramount.
2) Asynchronous processes are king. The various microcontrollers the software components run on will all have wildly varying capabilities – you don’t need the latest multicore processor to change a few actuators. The ever-decreasing power and scale of controllers as they reach the periphery of an actuator network mirrors the keystones of ubicomp: Pads, Tabs and Dust. As with any networked device, these need to function independently; however they must also act as responsively as possible, bringing me on to…
3) Latency! Similar to the visual response from XR, your body recognises even slight delays in physical stimuli which can be very jarring. Keeping packet sizes small, minimising the number of nodes from input to outputs and using non-blocking network processes are all crucial to succeeding.
4) Literal moving parts: This initially caught me off guard, but physical state changes in actuators need to be considered when building the software control systems for haptics. This introduces a new question into the control paradigm; should the local controllers have set routines or should the hub have full control? With set routines, the packet sizes shrink and the controller can better manage the input queue, allowing actuators to complete cycles to better track physical states - important when you don’t have sensors to do so. This comes at the cost of flexibility and creativity for the haptics experience designer, as the actuator performance is hard coded. In the end, we took something of a hybrid approach, which worked well with our more dynamic linear actuators.
5) User calibration. I have left probably the most important area until last: tailoring the haptic experience to account for an individuals’ neurophysiology to elevate the immersion to a whole new level. Thresholding each actuator according to user preference creates a parametric model for their sensory input. A huge part of the software and GUI was dedicated to this, creating a unique profile to ensure the users comfort and enjoyment!