
This lecture introduces you to this course, the topic of 'robotics', and the hands-on content of the course which uses the RoboGrok Robotics Parts Kit which can be obtained at http://www.robogrok.com/index.html
This lecture leads you through setup of some of your kit parts, including soldering headers onto the microcontroller. Some of the basics of how to effectively solder are introduced.
Throughout this course, we will be using Python and PSoC Creator software (both are free). This lecture shows how to install the required software.
In this lecture, you are lead through creating and running your first PSoC code (in the C language) on your PSoC 5 microcontroller.
In this lecture, you are introduced to the Python programming language, and guided through writing and executing your first program.
An LCD screen can be extremely useful for debugging and understanding why your code works the way it does. In this lecture, you are guided through setting up an LCD screen with your PSoC and using it to display numbers and letters.
A 'Kinematic Diagram' is a kind of drawing that is used in robotics to find the equations we need to control our robot manipulator. In this video, you will build several different types of robotic manipulators, and learn how to draw kinematic diagrams matching the manipulators. Then, you will learn how to draw frames on the kinematic diagrams following four rules known as the 'Denavit-Hartenberg' rules.
Now that you know how to draw and build some different 2-DoF manipulators, you can use the PSoC 5 microcontroller to set the angles of the revolute joints. In this video, you will learn how to use a 'PWM' block to set servo angles.
To help you solidify your understanding and build your skills with kinematic diagrams, this video gives five examples of drawing Denavit-Hartenberg frames on 3-DoF manipulators. The five examples cover the five 'standard manipulator types': (1) Cartesian, (2) Articulated, (3) SCARA, (4) Spherical, and (5) Cylindrical.
This video introduces the concept of 'Rotation Matrices' as a way to represent the rotation, or orientation, of one coordinate frame relative to another. The three rotation matrices (rotation around X, Y, and Z) are given, and the derivation of the rotation around the Z axis shown. This video also shows how any rotations can be accomplished by stringing together rotations around X, Y, and Z, and multiplying the corresponding matrices.
This video teaches how to compute rotation matrices in Python, and discusses the meaning of the numbers calculated relative to the manipulator.
This video shows five examples of rotation matrix calculation: the five standard manipulator types.
This video explains displacement vectors, which express the distance between the centers of two frames.
This video gives examples of finding the displacement vectors for the five standard manipulator types.
This video shows how to enter displacement vectors in Python code.
This video shows how the rotation matrix and the displacement vector can be combined to form the Homogeneous Transformation Matrix. These matrices can be combined by multiplication the same way rotation matrices can, allowing us to find the position of the end-effector in the base frame. In this video, we complete calculating the Homogeneous Transformation Matrix in our Python code and test the results with the manipulator we built on our board.
Inverse kinematics is the problem in which we know a position we want the end-effector to go to, and we need to find the values of the joint variables that move the end-effector to that position. In this video, we learn the 'graphical approach' to inverse kinematics, see some examples, and add the inverse kinematics equations to our PSoC code to position the end-effector of the manipulator we have built on our board.
This video gives an introduction to sensors and the topics that will be covered in this and the next module covering digital and analog sensors.
In this video, you will be introduced to a few different kinds of switches, and will learn how to read a switch with the PSoC.
In this video, you will learn how a hall quadrature encoder works by wiring it up and reading it with the PSoC. Then, we will look at a couple of other types or categories of encoders.
In this video, you will learn how to wire and read variable-resistance sensors by wiring up and programming the PSoC to read a potentiometer. You will learn about the effects of bit resolution on analog-to-digital conversion and the quantization factor.
This video introduces the topic of 'machine vision' (or 'computer vision'). You will learn how to install OpenCV for Python, then test the install by reading input from a camera. You will learn how to split up an image into its red, green, and blue components and display each in its own image.
This video shows how color images can be subtracted to isolate a single object of a particular color as a bright object on a dark background. Then, we learn the 'center of mass' approach to finding the location of the object in the image, in units of 'pixels'.
This video shows another application of image subtraction: background subtraction. Whereas color subtraction is useful for isolating an object of a particular color, background subtraction is useful for isolating an object that either enters or leaves the camera field of view. In this video, we also learn the difference between a 'grayscale' image and a 'black and white' image. We use the method of 'thresholding' to reduce image noise by converting a grayscale image to a black and white image.
In this video, we learn how to convert pixels (camera units) to centimeters (world coordinates) by measuring the field of view of the camera.
In this video, we learn how to convert an object position (in units of centimeters) from camera frame coordinates to the manipulator base-frame coordinates. We do this by finding the homogeneous transformation matrix from the base-frame to the camera frame, then multiplying it by the position in the camera frame.
In this video, we learn about the motor 'velocity constant', which relates motor voltage and speed. We write some code to experimentally determine the motor velocity constant using just one data point by setting motor voltage to 5V and reading the speed from the encoder.
In this video, we revise our motor velocity constant by testing the motor at many voltage levels. In order to accomplish this, we learn how to use 'pulse-width modulation (PWM)' to allow a digital pin to produce effectively analog voltages.
In this video, we learn how to wire up a motor driver chip to provide higher current to our DC motor, but still control the velocity with the PSoC. Then, we learn about the motor torque/speed curve, and how we can use this curve to spec motors for an application.
In this video, we learn the difference between open-loop and feedback control. We write some code to implement open-loop control on the PSoC to increment the motor position 90 degrees, and test the code. Then, we set up on-off control, the simplest type of feedback control, using the PSoC, and observe the difference in motor behavior between the open-loop control and the on-off control.
In this video, we apply what we have learned about on-off feedback control to setting the position of a rack and pinion device.
In this video, we learn about the trade-off between speed, stability, and accuracy in a control algorithm. We use our on-off control code for the PSoC from last time, and adjust the speed-accuracy-stability trade-off to achieve stable motion.
In this video, we learn about the simplest type of linear control: proportional control. We learn the difference between on-off control and proportional control, both of which are types of feedback control. We write some code for the PSoC to control the position of the rack and pinion using proportional control, then we find a good proportional gain value by testing different values and observing the results.
In order to become more sophisticated with our motion control, we need a way to quantify the 'goodness' of our control algorithms and gain values. To do this, we need to be able to examine values collected by the PSoC more closely. In this video, we learn how to set up UART communication between the PSoC and the computer, so that we can use the computer to more closely examine values collected by the PSoC.
In this video, we learn how to send values from the PSoC to the computer. We learn how to use Python to save those values first in an array, then in a text file. Finally, we plot the values in Excel to see the motion of the rack and pinion with our Proportional control from last time.
In this video, we learn how to find some quantifiable measures of speed, stability, and accuracy from the time response of the rack and pinion. We measure rise time, peak time, settling time, overshoot, and steady-state error. We make these measurements for three values of Kp in our proportional control, and we note the trends in these values for increasing or decreasing values of Kp.
In this video, we find the proportional gain that gives a 'critically damped' response of the rack and pinion. We do this experimentally by trying a gain, calculating the characteristics of the step response, then increasing or decreasing the gain appropriately.
Video lectures cover a wide range of robotics topics common to most university robotics classes, including forward and inverse kinematics, sensors and computer vision (machine vision), and feedback motion control. Theory is paired with hands-on building and programming tasks using a kit of parts that allows you to practice as you learn, and end up building and programming complete robots.
The course involves programming in C and Python, but begins assuming you have never programmed in these languages before. It is helpful if you have some experience already with matrix math (adding/subtracting and multiplying matrices and vectors) and trigonometry. You will be introduced to OpenCV in Python and the PSoC microcontroller.
All of the topics in the course lead to building and programming a complete, working, 3-degree-of-freedom SCARA pick-and-place manipulator by understanding and practicing all of the theory underneath. The course uses the RoboGrok robotics parts kit.