UBC ROVER 6 DEGREE-OF-FREEDOM ROBOT ARM

Fig. 1: UBC Rover 2022 Design and Team Involvement

PROJECT DESCRIPTION

UBC Rover is a design team that builds a 50kg Vehicle to compete in the Canadian International Rover Challenge. This competition requires a rover to traverse difficult terrain, troubleshoot / assemble control panels using a robotic arm, and collect soil samples for analysis. All of this is done through an operator in a trailer up to 300m away using an xbox controller and camera feeds. I joined UBC Rover in 2019 as a second year student. In 2021, there was an opportunity for me to become lead of the arm subteam. Our small subteam consisting of 3 mechatronics students was determined to build an arm and inspire the rest of the team to make it to competition that summer. Our subteam was responsible for mechanical, electrical, and software design.

The requirements for the arm were:

Fig. 2: 2022 Arm Calibration Sequence

MECHANICAL DESIGN

The arm consists of the following components:

The design was aimed at minimizing the overall inertia. This allows us to use as small motors as possible (reduce weight / power consumption), and increase the effective stiffness at the tool point (less swaying). The image below shows a labelled picture of our arm.

Fig. 3: Labelled Arm

SOFTWARE DESIGN

I took the lead on our subteam's software in order to learn more about Robot Operating System (ROS). The arm's software can be broken down into two sections: The arm firmware (Teensy 4.1 Board, ARM Cortex M7 MCU) and the PC Control Software (ROS). The firmware consists of a loop that polls for incoming serial data. The incoming data contains information about the commanded motion for each axis, as well as other commands such as opening and closing the gripper and calibrating the arm. The Teensy parses this message then commands the appropriate axes. In the background, interrupt service routines run to collect the measured position of each axis. These angles are relayed back to the host PC via serial. The PC software is contained within a ROS repository containing several nodes such as an inverse kinematics solver, Xbox controller input, and a hardware driver. These nodes work together in a publisher/subscriber architecture to send commands to the arm MCU and interpret incoming angles. The block diagram below shows the software architecture used for the arm.

Fig. 4: Arm Software Architecture

My code is available on UBC Rover's Github. Here is the Teensy Firmware and the ROS Arm Hardware Driver

ELECTRICAL DESIGN

Each axis consists of a limit switch attached to an interrupt pin, Quadrature encoder, and geared stepper motor. The limit switches are used to locate each axis' position when the arm is powered up, while the encoders track the closed loop position and allow for inverse kinematics capabilities. The arm was powered by a 28V LiPo battery during competition and could run for 3 hours without a recharge.

Fig. 5: Arm Electrical Schematic

RESULTS

We made it to the 2022 summer competition and placed 3rd out of 13 teams (top Canadian Team)! Competition was a grueling 3 days of troubleshooting, practicing, and planning for tasks. It was a great team bonding activity and was very rewarding.

Fig. 6: Team Prepares for 2022 CIRC

TAKEAWAYS

This was the largest design project I have ever taken on. The timeline was very tight (4 months for mechanical design / build, 7 months for electrical / software) so it required a high level of dedicatation. Through that dedication, I learned during this project that I love Engineering and couldn't be doing anything else. 3 years ago, I didn't see how I could build big and complicated things. I had serious doubts about my intelligence and thought that you needed to be really special to be inventive. Now, I realize that complex engineering problems are about smaller, incremental designs that eventually combine into something functional. There were dozens of challenges along the way, but this is the project where I discovered that there is typically a solution, and that Engineering is about process, not big, lucky ideas. The largest challenge in the arm software was timing for all communications. There was 2 way serial communication, as well as interrupt based ROS events from xbox controller input, inverse kinematics solver, etc. We used threading techniques to ensure a smooth flow of data and no overwriting of global variables.