# Lessons

For office hours appointments, you can use the [Appointments Calendar Link]. Please schedule these slots at least 24 hours in advance. If you need Professor to be physically present, please send an e-mail note after you schedule. Be prepared to use google hangouts for a video call otherwise - so make sure you use your UMich google ID to make the appointment.

Lessons-2019 contains last year's lessons, which can give you a sneak preview of the class, which will be at least a little accurate.

Contact info:

### Wednesday, April 22

   P2 Project Day


Instructions for today are at 2020_Project_2_simulation#P-Day_Instructions

The 10 page location matrices are at File:2020-p2pages.py

### Wednesday, April 15

   LAST LECTURE IS TODAY

• Next week at this time -- P2 P-Day. If you have a scheduling conflict, please let me know TODAY via email.
• Please fill in student feedback. Students who send me the receipt proving that they have filled in student feedback will get a 1% boost to their grade. This is the single largest bonus credit opportunity in this class!

By now you might wonder how we could ever get an arm with a realistic set of motors to go to where we actually want it to go. One very powerful idea is the idea of Visual Servoing [wikipedia]. Here is a good tutorial from 1996 File:A_Tutorial_on_Visual_Servo_Control.pdf; with today's computers and cameras this is much, much easier to do than it was back then.

• As an example of visual servoing we will go over pyckbot/hrb/vis-servo.py. This code is new; you will need to pull an update using git.

### Monday, April 13

Today I will be giving a talks on robotics work related to my research. For the second hour, we will be getting (brief) progress reports from all teams The lecture on Visual Servoing will be on Wednesday.

### Wednesday, April 8

 PID Control Quiz


Following the quiz, I will ask all teams to give us a brief updated on their progress. At 1 I will go over quiz solutions.

The order of updates will be: Tomato Razzmatazz Lime Cyan Indigo Peachpuff Maroon Firebrick.

### Monday, April 6

All P2 teams needs to submit the brainstorming document, together with the standard brainstorming resources document.

 P2 Brainstorming review


Each team will take 5-10 minutes to present the contents of the document they submitted, and take questions and comments.

### Wednesday, April 1

 Lets discuss project 2 -- please activate your video!


Issues about controlling open chain manipulators:

1. Gravity and gravity compensation: with zero length spring; with counterweight
2. Inertial issues: what's the problem with counterweights

Some straight line mechanisms

Straight line mechanisms

Robots that are very fast and accurate

Delta arm (with pancakes)

Robots that can draw

AxiDraw
Pen Holders

### Monday, March 30

 P1 P-Day


Here is how we will run P-Day:

1. The arenas you will use for testing your simulated robots are in this encrypted zip File:2020-P1-Arenas.zip
• The decryption password will be provided HERE once all teams are ready to go with their individual BlueJeans sessions up and running.
• To see the password update you might need to force-reload the wiki page (shift-reload on FireFox and Chrome).
2. For P-Day we ask that each team designate a representative who will be running the simulations. That member should then post the link to their individual BlueJeans on the class BlueJeans chat.
3. The representative (with help of team mates) should do the following:
• Clear any previous / irrelevant log-XXX.csv.gz files from their working directory.
• Start desktop sharing to their BlueJeans, and start recording their BlueJeans session.
• Run their simulator on arena-0.py by copying it on top of randArenaOutput.py with the command cp arena-0.py randArenaOutput.py
• Start waypointTask.py and their simulation.
• When they either give up and finish driving to the end-point, disqualify, complete the arena, or decide to stop because of time, the team should stop the recording.
• They should then save the new log file log-XXX.csv.gz under the name 2020-P1-(color)-(arena)-XXX.csv.gz where (color) is their team color in ALLCAPS, (arena) is the arena number (in this case 0) and the XXX is the timestamp from the original log-file name.
• NOTE: We have 120 minutes for class. You may have no more than 10 minutes per arena, but I suggest you stop earlier if you are having trouble, because I will not accept trials that ran after the end of class.
4. When you are done with all 10 arenas:
• Each team should have 10 videos, one per arena, and 10 log files to match.
• In your BlueJean "recordings" page, make these recordings publicly readable; this will create a link to that collection of recordings. Post the link to your BlueJeans recordings on the Projects page with your other deliverables.
• Zip the log files into a single zip file (no sub-directories; just the 10 csv.gz files) and upload to your Projects page with your other deliverables.

NOTE: the astute student no doubt noted that neither the professor nor other class members need to be present in the BlueJeans session to do this. The professor will have a computer connected to the class BlueJeans session to observe any chat messages. Students other than the team representatives are encouraged to visit the sessions of other teams and watch the action. The professor and the TA will certainly do so.

### Wednesday, March 25

• You can assume that the ref array and corners list in waypointShared will represent a rectangle, and the remaining corners in the same circular ordering (either clockwise or counter-clockwise). See below for current values:

