1 minute read

For the 2022 HackUSU hackathon, my team worked on a remote-control telepresence robot. The goal was to create a simple robot that could be driven remotely over the internet and hold a tablet to facilitate a video call. As a stretch goal, we wanted to make it a two-wheel self-balancing robot. The chassis was made primarily from t-slot aluminum extrusion and acrylic. It had two wheels independendly driven by miniCIM motors with Talon SRX motor controllers. The brains of the robot were a ESP32 microcontroller, which handled the self-balancing routine, and a Raspberry Pi 4, which handled the remote control and passed commands on to the ESP32.

I was the lead developer for the remote control component on the Raspberry Pi, while another team meber worked on the self-balancing component in parallel. The control program is written in Python and JavaScript. It uses Flask to display a simple web page to allow any computer or mobile device to connect. A JavaScript component in the web page captures input using the HTML5 Gamepad API and sends it back to the Raspberry Pi. Then the input is parsed and sent to the ESP32. This allows the robot to be controlled by any computer or mobile device with a gamepad or controller connected (we used a bluetooth Xbox controller).

For the demonstration, we had a team member who was unable to attend the hackathon connect to the web page hosted on Raspberry Pi via a VPN and control the robot while he was on a video call using the tablet mounted to the top. We weren’t able to get the self-balancing PID loop tuned well enough in the limited time we had, so we added a third caster wheel to keep it stable during the remote control tests. It worked well considering the limited time we had to work on it, though the latency and tuning left plenty of room for improvement. Overall, it was a fun weekend and I learned a lot. I look forward to hopefully attending HackUSU next year.