View your robot’s camera using any SteamVR supported virtual reality headsets (Google Cardboard, Oculus Rift, Windows Mixed Reality, HTC Vive, etc)
How to add the Virtual Reality Robot robot skill
- Load the most recent release of ARC (Get ARC).
- Press the Project tab from the top menu bar in ARC.
- Press Add Robot Skill from the button ribbon bar in ARC.
- Choose the Virtual Reality category tab.
- Press the Virtual Reality Robot icon to add the robot skill to your project.
Don't have a robot yet?
Follow the Getting Started Guide to build a robot and use the Virtual Reality Robot robot skill.
How to use the Virtual Reality Robot robot skill
Use Virtual Reality with your robot to see what the robot sees, and control servos by moving your head. This plugin supports all virtual reality headsets through Steam VR (OpenVR), Google Play, and iOS, including Google Cardboard, Oculus, Windows Mixed Reality, and HTC Vive. The plugin does two things; it allows you to see what the robot sees and control the servos with the Pitch and Yaw of the headset. This means when you move your head, the robot head can also move, mimicking your movement.
This video was a test of the plugin on a Synthiam JD Humanoid. Sadly, he had no arms during the trial, so it's funny to see. Professor E from The Robot Program controlled the robot's head and viewed the robot's camera through the VR headset. In this example, we used OpenVR in STEAM with a Samsung Odyssey headset.
In this video below, we controlled a Synthiam Six Hexapod with a joystick and a VR headset. When we move the head from left to right, the legs of the hexapod will rotate the body so we can look around. This also applied to looking up and down; the legs would tilt the body so we could look up and down. In this example, we used an Android phone with Google Cardboard Glasses.
Here is another exciting example where we combined this VR Headset plugin with 2 Wiimotes to create custom animations. Each time a button was pressed on the WiiMote, a new FRAME was created with the current position of all servos and appended to an ACTION. DJ keeps pressing the button, and the FRAMES append to the ACTION until he stops. Once he squeezes the trigger on the WiiMote, the code instructs the ACTION to be played back. And thus, all FRAMES are played back because they are part of the action.
Here is a screenshot of the plugin running on an ARC workspace with a camera.
What Hardware Does It Support? Two methods connect to the plugin, which opens a wide variety of hardware.
1. SteamVR (OpenVR) On PC, the supported headsets use Steam VR (OpenVR). This means any headset supporting Steam VR will work with this plugin, given the headset is directly connected to the PC. The most popular SteamVR headsets are Oculus, HTC Vive, and Windows Mixed Reality.
2. Google Cardboard (iOS and Android) The Google Cardboard is a product and standard that turns your mobile device into a virtual reality headset. This means you can either purchase the cardboard version from Google or shop online and purchase a more robust plastic/foam padded version from amazon.
Download the Android App here: https://play.google.com/store/apps/details?id=com.ezrobot.virtualrealityrobot
Allow Firewall Access
When the plugin is loaded, you may receive a message to allow firewall access. Be sure to check Private and Public networks. If you do not check both, you may end up in a situation in the future where you're connected to a public network and the plugin isn't working. In this case, it's because ARC doesn't have firewall permission. Also, if you do not see this message when the plugin loads, it could be because you've already answered this in the past. In which case, you should visit the firewall rules to see if ARC has correct access.Press the Windows button and type FIREWALL to search for Windows Defender Firewall
Select "Allow an app or feature through windows defender firewall."
Press CHANGE SETTINGS
Ensure both PRIVATE and PUBLIC are checked for ARC and press OK
Attach/Detach Camera Button
This plugin requires a camera, whether on your robot or a USB device. Add the camera device to your project and connect to the camera. Once you have a successful camera operational, press the Attach to Camera button on the plugin. This will connect the plugin to the camera device, sending the video stream to the VR headset.
Start/Close VR Client Button (SteamVR only)
If you have a Steam VR-compatible headset connected to your PC, this button will allow you to use that headset. This button will start the VR client, connecting to the VR Headset. The client can be launched either full screen or in a window. By default, the setting is to launch in the plugin window. This setting can be altered for your project in the configuration dialog.
Google Cardboard Users Your device needs to be on the same network as the ARC PC for those using google cardboard (iOS or Android) compatible device and headset. This is because your mobile device will connect to the ARC plugin by typing in the PC's IP address. The IP Address for your ARC PC is displayed in the plugin. Load the Virtual Reality Robot mobile app on your device and enter the IP address of the ARC PC.
4K Display Issues There is an issue with 4K displays and running the local client in the robot skill window. This is a known issue with Windows & Unity with 4k displays. If you have a 4k display and press the "Start Local Client" button, you will notice two things...
- The client is minimal
- The client is offset from the display window
There are two solutions...
Change your screen resolution to 1080
Set the client to run in full screen, configurable in this skill's configuration window.
Virtual Reality Caution
Read the warnings on your device before using a virtual reality (VR) viewer with this plugin to reduce the risk of personal injury, discomfort, or property damage. Ensure you use this plugin with adequate space to avoid hurting yourself or others by walking into something. Nausea and motion sickness may be experienced and worse for some users. Do not use this plugin for extended periods to avoid experiencing nausea.
Related Tutorials

