Jom (Pornthep) Preechayasomboon

จอม (พรเทพ) ปรีชญสมบูรณ์

Haplets: Finger-Worn Wireless and Low-Encumbrance Vibrotactile Haptic Feedback for Virtual and Augmented Reality

Co-authors: Eric Rombokas

Made with: nRF52832, nRF52840, 1080 LRAs, Unity, Meta Quest 2

Full Paper

Haplet Key Figure Haplets in VR Haplets Hardware

Haplets are basically wireless, finger-worn LRAs. They were created to answer the question: “What is the minimum viable haptics that we can add to the fingers to help with hand tracking?”.

Chasm: A Screw Based Compact Haptic Actuator

Co-authors: Ali Israr, Majed Samad

Made with: DC Motors, Leadscrews, Oculus Quest, Unity, Teensy 4.0

Chasm has received an 🏆Honorable Mention Award (Top 5%)!

Full Paper

Chasm was my primary internship project at Facebook Reality Labs! Chasm is a miniature haptic actuator that can render shear forces and vibrations both independently and simultaneously through a single tactor. Chasm can render constant shear forces up to 4.8 N at 3.4 mm and vibrations perceivable up to 170 Hz. The underlying mechanism is as simple as it gets: a leadscrew coupled directly to a DC motor. I designed and developed Chasm from the ground up, starting from the selection of the motor and leadscrew. We had to order custom leadscrews due to the unconventional usage! Underneath the leadscrew nut, there is an ams AS5311 magnetic linear encoder that lets me control the motor at 1000 Hz with sub micron accuracy. Chasm has a Teensy 3.5 (and later on, a Teensy 4.0) microcontroller running the closed-loop control. I also developed a whole HID-based haptic interface so Chasm can be used with VR devices like the Oculus Quest. (also android phones, macOS, Windows, etc.) This means Chasm’s firmware can communicate with the host device (the Quest) at an ideal 1 ms latency!


Marker Here is Chasm in one of its many form-factors: the marker. The user places their thumb on Chasm’s tactor and together with VR, Chasm can render extremely convincing haptic illusions of texture, weight, stiffness and impact. The marker itself doesn’t have any tracking so its tracked with Oculus Touch controller strapped to the user’s hand. The strap alone is a marvel of accidental engineering - getting the controller to sit on the hand like that took so much fiddling around with how the strap loops around.

Demos I also made a bunch of demos in Unity for Chasm that highlight how Chasm can render a wide range of modalities and bandwidth. It’s hard to convey with pictures or a video, but the haptics are freakin’ amazing! Even the simplest drawing demo, where Chasm renders a constant pressure when you press the pen against the board along with vibrations to simulate friction when you write, is extremely convincing.


Made with: Unity, OculusSDK

ovrseer preview

ovrseer has become BrickLayer!

ovrseer is a psychophysics experiment framework for Unity/VR that enables rapid prototyping for creating experiences. ovrseer has a finite-state-machine backbone that splits experiment into “Phases”, multiple Phases into “Trials” and multiple Trials into “Blocks”. Each Phase is a finite state that does something upon start (Enter()), during the game loop (tied to Unity’s Update()) and at the end (OnExit()). Phases are often treated as events that change the behavior of things in the scene such as: showing a target, moving and object, start recording kinematic data, blindfold the subject, etc. . Trials, with their multiple Phases can then be repeated. And finally a chain of Trials make up a block. All of which is maintained using Unity’s Scene Hierarchy, which means Phases can be drag-and-dropped, copy-pasted and moved around freely to rearrange their order.

ovrseer also has built-in recording capabilities for saving kinematic data (tracked controllers) and experiment logs.

ConTact sensor

Made with: PlatSil-Gel 25, Chopped Carbon Fibers, ROS, LABView, NIDAQ

Full paper available here

Good News! We got a honorable mention from the competition!

Published on the Soft Robotics Toolkit here

The ConTact sensor is my entry for the 2018 soft robotics toolkit competition for contribution to soft robotics research. It is part of Rombolab’s Pneudraulique research theme.

The ConTact Sensor is a force and contact area sensitive sensor developed at rombolabs at the University of Washington that can be easily integrated into most soft-robotics designs. Using the fluidic conductive medium already inherent in soft robots, the sensor can sense the force and size of an object pressing into it. The main sensing element is a conductive fluid core with conductive rubber leads and the force and size is derived by measuring the resistance and pressure changes of the fluid. The sensor is mostly fabricated from silicone rubber with minimal external components. This guide provides details on how the sensor works, how to fabricate the sensor and how the sensor was tested and validated.

The name ConTact is from the main principle of sensing: a Conductive fluid and the sensor itself being a Tactile sensor

Below are examples of raw sensor readings. When objects of different sizes are pressed against the sensor with the same amount of force, the sensor shows distinct responses for each object size.


Bishop’s Hand

Made with: Unity, ROS, SteamVR, C#, C++, Shimmer GSR+, Oculus Rift & Geomagic Phantom

A project that involves Psychophysics, Virtual Reality and stabbing hands. VR Hand

How much would you trust the robot you programmed? (This robot is animated directly from Unity!) Stabby mcstabface


Made with: C++, CUDA-C, VB, SolidWorks & GLUI

A project for Prof. Duane Storti’s Voxel Modeling class. Scalpl is comprised of two separate pieces of software: 1) a SolidWorks plugin and 2) a CUDA accelerated voxel editor. The aim of the project is to prepare files for ingestion by a Stratasys Objet 3D printer in order to print voxels directly.

Slicing Literal slicing in SolidWorks

Scalpl's UI

Additionally, Scalpl can modify exported voxels directly and create lattices or porous volumes. Although by the end of the course Stratasys has yet to make voxel printing available to our lab, Scalpl is ready to be modified to support any format Stratasys wants.

Scalpl's Voxel Editing Results Voxels!

Cobalt Chromium Femoral Heads

Made with: Okuma LB-3000 EX MYW, Catia, Blood, Sweat & Tears

A project under Prof. Pairat Tangpornprasert & Prof. Chanyaphan Virulsri of the Biomechanical Design and Manufacturing Laboratory, Thailand. One of the most arduous projects to date. The goal was to produce Cobalt Chromium femoral heads with sub 5-micron roundness using a traditional 4-axis CNC lathe. These femoral head implants are normally ground to shape. In my brief stint as a machinist, this project has taught me a lot on how to machine to extremely close tolerances. Despite that, I am nowhere near a true machinist, I highly respect them and the work that they do.

Cobalt Chromium Heads

I also designed dies for hot forging! Fun times.

Die Finished part in the die. They used to be milled out of bar stock – very cost-prohibitive. Die Render Die Render 2 Cutter Render 2 These are molds for trimming the flash that is created after forging.

Electric Prosthetic Hand with Slip Sensor

Made with: Mazak Integrex 200, Maxon Motors, VB, C, Teensyduino, Smooth-on PMC

Poster for Project

A senior project with Pongsakorn Laiwattanapaisan & Possawat Munnitivorakul.

We designed, programmed, CNC-machined almost every single part aside from the motor and gearbox, ourselves.

Electric Prosthetic Hand

Here’s slow motion footage of our slip detection working on a 500g weighted glass jar:

Slip detection on glass

And grasping a jar with the slip detection turned off: No slip detection on glass

And yes it is delicate enough to handle an egg: Egg!

Undergraduate CAD project

Made with: CATIA V5, Keyshot

Final project for CATIA class: Mazda 13B Rotary Engine 13B Shaft 13B Engine 13B Engine 2