Blog

Creating a Simple VR Robot

John Keogh | January 2, 2021

This post describes how to make a robot which is controlled using the EyesBot Driver iOS app, which is free and in the Apple app store.

Notice: This post involves working with electronic components, building a robot, and your mobile device. If you injure yourself or someone else, start a fire, damage or destroy your iOS device or anything else, you are responsible. We take no responsibility for your use of the information contained in this blog, you use this information at your own risk.

Indended audience: This post is intended for makers, electrical engineers, and robotics hobbyists. If you do not know how to safely handle batteries, electricity, hardware, and software, please don't continue. This robot is not intended to be used unattended. It should only be used in a safe place away from other people, traffic, fire, hazardous conditions, things that can be knocked over, animals, or other conditions that may present a risk.

Here is an example shopping list for some of the parts, these parts cost about US$250.00, but the computer wheels, wire, and platform need to also be added. The prices will vary according to your location, this is only some suggestions as a starting point and example.

Item NameNumberUnit PriceSource
Motor controller1$15.79Amazon
Arduino1$23.00Amazon
Step up power supply1$4.49Amazon
Motors2$29.99Amazon
Cameras2$36.99Amazon
Fuse block1$15.98Amazon
Battery1$23.26Amazon
Switch1$29.70Amazon
Capacitor1$5.49Amazon

You will also need a computer with at least 3 USB ports (two for the cameras and one for the arduino), which is likely the most expensive part, plus plastic, poles, and wire to complete the robot. Everything in this posts assumes you are using Linux (preferably Debian). If you will later add a powered speaker, you will likely need one extra USB port for power.

The purpose for creating this robot was to have a platform for working with machine learning in the physical world rather than purely software. In connection with this, I will include future posts related to getting the robot to interact via voice and learn about its surrounding visually. If you share these interests, please follow me on YouTube, where I will be posting the videos.

Setting up the on-board computer

Intial setup


  1. Debian server: If you need to install Debian, please use this guide
  2. udev rules: If you want to always refer to your arduino by /dev/arduino, you can setup a udev rule. Otherwise you can refer to the Arduino by /dev/ttyACM0 or whatever your system calls it (this is important for the Node.js control server, discussed later

Install needed support software

  1. OpenCV: Good discussion here. This is a quick install
  2. Python3: You may already have this, to check, type python -V. Anything 3.0+ should be fine. If not, you can read about the install here. You won't need to setup virtual environment for your robot.
  3. NodeJS: Debian (or other Linux distros) are available here

Install EyesBot Robot software

There are three components to install:

  1. First install the image grabber Python script. You will need to make one modification to this file, update the filePath to the filePath that you want to use for your system
  2. Next install the control server. This Node.js server is what your client (the iOS device running EyesBot app) interacts with. You will need to make one modification, update the basePath to filePath for your system.
  3. Next build the Arduino sketch and upload to your Arduino

Testing your setup

  • To test the image grabber, run it with
    su python3 /home/eyesbot/Documents/Code/chariot/imagecapture/eyesbotimagecapture.py --camera=0
    Update the file path to the one used on your system, and you may need to sudo depending on your installation.
  • To test the image grabber, run it with
    su python3 /home/eyesbot/Documents/Code/chariot/imagecapture/eyesbotimagecapture.py --camera=0
    Update the file path to the one used on your system, and you may need to sudo depending on your installation.
  • To test the control server
  • To test the image grabber, run it with
    su python3 /home/eyesbot/Documents/Code/chariot/imagecapture/eyesbotimagecapture.py --camera=0
    Update the file path to the one used on your system, and you may need to sudo depending on your installation.
  • To test the control server
  • Setup start scripts

    After your setup is tested, you can add the startup for the control-server.js to a startup script so that it is available when the robot reboots. This is a great guide to starting services or applications on startup for a Linux system.

    Putting together the hardware

    Laying out the hardware

    Logical Connections

    The connection between the various components is shown in the following sequence diagram:

    Explanation of diagram to be added

    Controlling the robot with the EyesBot driver App


    Installing and using the app


    • Find the IP address of the robot
    • Make sure your iPhone and robot are on the same WiFi network. You may also need to turn off cellular data.

    Formats and conventions used by the app

    The are the following types of commands sent from the app to the robot:

    • heartBeat: has one attribute, status (string)
    • leftThumbstick, rightThumbstick, dPad: have three attributes, x(float), y(float), and pressed(bool)
    • buttonB, buttonX, buttonY, buttonA, buttonY, leftTrigger, rightTrigger, leftShoulder, rightShoulder: has one attribute, pressed

    Eyesbot Company

    Computer vision

    Artificial intelligence

    Effecting the physical world