Control Robot With Virtual Reality Headset

Create Auto Position Actions From EZ-Script
Related Hack Events
Related Questions

Unable To Locate The Vr Client App.This Is Installed With...

Using Vive Controllers For Arms?

How To Extract VR Goggle Data That Is Used To Move JD...
Upgrade to ARC Pro
ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.
Awesome plugin! I've been trying to do this for some time . Thank you Dj and all that worked on it.
Virtual Reality Robot Plugin
Glad you enjoyed it
I'll add a few additional features, such as controllers support and such in future versions
Check mark off, on to do list! Thanks DJ!
EDIT: Is it possible to use the virtual servos ie dynamixels with this plug in?
https://synthiam.com/Community/Questions/11135
You can use any servos with any plugin. All plugins are compatible with all features of ARC.
Here’s a link on how to select servos in ARC: https://synthiam.com/Tutorials/Lesson/49?courseId=4
All controls that use servos in ARC share the same servo selection interface, this includes plugins.
Does it also support opentrack (/trackir)?
Thing is, I get motion sickness with VR even with 50+ FPS and virtually no input latency. Given the <20 FPS of the robot camera and the inherent massive latency involved in moving a camera with servos, I hope this plug-in comes with sick bags
.
FWIW, Ive been using FPV (first person view) cameras and goggles on RC planes and drones for many years. My goggles have motion sensors and I can use them to control servos to move the camera, and using analog video transmission, there is zero latency in the video, but even so I learned a long time ago they only way this is bearable for longer than 2 minutes, is keeping my head absolutely motionless and controlling the camera servos with a stick.
I know, VR is all the rage, but in reality a trackir (or any of the DIY/opensource alternative headtrackers) would provide most of the benefits of being able to move a robot head/camera with head gestures, without the inherent downsides.
All recent headsets (i.e. vive, oculus, windows mixed reality) use head tracking. This is controlled by SteamVR and has nothing to do with the plugin or a game. Games do not write code for the VR headset, it's done by Steam VR, which interfaces with the headset. The video feed framerate is what ever you're source is, USB camera is 30 fps, wifi ezrobot camera is 20fps and usb ezrobot camera is 30 fps. The FPS has no correlation with the VR fps. The VR FPS is dependent on your GPU hardware. On my 1070, I get 90 FPS with this plugin.
What GPU and headset are you using? That will make the difference.
You misunderstand. I would be interested in controlling a robot head with my own head, but without putting on vr goggles.
In PC flight/race simulators we use trackir/opentrack for that, its typically 3 ir leds clipped to your headset, a webcam that tracks those LEDs and software that calculates your head motion: https://www.youtube.com/watch?v=XHNwQY9iMrw
That motion is then increased through configurable curves, so a smal head movement, say 10 degree or turning your head towards the edge of your monitor, results in say 90 degree change in perspective in the game.
This is a very cheap ($30 or so) and popular way to get some "VR" effect, allowing you to look around in your virtual cockpit, and compared to real VR sets has added benefits like higher resolution monitors, you can see your hands, see your keyboard, controllers, beer, ..
what you dont get is the 3D effect and immersion. But you dont get that with a ezrobot cam anyway, even when using a VR set.
Opentrack is the most popular software solution for this. Its opensource and supports all kinds of in- and outputs, not just tracking leds. It will also work with things like Wii controllers, Arduino sensor boards, eye/face tracking etc. And could be useful to do more than only control a camera, it could be used to control a robot hand or whatever.
As for what I was saying earlier; I am using FPV goggles, not on PC, but for remote control aircraft and racing drones. And I have built RC aircraft where the FPV camera has pan/tilt servos that I can control by moving the goggles, ie my head, much like a VR set. But I chose not to, because unlike a VR game on PC, where moving my head pretty much instantly moves the rendered camera, servos take 100s of milliseconds to reach their new position and the lag between moving my head and the servos and thus the image in my goggles responding makes anyone sick in minutes.
I fear it will be the exact same problem with robots. Possibly even worse because the video lag will be slightly worse (digital video feed that needs encoding/decoding versus analogy and thus zero latency video on my rc craft),
Using an opentrack or trackir, you dont have this problem, because you dont wear goggles that obscure everything except for the video feed, you can still see "the real world" move instantly along with your head, so your brain doesnt get confused.