I updated the UI from last time to look as below:
The top circle, this time, shows the position the person-controller should be in (north/south/east/west) relative to the room. The bottom left shows the viewer’s thumb on the hand-controller, and the bottom right shows the orientation of the ball, given by the MPU (orientation unit).
This UI is actually a Unity app running on a phone. However, there is another phone (phone 2) that also receives MPU signals: the phone (phone 1) that renders the Unity scene the viewer sees in VR. A significant challenge was getting the MPU signals to both phones at once. The MPU gives its signals over Bluetooth, but a Bluetooth device can only be paired to ONE other device at a time. I eventually decided that it should give signals to the VR on phone 1. Now I had to send the MPU signals from phone 1 to phone 2. After hacking around with everything from Unity Networking to TCP to Python/Twisted servers and Node.js, I finally found the perfect solution.
UDP is blazing fast, prioritizing speed over transmission-acceptance, allowing for phone 2 to receive a continuous and up-to-date stream on the MPU signals. Phone 2 therefore has the most current orientation of the ball; the person-controller seeing the UI above will be able to react more quickly to where the viewer in the Zorb ball wants to go and direct the pushers to push in the proper direction.
Now, for a video of this person-controlling action-business:
It turns out that the system still isn’t perfect, and I’m still trying to investigate why. Viewers noted that signaling ‘left’ vs. ‘right’ would get switched, especially when they were near the top of the ball, facing downward. I’m not sure if it is an issue with the app itself. It is also possible that it might be because the ball cannot be rotated on its axis, so it only has two degrees of rotational freedom — however, I did try to overcome this in my app, and the viewer in the “up” position should theoretically not have this problem. It may also be reaction speed, or a case of not enough testing. I’ll try to figure out the problem this week.
As you can tell by the video, a lot of people helped out with this run. My friend, Parmita, was the person-controller (the person running around holding phone 2). sheep did the video recording. From the STUDIO, I had help from conye, farcar, miyehn, tesh, and phiaq. Outside the STUDIO, I had help from my friends, Maia, Michael, Anjie, Winston, and Lisa.