The 3D Hapkit is a 3-Degrees-Of-Freedom haptic device that was created as a class project for Haptic Interface Design under Dr. Jeremy Brown in Fall 2022. The 3D Hapkit is based on the Hapkit 3.0 and was presented as WIP Paper and Demo at 2023 IEEE World Haptics. This device is an open-hardware haptic device designed to be low-cost(<$300) and easy to assemble, allowing users to input motions and feel programmed forces in three degrees of freedom.
Moving forward, the 3D Hapkit will be deployed at the Johns Hopkins University Haptic Interface Design Course in Fall 2023!
- GrabCAD Print Software
- FDM 3D Printer with ABS filament/Soluble Support Material(uPrint SE/uPrint SE Plus/Stratasys F123 Series)
- Laser Cutters(Universal Laser System – VLS6.60)
- Metric Tap and Die Set(1/4' - 20 & 10-24 & M4)
- Parts List: Here is a parts list with purchase/manufacture information.
- STL files for 3D printing: Click here to download a zip file of Hapkit STL Files. Note: Model units are in mm.
- DXF files for laser cutting: Click here to download a zip file of Hapkit DXF Files.
- Modifiable SolidWorks files: Click here to download a zip file of Hapkit SolidWorks Files. Note: These are only for use with the SolidWorks CAD program.
- Assembly instructions and 3D printing tips: Here are instructions for assembling your Hapkit into a functional haptic device.
The electronics of the 3D Hapkit consist of three Hapkit 3.0s. The Hapkit board can be purchased from Seeed studio. It is also possible to manufacture your own PCB by combining an Arduino, motor driver and sensors. Here is a good starting point obtained from Seeed Studio(Files).
The three boards are communicating using the I2C protocol. We provid sample Arduino code for follower and leader to get you started porgramming haptic virtual environments with your 3D Hapkit. The code includes the calculation of forward kinematics and all readings values from sensors.
- Connect the ground and I2C pins (A4/A5) of the three boards together.
- Choose one board as the leader and load the script(3DHapkit_Leader.ino).(Arduino IDE Download).
- If want to use the serial monitor in the Arduino IDE, comment out Line 79(3DHapkit_Leader.ino) in the script:
#define PROCESSING 1 //connect to the processing for visualization
- Load the script(3DHapkit_Follower.ino) to two other boards.
- In line 55 (3DHapkit_Follower.ino), assign address #8 to follower #1
Wire.begin(8); // join i2c bus with address #8
- In line 58 (3DHapkit_Follower.ino), assign address #12 to follower #2
Wire.begin(12); // join i2c bus with address #12
We have created a sample scene for demo purposes. Users are able to control a ball (shown in green) by moving the handle. The ball is rendered in a virtual environment with a virtual surface. Our 3-DOF Hapkit is designed to simulate the virtual surface and render haptic interactions with the surface. Processing (Download Here) was used to provide a better visualization.
- Download the Processing.
- Open Processing and deltaProcessing.pde.
- Connect the laptop to the leader board.
- Check the USB port and change to correct one in line 38
myPort = new Serial(this, "com5", 115200); //change "com5" based on the local port connection
- Click 'Run'.
The development and implementation of the 3D Hapkit was supported by the Haptics and Medical Robotics(HAMR) Laboratory. Special thanks to Dr. Jeremy Brown for this guidance and invaluable advice.
The 3D Hapkit was made possible by the Hapkit: https://hapkit.stanford.edu/about.html
T. K. Morimoto, P. Blikstein and A. M. Okamura, "[D81] Hapkit: An open-hardware haptic device for online education," 2014 IEEE Haptics Symposium (HAPTICS), Houston, TX, USA, 2014, pp. 1-1, doi: 10.1109/HAPTICS.2014.6775560.
- Han Zhang - MSE in Biomedical Engineering, Johns Hopkins University
- Jan Bartels - MSE in Robotics, Johns Hopkins University
- Yuting Zhang - MSE in Computer Science, Johns Hopkins University