This is basically a robot which is controlled by VR. The robot has two cameras and some sensors which are used to give users data about the environment the robot is in. Input from the camera and sensors is displayed on the VR headset. The clients can rotate their headset, which will cause the robot's camera to rotate in the same direction, and by touching the side button of the headset, the robot will start or stop moving.
The project consists of 4 main modules: The client, server, Raspberry Pi and Arduino. All 4 modules communicate with each other either directly or through another module to ensure that the robot functions as expected.
The client module displays the video feed and updates the status of the robot to the user. It communicates to the server with a Socket.IO connection and receives the video feed from the robot via Twitch. Some of the code in the project is from Google's Cardboard VR SDK Sample Implementation which we used as a reference. The identity of the client is confirmed by the server through two common secrets, the SERVER_OPERATOR_SECRET
and SERVER_CLIENT_SECRET
respectively.
APKs of the latest release would be available on the repository's release page. If you wish to make changes to the app, you may have to compile the app yourself either through the command line or through an IDE like Android Studio.
- The
SERVER_CLIENT_SECRET
andSERVER_OPERATOR_SECRET
environmental variables are provided in a file calledsecure.properties
in the root directory. If it is empty, you may need to create it. - The
applicationId
inapp/build.gradle
may need to be changed to prevent any conflict with the current app. - The list of the environmental variables that need to be set in
keystore.properties
are show below:keystoreDir
: The file in which the keystore is contained.keystoreAlias
: The alias for the keystore used to sign the app.keystorePass
: The password for the keystore used to sign the app.
- The list of the environmental variables that need to be set in
secure.properties
are shown below:SERVER_OPERATOR_SECRET
: The secret used by the server to identify the client as an operator.SERVER_CLIENT_SECRET
: The secret used by the server to identify the client as an observer.SERVER_URL
: The URL that the client connects to.JITSI_ROOM_URL
: The URL of the Jitsi Meet room that is used to receive the video footage sent by the robot.JITSI_ROBOT_USER
: The display name of the Pi that is transmitting the video in the Jitsi Meet room.
- String environmental variables may need to be encased in double quotes.
Any contribution is welcome, feel free to add any issues or pull requests to the repository.
This project is licensed under the GNU General Public License v3.0.