Tetra is a remote-controlled and autonomous-capable rover, built for the 2019 University Rover Challenge. Over the past year, we have iteratively expanded upon our previous mechanical, electrical and software systems to develop a more robust and modular rover that can succeed in the harsh conditions of the Mars Desert Research Station.
The University Rover Challenge (URC) is an international college-level robotics competition hosted by the Mars Society at the Mars Desert Research Station in Hanksville, Utah. The primary objective of the competition is to design a rover to traverse a simulated Mars environment and to perform tasks across four competition stages. Started in 2006, the URC aims to expand interest in the exploration of the Red Planet and to promote the design of the next generation of Mars rovers that will travel across the planet along with the first human explorers.
For more information about the URC, visit their website.
Tetra's mechanical design is separated into four main components: the chassis, the suspension, the arm and the science sensor array. The light-weight sheet metal chassis serves as the electrical housing and the suspensions' mounting support. The suspension is a passive differential rocker suspension with an additional shock absorption system. The rover also has two rocker assemblies connected via a differential linkage, which allows for maximum contact between the wheels and the ground. The arm has six degrees of freedom, utilizing a linear actuator, and a combination of MX-106 and AX-12 servo motors to move the upper-arm and forearm respectively. Additionally, the rover's hand attachment connects to the arm via a differential wrist. Lastly, the science sensor array is composed of a housing for the atmospheric sensors and a structure for the Raman Spectrometer.
Tetra's electrical system has four subsystems: power, drivetrain, communications and sensors. The power subsytem uses custom printed circuit boards (PCB) designed by the team to efficiently drive the motors, the Jetson TX2 Embedded Computing Module (Jetson), and other peripheral components. The drivetrain subsystem is composed of STM 32-bit microcontrollers to control the rotations-per-minute (RPM) of the motors. The communication system uses a inter-integrated circuit (I2C) bus to transmit and receive data from each component. Lastly, the sensors subsystem primarily utilizes USB-based sensors for the science sensor array. For sensors that are not capable of an USB-connection, a custom PCB has been built to transmit their information to the Jetson through I2C.
Tetra's software architecture is divided into two components: one on the Jetson and one on the base station laptop. The system on base station has three subsystems: internal communication, graphic user interface (GUI) and arm controls. The internal communication subsytem uses a custom communication framework based on the ZeroMQ message-passing library to transmit and receive data using publish-subscribe and request-reply schemes. The GUI subsystem is built on the Tkinter Python GUI library to show a GPS map, video streams and graphs of sensor data. The arm controls use an inverse kinematic system to smoothly move the arm's joints into position for increased precision. The system on the Jetson is comprised of the vision and the autonomous navigation subsytems. The vision subsystem utilizes the ZED Stereo Camera (ZED) with a neural network based in PyTorch to track the tennis ball markers in the autonomous mode. The autonomous navigation subsystem is a multi-part algorithm, which collects data from both the ZED and the Inertial Measurement Unit (IMU). A Simultaneous Localization And Mapping (SLAM) algorithm is used to generate tracking points which becomes the basis for the A* path finding. This output is then fed into our navigation algorithm to create a smooth path for the rover to traverse. As Tetra drives, a Ramsete Controller adjusts the rover's movement to keep it on the generated route.