Assignment 1: configuration space and forward kinematics

How to submit your work. Submit your solution as a pdf on Canvas. I recommend using markdown to write the solution, and generating the pdf using pandoc. If drawing computer art, I recommend a program such as Ipe that can draw vector graphics, as opposed to bitmaps. Please do not submit Word documents.

Planar arm kinematics

A robot arm lies in the x-y plane. The base of the robot arm is at the origin, (0, 0). The arm is composed of three links (line segments) arranged in series. The first link is of length 3, the second is of length 2, and the third is of length 1.

There are three revolute joints. The first is at the origin, with angle measured counterclockwise from the positive x axis. The second is between links 1 and 2, with angle measured counterclockwise from the line extended outwards from link 1. The third is between links 2 and three, with ccw angle relative to link 2. The end-effector of the robot arm is at the end of link 3.

  1. Draw a picture of the arm in the configuration \(q = (\theta_1, \theta_2, \theta_3) = (.5, .2, .1)\), where the numbers represent the angles of the three joints in radians, in order.

  2. Give a numerical approximation of the x and y coordinates of the end effector, in the same configuration. Show your work by writing out your formula for the forward arm kinematics, and approximate values for sins and cosines, etc as you go.

  3. How many other arm configurations are there for which the end effector reaches this same point? Draw one of these configurations, different from question 1. Be as precise as you can with the link lengths. Hint for precise drawing: It may be useful to draw some circles on your figure. One circle, for example, might indicate the the possible locations of the final link that touch the target point.

The mobipulator

Here’s a cute robot from the CMU Manipulation lab that explores the idea of using wheels to manipulate as well as drive. It was one of the first robots Professor Balkcom worked on. Watch the entire video.

The configuration space of the robot is effectively \(q=(x, y, \theta)\), where x and y denote the location of a point at the center of the robot, and \(\theta\) denotes the angle the robot makes with the horizontal. At \(\theta = 0\), the robot points along (has wheels parallel to) the x axis.

Let’s assume that the distance between any pair of wheels is 2, so that the contact points of the wheels with the ground make a square with side length two.

  1. Draw a picture of the robot in configuration \(q = (2, 1, \pi/4\)), sitting on top of a piece of rectangular paper with width 4 and height 8, with the paper centered at the origin. (So the maximum x coordinate of the paper should be 2, right?)

The robot has different manipulation capabilities based on how many wheels are on the paper. If no wheels are on the paper, the robot cannot manipulate the paper. If two front or two back wheels are on the paper, then the robot can spin the paper around a point between the active hands. If two side wheels are on the paper, pure translation parallel to the wheels is the only action. If all four wheels are on the paper, surfing by vibration or inchworm motions are possible.

  1. Let \(w_1(x, y, \theta) = (x_1, y_1)\) be a vector-valued function that computes the x and y coordinates of the first wheel based on the configuration of the robot. Notice that \(x_1\) and \(y_1\) are always displaced from the robot center regardless of the rotation of the robot. Notice also that in the initial configuration, the line from the center of the robot to wheel 1 makes an angle of \(+\pi/4\) with the robot heading vector. Write four equations, expressing \(w_1\), \(w_2\), \(w_3\), and \(w_4\). Hint: it may be helpful to draw a picture, in which you rotate the robot by a little bit, keeping the center fixed at the origin. Notice that each wheel moves on a circle around the origin. Now what happens when you translate the robot in \(x\) or \(y\) directions?

The configuration space of the robot is parametrized by \(q=(x, y, \theta)\), and could be drawn with a 3D figure. For each configuration, some set of wheels is on the paper. For example, in the configuration \(q=(0, 0, 0)\), the wheels on the paper might be represented as \((1, 1, 1, 1)\), where a \(1\) in the \(i\)th position indicates that the \(i\)th wheel is on the paper. In the configuration \(q = (20, 0, 0)\), none of the wheels are on the paper, which we might represent as \((0, 0, 0, 0)\).

It’s hard to draw in 3D, so in this question, you will draw a representation of a slice of this configuration space. Specifically, set \(\theta = \pi/4\). Now we can imagine moving the robot in the \((x, y)\), while keeping \(\theta\) fixed as you do so. As the robot is moved, different wheels will enter and exit the paper surface.

  1. Draw a picture of the set of configurations for which the first wheel is on the paper. Label your axes with numbers so we can see precise values.

  2. Draw a picture of the same configuration space slice, but this time, label regions by the exact set of wheels that is on the paper. (Hint: repeat the approach you used for the first wheel for each wheel, and overlay the results.)

  3. This question is required for graduate students, and worth one extra point for undergraduate students. Read and think about even if you do not complete it. Use python and matplotlib, or matlab, to draw a representation of the complete 3D configuration space, by sampling different values of \(\theta\) to draw each slice. You should get a crazy shape that encloses various cells, sort of like a honeycomb. In each cell, a particular set of wheels is on the paper. Surface boundaries of the cells correspond to moving a single wheel onto or off of the paper.

Bonus questions

You are not required to answer these questions, but you are welcome to explore them and submit your solutions or ideas. Feel free to modify the questions, propose your own questions, or to skip this part – it is an opportunity to explore the material on your own.

  1. Write a Python program that computes or samples the workspace of an nR planar arm (where n is determined by the user) with joint limits, and draws the result.

  2. Write a program that simulated the motion of an n-bar linkage and animates the result in some way to show some motion of the linkage when a few joint angles are varied in some way. For example, the function might take as input a vector of n link lengths.