• ref might be transformed by an arbitrary reflection, and planar rigid body motion, but always be given in cm.
• The MESSAGE_TEMPLATE corner tag locations may be transformed by an arbitrary homography (including reflection)
• The X axis will be the X axis of the coordinate frame used to give the ref coordinates.

#### PID Control

A bit about real motors and cogging in this paper Anticogging: Torque ripple suppression, modeling, and parameter selection

And just in case you thought the practicing roboticist doesn't do this day-to-day, here's what I did over the weekend (for my actual research):

### Monday, March 23

 NOTE: P1 P-Day will be next week


Today we will talk about linear regression - both ordinary least squares multivariate regression, and total least squares. For $N$ data points in $\mathbb{R}^d$, we form the data matrix or design matrix $X \in \mathbb{R}^{N\times d}$, and ask for a solution of $\beta \in \mathbb{R}^d$ that gives $Y = X \beta + E$ for a given $Y$ and suitably "small" $E$. The design matrix can consist of any collection of deterministic functions of the independent variables.

Following my broader theme of relating algebra to physical intuition, we learn OLS from understanding of the [Moore-Penrose pseudoinverse] $M^\dagger = (M^\mathsf{T} M)^{-1} M^\mathsf{T}$(for tall, full rank data). $M^\dagger$ satisfies the MP axioms:

1. $M M^\dagger M = M$
2. $M^\dagger M M^\dagger = M^\dagger$
3. $(M M^\dagger)^\mathsf{T} = M M^\dagger$
4. $(M^\dagger M)^\mathsf{T} = M^\dagger M$

We will discuss TLS from first understanding the [singular value decomposition (SVD)] $M=U^\mathsf{T}\Sigma V$ and how it leads to [principal component analysis (PCA)]$M^\mathsf{T}M = V^\mathsf{T}\Sigma^2 V$ and the polar decomposition of matrices $M = U^\mathsf{T}V \cdot V^\mathsf{T}\Sigma^2 V$.

As a cautionary note, here's a famous example due to Anscombe of how regression tells us very little. All four figures show data with identical mean, variance, and regression relationship between x and y.

### Wednesday, March 18

 Serial Manipulator Quiz

• Refer to the Teams page to find links of each team's video chat room and the online class link.
• Please enable your camera and microphone when in the team chatrooms

### Monday, March 16

 Discuss transition to online format

• APOLOGY code update not ready yet...
• See demo of File:Rigid-demo.py
• Tool-tip Jacobian
• Relation to forces and control
• Notion of Differential Inverse Kinematics

### Wednesday March 11

  P1 Demo 2 Review Form

Reviewers (same as last time)
Maize Team Blue Team Red Team Green Team Purple Team
Ben VanDerPloeg (bensvdp) Ray Puyat (rpuyat) Madi DeVore (devore) Amanda Kline (klineama) Jason Pi (japi)
Will O'Neal (woneal) ~ David Waier (waierdg) Lakshu Periakaruppan (lperiaka) Sarthak Bansal (bansarth)
Robert Cecil (robcecil) Matthew Blischke (matblisc) Christian Soto (cbsoto) Eric Wiener (ecwiener) Mahmoud Komaiha (mkomaiha)
Matt Maurer (mlmaurer) Rourke Pattullo (rjpat) David Chang (dcchang) Truman Stovall (tstovall) Vaibhav Bafna (vbafna)
David Marsh (djmarsh) C.Y. Cheung (cycheung) ~ Ragav Subramanian (sragav) James Wegienka (jamesjw)
Modern Robotics Ch4.1.1
Modern Robotics Ch4.1.2
Modern Robotics Ch4 Example
 Appendix A in Murray Lee Sastry is an excellent (but advanced) summary


### Monday March 9

  A* and Particle Filter quiz

• Discuss progress with teams
• Please reserve a 1-hr slot for your whole P0 team to come to office hours. This will be 20-30 minutes discussion of P0, and short (~5 minute) individual meetings.
  1-hour meeting slot reservation calendar


### Spring Break

Prepare for the quiz first day of class:

• Make sure you know A* and understand the terms "admissible", and "tight" (e.g. read A* on Wikipedia or re-watch the video we saw in class): A heuristic is admissible if it never overestimates true costs; it is tight if it sometimes estimates the correct cost.
• Understand the core parts of a Particle Filter. In this regard the Wikipedia entry is a far more advanced treatment than what we've done. Instead, try studying from this recent write-up or the video we watched in class. In general, you should remember that a particle filter needs the following core components. You should know what sort of failures to expect when each of these steps is missing or poorly tuned:
1. Updating state based on robot action -- "(stochastic) system evolution update" or "prediction step";
2. Updating weight based on sensor measurements -- Bayesian update or "estimation step";
3. Re-sampling.

### Wednesday, February 26

    P1 Demo review form


