Work from 4 years ago (4/28/2022) at AIT Austrian Institute of Technology GmbH
To explore user interfaces for teleoperation I developed a mixed reality vehicle simulation using a custom-built miniature vehicle. The miniature vehicle is placed in a miniature environment built from paper a carton boxes. The operator can control the miniature vehicle remotely from another room through the environment from A to B. To get a higher situational awareness the teleoperation station was developed as a VR application putting the operator in the center of four live camera feeds.
This research is part of the H2020 project AWARD.
The 1:16 vehicle is custom 3D designed and printed to enclose a Raspberry PI 4 connected to four Arducam B0261 120° cameras which stream a MJPEG stream to the operator (using a Unity VR application). The drive train consists of a Nema 8 8HS15-0604S stepper motor and a TMC2209 stepper driver. The steering controlled by a servo. Given the power limitations of the stepper a slow acceleration curve was used which mimics the behavior of a truck.
The steering and driving commands are sent over websockets to the Raspberry C++ application and parsed with json by nlohmann. The websocket server is started on the Raspberry using TinyWebsockets. The application uses pigpio to control the relevant actors by hardware PWM. The MJPEG streams of the camera are sent with mjpg-streamer.
The operator is surrounded by four live camera feeds depicted on large curved monitors. In front of the monitors different user interfaces which assist the operator are depicted. Depending on the scenario different interfaces are shown to allow a comparison between a set of user interface requirements.
The application is developed in Unity and uses the Varjo XR-3 headset to allow the operator to see his or her real hands and steering wheel.
The reactive interfaces are developed in C++ using Dear ImGui rendering textures which are shared with Unity. For input a Fanatec Steering wheel and pedals are used. Their input is serialized to JSON and sent over websockets to the miniature vehicle using NativeWebSocket. The MJPEG stream is parsed in C# as I did not find a suitable alternative. This creates the biggest bottleneck and limits the resolution of the four streams to 640x480.