Skip to content

A hardware offshoot of Senseshift to create headpat haptics.

License

Notifications You must be signed in to change notification settings

Kopogiri/Tsunaptics

Repository files navigation

Tsunaptics Headpat Haptics Hardware

A hardware offshoot of Senseshift to create headpat haptics.

Senseshift GIT https://github.com/senseshift
Senseshift Docs https://docs.senseshift.io/

This is a short list of parts and a guide to make headpat haptics using Senseshift and altering the usage of the facial interface haptics option. Please read Senseshift Docs before this.

PARTS -
ESP32 D1Mini
TP4057 Charge Board
ULN2803AG Transistor Array
Micro DC Vibration Motor
804040 LiPo Battery
Switch
A Kitchen Sponge (not a joke)

You can also go without the charge board / battery and power the device straight from the USB port of the D1Mini if you want to.

Guide -

If you are using the carrier board please change the following code in the Senseshift firmware - SENSESGHIFT-FIRMWARE > firmware > mode_configs > bhaptics > tactal.cpp Make the code here match on line 32

void setupMode()
{
    // Configure PWM pins to their positions on the face
    auto faceOutputs = PlaneMapper_Margin::mapMatrixCoordinates<AbstractActuator>({
      // clang-format off
      
      {new PWMOutputWriter(05), new PWMOutputWriter(23), new PWMOutputWriter(19), new PWMOutputWriter(33), new PWMOutputWriter(18), new PWMOutputWriter(26)},
      // -------------Node 01-------------------Node 02------------------Node 03------------------Node 04------------------Node 05------------------Node 06---
      // clang-format on
    });

Then flash the firmware to the D1 Mini.

Solder the Switch, ULN and TP4057 to the carrier board. Carrier board Gerber here. You can order these from places such as JLCPCB or PCBWay. alt text

Solder standoffs to the relevant pins written on the board and then solder the D1 Mini to the board.
alt text
Now connect the battery to the underside of the board. Red to Bat+ and Black to Bat-.

Alrighty! Now print the hapticsholdingthingy.stl. here or here It is currently made to fit an aftermarket Quest 2 strap through it. So feel free to edit it to fit your desired strap size or re create the jig entirely.
alt text
Once printed, you can drop the assembly into the middle bit. It should fit nice and snug.

Now grab your kitchen sponge and cut it into 6 pieces. Cut 2 slits into each piece. 1 near the top (hard part of the sponge) and 1 in the middle. You can then insert the arms of the jig into the top slits of the sponge and a motor into the middle slits. The sponge allows for the haptics to give a softer and more natural feel whilst also stopping the single motor from vibrating the whole entire thing because of its rigid body. Trust me, I have made this mistake, it sucks and this is sooo much better. Lastly you can either solder XH JST connectors to the 4 pin holes or solder the motors directly to the board. The 3v3 pins are for the live (RED) wires. The M1 – M6 pins are for the ground (BLACK) wires. In the firmware, M1 should correlate to Node 01 / Output 05 , M2 correlating to Node 2 / Output 23, etc. Currently this is a bit jank due to bhaptics being weird and messing stuff up constantly with their updates. I’ll revise this at some point. This can easily be remedied in the avatar editing part of this guide so don’t worry too much right now. Try it out on your head and see how it feels and fits. You can heat up the arms in the middle with a heat gun to make the plastic malleable and slightly bend the arms to fit the roundness of your head.

You should now have something that looks like this (ish). Yours can be so much neater and tidier. This is a mess of experimenting, trial and error.
alt text
Test it with the bhaptics software and make sure all the motors work.

OKAY NOW ITS TIME TO EDIT THE AVATAR!!! YIPPIE? -

Firstly watch this youtube video. It’s great! It will do most of the work for you. Get the facial interface imported.
If the files provided don't work. Try and use this file instead.

At this point make sure that the facial interface is attached to the HEAD in the armature list. See example-
alt text

In the Inspector, you can untick the Mesh Renderer to hide the face plate.
alt text

Awesome! Now click on the arrow to the right of Head in the armatures list to open up the prefab.
alt text

It will look like this.
alt text

You can go ahead and hide Head_Motors in the Inspector. You wont need to see those. As a quick explanation, the Others drop down is contacts used to interact with Other people in Vrchat whist the Self drop down is contacts used just for your own avatar to interact with itself. It is good practice to keep the relevant nodes the same in both drop downs. eg, Node 1 need to have the same values in both Other and Self.
Let’s explain a bit more so you can get exactly what you want out of haptics! This is Node 1 used as an example. Transform - The position is where the node will sit on the avatar. The Rotation and Scale really don’t matter. VRC Contact Receiver - The Shaps Type is exactly what you think, it is the shape of the contact. The ideal type is Sphere but you can change to suit your needs. The Radius is the actual size of the Sphere in this case. You can edit this again to suit your needs. Position and Rotation here don’t matter. The filtering now should make sense. Self, Other, and Local. You can set these up with animators to create toggles if you are worried about getting overwhelemed. You can turn off the haptics from within VRC this way if you want. Collision Tags is also important in the same sense. By defult they have Head, Hand, Finger and Foot. You can see that I have only kept hand and finger as I don’t wish to be headbutted or kicked in the head. And that should be everything you need to know.
alt text

The last job is to position the nodes to fit your avatar. As I mentioned earlier, the firmware and bhaptics is wacky. The nodes for me work like so-
alt text

Then you’re good to go! Upload your avatar, jump into VR, grab a friend and get them to test it for you! Have fun!!

Lots of love, Kopo

About

A hardware offshoot of Senseshift to create headpat haptics.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published