Reviewers
Maize Team Blue Team Red Team Green Team Purple Team
Ben VanDerPloeg (bensvdp) Ray Puyat (rpuyat) Madi DeVore (devore) Amanda Kline (klineama) Jason Pi (japi)
Will O'Neal (woneal) ~ David Waier (waierdg) Lakshu Periakaruppan (lperiaka) Sarthak Bansal (bansarth)
Robert Cecil (robcecil) Matthew Blischke (matblisc) Christian Soto (cbsoto) Eric Wiener (ecwiener) Mahmoud Komaiha (mkomaiha)
Matt Maurer (mlmaurer) Rourke Pattullo (rjpat) David Chang (dcchang) Truman Stovall (tstovall) Vaibhav Bafna (vbafna)
David Marsh (djmarsh) C.Y. Cheung (cycheung) ~ Ragav Subramanian (sragav) James Wegienka (jamesjw)

### Monday, February 24

• Smashing the matrices for fun and profit:
• Row and column vectors; dyads and matrices
• Rotations and their matrix representations
• Inverses of rotations and SO(3)
• Infinitesimal rotations and so(3)
• Isometries, and the rest of O(3)
• The connection between rotations in 3D and complex numbers
  Math notes File:matrix-transforms.pdf


  BONUS CREDIT: Mahmoud Komaiha for correcting an error on the board


### Wednesday, February 19

• Walkthrough of the robotSimulator.py, robotSimIX.py, and the use of waypointTask.py
• Navigation functions. Here are two of the papers that created Navigation Functions
• Robot navigation and planning: the bare minimum - A*
A tutorial on A*; first of an excellent multi-part series.

### Monday, February 16

• Here is the File:20xx-TEF.pdf you need to fill, sign, and submit for your P0 to be graded.
 P1 Brainstorming Presentations in Room 1008 EECS, order is B G R M P

Reviewers
Maize Team Blue Team Red Team Green Team Purple Team
Madi DeVore (devore) Amanda Kline (klineama) Mahmoud Komaiha (mkomaiha) Ben VanDerPloeg (bensvdp) Ray Puyat (rpuyat)
Will O'Neal (woneal) Christian Soto (cbsoto) C.Y. Cheung (cycheung) Lakshu Periakaruppan (lperiaka) Sarthak Bansal (bansarth)
Matthew Blischke (matblisc) David Waier (waierdg) David Marsh (djmarsh) Eric Wiener (ecwiener) Robert Cecil (robcecil)
Jason Pi (japi) Vaibhav Bafna (vbafna) David Chang (dcchang) Matt Maurer (mlmaurer) Rourke Pattullo (rjpat)
~ Truman Stovall (tstovall) James Wegienka (jamesjw) Ragav Subramanian (sragav) ~
  [Review Form] is here


### Wednesday, February 12

 Sit in your P0 teams
Disassemble your robot while we go through the first part of the lecture

 Switch to your P1 teams; these teams are now the official owners of the named bins.
We will discuss the 2020 Project 1 Task Specification


### Monday, February 10

  P0 P-DAY -- Awesome robot races!


### Wednesday, February 5

  P0 Demo Deliverable; presentation order PBMGR

• You are free to work on the Technical Writing Quiz anytime noon to 1:30. While you are working on the quiz, you may not speak to anyone else except the Professor and the TA. You may refer to the File:CommonTechnicalWritingMistakes.pdf list
  Technical Writing Quiz

• Technical Writing Quiz solutions
• P1 Notes:
• P1 task specifications and dates are now updated on the projects page
• P1 teams were assigned with a Canvas Announcement

### Monday, February 3

• The structure of engineering/scientific papers: problem/hypothesis, methods, results, discussion; discuss Project_cycle#Final_report
• Language in scientific writing: "the paper was written in past tense passive voice" vs. "we wrote the paper in past tense active voice" vs. "we write papers in the present tense"; use of words which are kinda conversational, and more.
• Go over remaining File:CommonTechnicalWritingMistakes.pdf
• Here's the link to the list of highlighted File:Technical-writing-examples.pdf

### Monday January 26

  Python quiz online

• Python quiz solutions will be given at 1pm today
• What's technical writing all about?
• Truth seeking
• Collaborative critical analysis
• Positive (in the epistemological sense) statements
• Reproducibility

### Wednesday January 22

  Brainstorming Presentations in EECS 1008

  REMINDER: Next Monday -- meet in DL1; Python quiz.

• If you require testing accommodations for reduced distractions, you may take the quiz remotely from another room; please contact professor to coordinate. Quiz solutions will be discussed at the end of class (1:30 and on).

### Monday January 13

 BONUS CREDIT to Chiu Yau Cheung (cycheung) for catching error in VM setup
BONUS CREDIT to Mahmoud Komaiha (mkomaiha) for catching error in boot script

• Learning Python
 For python quiz [study from these sections]
ipython 1.1.4
python 1.2 -- all subsections
numpy 1.3.1 & 1.3.2
matplotlib 1.4 -- basic familiarity only