Thomas Snyder

Table of Contents

  • Current Resume
  • Academics, Interests, and Research
  • Person Time
  • Term Project

Academics, Interests, and Research

I am an Electrical and Computer Engineering Undergraduate student at Oregon State University. My interests lie in Robotics: control, state estimation, and collective intelligence. I am currently involved with the Human-Machine Teaming Lab advised by Dr. Julie A. Adams. My honors thesis focuses on implementing distributed swarm localization on one hundred centimeter-scale unmanned ground vehicles programmed in C++. The task of localizing the robots involves measuring the time difference of arrival of Ultra-Wideband packets between radios on stationary anchors and the robot. The system that we are using to localize is called the Loco Positioning System from Bitcraze AB, which is used to localize the 50 Crazyflie drones in our swarm. I am implementing an Extended Kalman Filter for state estimation and to fuse sensor measurements from the global positioning Loco Positioning System and an IMU. I hope to continue my education in a graduate program with a focus on robot modeling and control with regards to distributed autonomous systems, which include swarming, multi-robot collaboration, and autonomous cars.

In my coursework, I have greatly enjoyed designing RTL in SystemVerilog targeting Altera DE10-lite and Cyclone V FPGAs. I have also been fascinated by the theory in signals and systems: modeling a system that can manipulate a time-domain signal by looking at it in the frequency and s-domain. I am particularly interested in the applications to digital signal processing that this class has opened my eyes to, such as distortion pedals for electric guitars, or equalizers for mixing and mastering music.

I am currently working with a team to develop a selective compliance articulated robot arm (SCARA) that will be able to reproduce a picture that is given by drawing on an 8.5″x11″ paper. I worked on solving the inverse kinematics on the FPGA control board and physical arm design.

The SCARA during development

Personal Time

In my free time, I enjoy biking, running, volunteering at my church, and doing personal projects. I mix sound on a Soundcraft SI Expression 1 digital mixer at my church and occasionally play bass on the worship team. My projects are from a broad range of subjects, reflecting my interest and willingness to experiment with new things. My first project was an RGB Keypad. I fabricated the PCB on my own and soldered SMD RGB LEDs (WS2812b) to the PCB and used a teensy microcontroller running a custom variant of the QMK keyboard firmware. Subsequent projects include a hexacopter, frequency-spectrum audio visualizer, a road bike, an analog distortion pedal for an electric guitar, and a self-balancing robot. A project that I have planned for this spring is a distortion pedal for an electric guitar, which will fuse my knowledge of FPGA RTL design and frequency-domain analysis of linear time-invariant systems in one product.

Projects

This term Tristan Thompson, Kyle Noble, and I have been working on a two-axis robotic arm that draws a picture. I implemented the inverse kinematics, which translates the coordinates in the x- and y- axes to angles that the arm joints needed to achieve. We chose to put the computation on an FPGA for the speed of parallel computation and learning experience. We used SystemVerilog with 64-bit double-precision floating-point computations for the most precision that current technology provides.

Upon review of the literature, there exist multiple ways to determine the joint angles of a kinematic chain given a target position. The three that I focused on testing and implementing in a Python simulation included Forward and Backward Inverse Kinematics (FABRIK), the Jacobian Pseudoinverse (which simply becomes the Jacobian inverse due to the square nature of the jacobian matrix for two joints in two dimensions), and a simple geometric method. The simulation is shown below.

I also designed the physical arm enclosure and learned about different mechanical design techniques: how to design for additive manufacturing and the importance of gear ratios in the resolution of the final project. Many issues with the final product stemmed from the aforementioned lack of resolution. Due to the nonlinearity of the SCARA topology when moving joint angles, we found it difficult to draw a straight line when the system constrained the minimum distance between points to a large value on a scale of 0.25 inches. Plotting points closer together effectively eliminates the nonlinearity because when you “zoom into” a line far enough, it seems locally linear, much like taking the derivative evaluated at a particular point. What you can see in the simulation is the arm following very finely plotted points that the Jacobian pseudo-inverse method could follow due to the high fidelity of the simulation. The fault in this is its unrealistic representation of the real world. When I modified the simulation to plot based on moving each joint by 1.8 degrees, emulating our stepper motors, similar results to the real world movement were seen in the simulation. This is shown in the animation below, where the arm is supposed to draw a straight line from its start point (4, 13) to end (6, 4). Due to this difference, the next step in increasing the functionality and accuracy of the arm is to increase the resolution of the stepper motors through gear reduction and micro-stepping so that smaller waypoints may be sent to minimize the nonlinear movements of the arm.

The final design artifacts are found on our Github repository.

Find me elsewhere

Print Friendly, PDF & Email