Teleop Overview - umrover/mrover-ros GitHub Wiki

What is the role of the Teleoperations team?

The teloperations (teleop) team is responsible for making the rover's many physical systems easily controllable by a human operator. This is accomplished through a few different systems that the teleop team is responsible for building and maintaining:

Base Station GUI

The Base Station GUI is the heads-up display used while the rover is being operated. In the past year this tended to be the system that required the most time and care. The GUI is a webapp developed using Vue.js, and it is our main way of both giving commands to the rover as well as relaying info to the operators.

The GUI is responsible for fetching controller inputs, displaying sensor, GPS, and camera data, sending waypoints for the auton code to navigate to, controlling the various devices for science sample collection, and much more!

Django

This year, we added an official backend to our system: Django. The Vue frontend is able to communicate to the Django backend via websockets. All information needed for ROS goes through Django. Using this backend, we're able to save important information like GPS waypoints in the event of a refresh (which could potentially delete information). In Django, we handle all the callbacks from ROS and calculate the open/closed loop commands for the robotic arm.

Robotic Arm Control/Inverse Kinematics

Inverse Kinematics, or IK for short, is the mathematical problem of finding a set of joint angles in order to navigate the end effector of the rover's robotic arm to a certain point in space, as well as having it oriented in a specific way in that point in space. We implemented a custom solver and are able to visual the arm's pose using THREE.js, a 3D web browser graphics renderer.