A fingertip-sized, high-resolution pneumatic haptic display designed to provide realistic tactile feedback in virtual reality (VR) environments or during robot teleoperation. This repository includes all the hardware (CAD files, BOM) and software (Arduino, Raspberry Pi, GUI) needed to build and control the SHD.
@INPROCEEDINGS{11078133,
author={Yu, Pijuan and Urquhart, Alexis and Kawazoe, Anzu and Ferris, Thomas K. and Hipwell, M. Cynthia and Friesen, Rebecca F.},
booktitle={2025 22nd International Conference on Ubiquitous Robots (UR)},
title={Soft Haptic Display Toolkit: A Low-Cost, Open-Source Approach to High Resolution Tactile Feedback},
year={2025},
volume={},
number={},
pages={59-66},
keywords={Fabrication;Wireless communication;Somatosensory;Wireless sensor networks;Extended reality;Tactile sensors;Soft robotics;Rapid prototyping;Haptic interfaces;Spatial resolution},
doi={10.1109/UR65550.2025.11078133}}
- 4×4 Wearable Tactile Array – A low-cost silicone actuator array with 16 individually controlled chambers.
- Desktop-Sized Control Box – Integrates an Arduino Due, a Raspberry Pi, and pneumatic valves.
- Real-Time Control – Low-latency wireless communication between the SHD and a PC or VR platform.
- Open-Source – All code, CAD files, and documentation are released under the MIT license.
- Easy to Build – Minimal development time; accessible to students and researchers with diverse backgrounds.
The 4 × 4 tactile array haptic display (red) is connected to the control box (white) via transparent air tubes. The control box communicates with the laptop wirelessly using a socket communication method.
Selected Static Patterns
Selected Animation Patterns
Here’s an overview of how this repository is organized:
Soft-haptic-display/
├── hardware/
│ ├── CAD/ # 3D/2D design files (STLs, STEP, source CAD)
│ ├── schematics/ # Electronics circuit diagrams
│ ├── BOM/ # Bill of Materials (CSV or Markdown)
├── firmware/
│ ├── arduino/ # Arduino sketches for low-level control
│ └── raspberry_pi/ # Scripts running on the Pi
├── software/
│ └── gui/ # GUI code on the Computer for controlling the SHD
├── docs/
│ ├── manual/ # User manual, assembly guide
│ ├── images/ # Animation pictures, Gif, Static pictures
├── LICENSE
├── README.md
└── CONTRIBUTING.md
Purchase all required items from:
Follow the instructions in Docs/Manual/Hardware_tutorial.md to:
- 3D-print the mold and control box.
- Fabricate the tactile array.
- Solder the control board.
- Assemble the entire control box and connect it to the tactile array.
- Fork this repository in GitHub.
- Open GitHub Desktop and clone your fork to your local machine.
- Open the cloned repository in Visual Studio Code or any other Python IDE.
- Locate the
main.pyfile in thesoft-haptic-display-toolkit/Softwaredirectory:python main.py - Install all required Python libraries until the GUI successfully appears on your computer.
- Connect the Raspberry Pi to a monitor.
- Open a terminal on the Raspberry Pi:
git clone https://github.com/pijuanyu2022/Soft-Haptic-Display-Toolkit.git
cd Soft-Haptic-Display-Toolkit/Firmware/Raspberry_Pi/
- Create a virtual environment in the terminal window:
python -m venv SoftRobo
source SoftRobo/bin/activate
- Install all required Python libraries so that
run_robot.pycan be opened correctly:
python run_robot.py
- Connect the Arduino Uno to your PC.
- Navigate to the
/Firmware/Arduino/directory and openPneumatic.inoin the Arduino IDE. - Select Arduino Uno under Tools → Board in the Arduino IDE.
- Upload the code to the Arduino Uno.
Tips: You can also install the Arduino IDE on the Raspberry Pi and use the Pi to upload the code to the Arduino Uno.
- On the Raspberry Pi’s Terminal, type:
ifconfig
- Look for the
wlan0oreth0section. The IP might look like192.168.x.x.
- Press the Start Menu or Taskbar search, type
"cmd", and press Enter.
ssh [username]@[IP address]
- Example
ssh pi@192.168.1.100
- Enter the Pi’s password when prompted.
pi@raspberrypi: ~ $
This indicates that the Command Prompt is now logged into your Raspberry Pi.
cd Soft-Haptic-Display-Toolkit/Firmware/Raspberry_Pi/
source SoftRobo/bin/activate
python run_robot.py
- Keep this Command Prompt session open so the script keeps running.
- Navigate to the cloned repository folder:
Soft-Haptic-Display-Toolkit/Software
- Locate and run
main.py.
Step 8. In the GUI that appears, click the Connect button (top-left corner) and enter the Raspberry Pi’s IP address (the same one used for SSH).
Step 9. Follow the GUI_tutorial.md for detailed steps on controlling the tactile display.
- You should now be able to inflate and deflate the soft haptic array channels in real time!
- Paper: 2025_UR_Conference_Paper.pdf
- Presentation: 2025_UR_Conference_Presentation.pdf
- Assembly & Fabrication: docs/manual/Hardware_tutorial.md
- Firmware Guides: docs/manual/Firmware_tutorial.md
- GUI Usage: docs/manual/GUI_tutorial.md
- Troubleshooting: docs/Troubleshooting.md
- Bill of controller: Hardware/Bill of Materials/list of Controller.md
- Bill of pneumatic system: Hardware/Bill of Materials/list of Pneumatic.md
- Bill of tactile dislay: Hardware/Bill of Materials/list of Silicone.md
For any unresolved issues, please file a ticket under the Issues tab.
We welcome all forms of contributions—bug reports, feature requests, code improvements, and documentation updates. To get started:
- Fork this repository.
- Create a new branch (e.g., feature/new-valve-driver).
- Commit and push your changes.
- Open a Pull Request describing your modifications.
This project is licensed under the terms of the MIT License.
You are free to use, modify, and distribute this work as long as you include the original license and attribution to the authors.
Special thanks to our collaborators and the open-source community:
- Our Friesen Haptics Lab.
- The INVENT Lab.
- The Human Factors & Cognitive Systems (HF&CS) Lab.
- The Soft Robotics Toolkit for inspiration and design references.
- The Soft Robotics Control-unit (SRC) for control references.


















