Autonomous Robotics
Every topic taught, then immediately solved · all 83 source exercises inside

Autonomous Robotics

Ten modules. Each one teaches a topic the way a software developer thinks, shows you where it lives on your allowed formula sheet, then walks straight into the real exercises — shown as snippets from the original PDFs — with the exact working you would put on paper.

Exam: 17 July 2026Allowed: 2026 formula sheetAllowed: Casio fx-991CW UKPrintable personal cheatsheet →
How to use this bookInside every module the rhythm is always the same: read the short lesson → look at the formula-sheet panel → read the exercise snippet → try it on paper → compare with the paper-style working → read the breakdown. The working is what you write in the exam (2–4 minutes); the breakdown below it explains every colored piece. Colors mean the same thing everywhere: given in the questionformula (sheet or memory)intermediate resultfinal answer
Start here

Battle plan to the exam

The exam is on 17 July. Two focused days are enough for the must-do column if you follow the order below — it is arranged so that everything you learn is immediately reused by the next block. Each block names its exact exercises; solve them on paper before reading the working.

WhenBlockConcrete output
Day 1 · AMRead Master the formula sheet and Master the fx-991CW once (40 min). Then Module 1 and Module 2.Solve Lab P1, Ex 16, Ex 8, Ex 19, Ex 22 on paper.
Day 1 · PMModule 4 (rotations) then Module 5 (camera) — the two calculation-heaviest topics, both on the sheet.Solve Ex 3, Ex 4, Ex 9, Camera 6, Camera 16. Check each rotation with det = 1.
Day 1 · EveModule 3 (pendulum) — one exercise, high point value, entirely on the sheet.Derive Ex 7 from the Lagrangian without notes.
Day 2 · AMModule 6 (ceiling markers) then Module 8 (Bayes → Kalman → SLAM).Solve Ex 24, Ex 25, Ex 26, Ex 10, Ex 1, Ex 12.
Day 2 · PMModule 9 (A*, control) and Module 10 (FSM, RL, ROS) — concept marks, fast to bank.Write out Ex 13, Ex 14, Ex 15 answers from memory.
Day 2 · EveMock-test rehearsal: the Moodle “Test” (exercises_compilation.pdf) is collection Ex 17 — do them timed, no notes. Then the quick set: Ex 8 (8′), 10 (8′), 13 (8′), 26 (6′), and the toolkit checklist.Corrected mock; official sheet + your cheatsheet + calculator packed.
Extra daysIf you have time beyond the core two days: Module 7 (stereo, SfM, flow, events) in full, then the remaining camera drills (Camera 1–18, Variants 1–13), then Ex 5, Ex 6, Ex 3132.Every remaining exercise attempted once.
Must do
Everything named in Day 1 and Day 2 — those exercises carry formula-sheet presence, point values, and repetition across sheets.
Do if time
Module 7 in full, rigid-body motion (Ex 5), time scaling (Ex 6), grid localization (Ex 31–32), remaining camera drills.
Safe to skip
Event-camera hardware detail, deep-RL variants, ROS command-line detail, sensor catalogs — concepts appear in Module 7/10 summaries where needed.

🔴 Exam-core 🟠 Exam-practical 🟡 Context — every lesson carries one of these, with the evidence stated next to it. Red means: on the allowed sheet and/or directly assessed by point-bearing exercises.

Your only allowed paper

Master the formula sheet

You get exactly one aid in the exam: this two-page sheet. Treat it like an API reference — you don't memorize what it exports, you memorize what it does not export and how to call what it does. Below is every region of the sheet, what it solves, and where this book drills it.

Page 1 — the seven tool groups

The sheet is two columns. Left column top to bottom: state-space, constraints, Lagrangian, control. Right column: camera, rigid transforms, ceiling markers. Learn the geography so you never scan the whole page under time pressure.

Formula sheet page 1: state-space models, constraints, Lagrangian mechanics, control (left column); pinhole camera, rigid transformations, ceiling-marker projection (right column)
2026_Autonomous_Robotics_Formula_Sheet.pdf · page 1 of 2 — full view. Each region is repeated inside its module.
Formula sheet page 2: relative orientation formula and useful trigonometric values
Page 2 of 2 — only two things live here: the relative-orientation formula θr = θm − θi (used in marker localization, Ex 24/26) and the exact sin/cos values for 30° and 45°.

Region → module → exercises map

Sheet regionWhat it solvesTaught inDrilled by
State-Space ModelsWriting ẋ = f(x, u), y = h(x, u); discrete updates xk+1 = fk(xk, uk)Module 1Ex 16–18, Lab P3, Ex 2
ConstraintsHolonomic vs not; no-slip and rolling conditions for wheelsModule 2Ex 22, Lab P2, Ex 19
Lagrangian MechanicsEquations of motion from energy: T, V, L = T − V, Euler–Lagrange; the pendulum result is printed in fullModule 3Ex 7
Open/Closed-Loop Controlu = uplanned(t) vs u = π(x(t)) vs u = K(xref − x)Module 9concept parts of Ex 13–15
Pinhole Camera Projection3D point → normalized coords → pixels; the K matrix; λp̃ = K[R|t]P̃WModule 5Ex 9, Camera 1–18, Variants 1–13
Rigid TransformationsChanging frames: cP = cRWWP + ctW; homogeneous T; Ry(α); T−1 shortcutModule 4Ex 3–5, Camera 10–13
Ceiling-Marker ProjectionImage scale s = f/h; Δu = sΔX; scale halves when distance doublesModule 6Ex 24–27
Relative orientation (p2)Robot heading from a marker: θr = θm − θiModule 6Ex 26
Useful Values (p2)sin/cos of 30° and 45° exactly — the exam expects surd answers for these anglesModule 4Ex 4

What is NOT on the sheet — memorize these

The sheet's gaps are the exam's memory questions Everything below is required by point-bearing exercises but absent from the sheet. Each is taught with a not on sheet — memorize badge in its module.
  • Differential drive (Ex 8, 15 points): v = r(ωR + ωL)/2, ω = r(ωR − ωL)/L, turning radius R = v/ω — Module 2.
  • Bicycle model (Ex 19): discrete pose update with tan α/L — Module 2.
  • Bayes rule with normalization (Ex 10, 15 points): P(A|z) = P(z|A)P(A)/P(z) — Module 8.
  • Bayes filter structure (Ex 1): predict with p(xt|ut, xt−1), correct with p(zt|xt) — Module 8.
  • Kalman/EKF purpose of each step + Gaussian assumption (Ex 11) and EKF-SLAM state augmentation (Ex 12) — Module 8.
  • Dijkstra vs A* and admissible heuristics (Ex 13) — Module 9.
  • Constant-acceleration equations (Ex 16–17): vt+1 = vt + aΔt, xt+1 = xt + vtΔt + ½aΔt² — Module 1.
  • Triangulation / stereo depth Z = bf/d, reprojection error, brightness constancy (130526 sheet) — Module 7.
  • FSM / RL / ROS definitions (Ex 14–15) — Module 10.

How to use the sheet in the exam

  1. Classify the question first. Wheels or constraints → left column middle. Anything with pixels → right column top. Anything with frames/rotations → right column middle. Ceiling marker → right column bottom + page 2.
  2. Copy the formula exactly, then substitute. The graders see your working; writing the sheet formula first (green in this book) is free structure and protects against sign slips.
  3. Watch the sheet's conventions. Its camera formulas assume the point is already in camera coordinates (Xc, Yc, Zc) — if the exercise gives world coordinates, you must transform first (that is exactly the trap in Camera 6/7 and Ex 9 does not have it). Its pendulum equation has no friction — Ex 7 adds a friction term the sheet will not give you.
  4. Exact angles come from page 2. If the angle is 30°, 45°, 60° (or 135° = 180° − 45°), the expected answer is in surds (√2/2, √3/2), not decimals.
Your only allowed machine

Master the fx-991CW

The CW-series ClassWiz works differently from the older fx-991EX: there is no MODE key. You pick an app from the HOME grid, and four dedicated keys do the rest: SETTINGS (units, display), CATALOG (insert functions and matrix/vector names into an expression), TOOLS (define and edit data owned by the current app), FORMAT (switch a result between decimal, fraction and √ form). EXE executes, OK confirms menus. Throughout the modules, blue “calculator corner” boxes give the exact sequence next to the working that needs it.

One-time setup (do this today)

  1. Angle unit: SETTINGS Angle/Coord/Sexa Angle Unit Degrees. Every rotation angle in this course's exercises (30°, 45°, 135°, −120°, −90°) is in degrees. Switch to Radians only if you ever feed a value like ωΔt (radians) into sin/cos — the wheel-speed exercises never do.
  2. Check yourself: sin(30) EXE must show 1/2. If it shows −0.988, you are in radians.
  3. Result form: press FORMAT on any result to flip between exact (√3/2) and decimal. Exam answers for 30°/45° angles should stay exact — that matches the sheet's “Useful Values.”

The five maneuvers this course needs

1 · Multiply matrices (rotations, K·point, chained rotations)

fx-991CW — matrix product
HOME select Matrix OK. Define: TOOLS MatA rows × cols (up to 4×4) Confirm type each element, EXE after each AC. Same for MatB. Compute: CATALOG Matrix MatA, press ×, insert MatB the same way, EXE. Result lands in MatAns.
A 3D point is just a 3×1 matrix — so K·P and R·p are this same maneuver. A homogeneous rigid transform is 4×4 — it fits.

2 · Transpose, inverse, determinant (rotation checks, T⁻¹)

fx-991CW — matrix functions
In the Matrix app: CATALOG Matrix Calc Transposition / Inverse Matrix / Determinant, then the matrix name, close ), EXE.
Sanity ritual for any rotation matrix you build by hand: det(R) must be 1, and R·Rᵀ must be I. Ten seconds, catches most sign errors.

3 · Vectors: dot, cross, norm (velocities, axes)

fx-991CW — vector ops
HOME Vector. Define VctA/VctB (dimension 2 or 3) via TOOLS. Then CATALOG Vector Calc Dot Product / Cross Product / Angle / Unit Vector. Magnitude: wrap the vector in Absolute Value (CATALOG Numeric Calc).

4 · Store intermediates in variables (chained computations)

fx-991CW — variables
Compute a value, then VARIABLE pick A–F/x/y/z Store. Recall by typing the letter. Example (Ex 8): store v in A and ω in B, then turning radius is just A ÷ B.
Never retype an intermediate you already computed — retyping is where rounding errors and typos enter. Round only at the end.

5 · Solve small linear systems (triangulation, intersections)

fx-991CW — simultaneous equations
HOME Equation Simultaneous Equation number of unknowns (2–4) enter coefficient rows, EXE. Polynomial roots (degree 2–4) live in the same app.

What stays on paper

The calculator multiplies; you decide what to multiply. Always write on paper before touching keys: the formula from the sheet (green), the matrices/values you are about to enter (blue), and the homogeneous normalization step u = ũ/w̃ — the calculator will happily give you an unnormalized (ũ, ṽ, w̃) and the exam wants pixels. Symbolic work (Lagrangian derivation, constraint equations, EKF concept answers) never touches the calculator.

Time ruleIf a matrix is full of zeros and ones (like R = I, or Rz(90°)), hand multiplication is faster than defining MatA. Use the calculator when entries are ugly (0.866, 800·0.4+320·3, …) or when checking hand work.
Module 1

State-space models & discrete motion

Everything in this course — wheels, cameras, Kalman filters, reinforcement learning — is built on one idea: the robot is a state machine with a continuous state. This module teaches you to write the state, step it forward in time, and reason about what happens to errors when you keep stepping. Four exercises drill it, including two 3-part exam questions.

1.1 · The state-space model — the robot as a step function

🔴 Exam-core

First region of the formula sheet; drilled by Ex 16–18 and both lab problems; the notation ẋ = f(x, u) reappears in every later module.

What the exam asks: “Model this system: identify the state / write the motion model / derive the update equations.” You get a physical description and must produce vectors and update rules.

As a developer you already know this pattern. A state-space model is exactly a reducer:

state_next = f(state, control)     # motion model  ("what the robot does")
observation = h(state, control)    # sensor model  ("what the robot sees")

The state x is the minimal struct of numbers that makes the future independent of the past — position, heading, velocities. If you can predict tomorrow from today's x and the input u, nothing else needs storing. The control u is your input (wheel speeds, acceleration commands). The output y is what sensors expose — a view over the state, often lossy (a camera sees pixels, not your velocity).

Two flavors, both on your sheet:

  • Continuous time: ẋ = f(x, u) — “ẋ” (x-dot) is the time-derivative: the instantaneous rate of change of the state. Think of it as the direction the state is drifting right now.
  • Discrete time: xk+1 = fk(xk, uk) — the loop iteration you'd actually implement. Time advances in ticks of Δt.
Formula sheet region: state-space models — continuous ẋ = f(x,u), y = h(x,u); discrete x_{k+1} = f_k(x_k, u_k)
on your sheet Formula sheet p. 1, “State-Space Models”. It gives you the shape of the answer; the exercise supplies the physics that goes inside f.

Bridging the physics gap — the only two facts you need from mechanics: velocity is the rate of change of position (v = ẋ), and acceleration is the rate of change of velocity (a = v̇). Integrating a constant acceleration over a step Δt therefore gives:

vt+1 = vt + aΔt  xt+1 = xt + vtΔt + ½aΔt²

The ½aΔt² term exists because velocity is changing during the step — position gains the average of old and new velocity, and that average is vt + ½aΔt. not on sheet — memorize These two equations are demanded verbatim by Ex 16 and inverted by Ex 17.

Exercise 16 · Dynamic Robot Model

Exercise 16: robot on a straight line with state (x_t, v_t), constant acceleration a during Δt. (a) derive v_{t+1} (b) derive x_{t+1} (c) which state variable accumulates larger errors
autonomous_robotics_exercises_only.pdf · p. 9 · Exercise 16
Exam working · ≈3 min (a) v̇ = a, a constant over Δt definition of acceleration  integrate over one step: vt+1 = vt + aΔt (b) ẋ = v, v changes linearly during the step so use average velocity  xt+1 = xt + Δt, v̄ = vt + ½aΔt xt+1 = xt + vtΔt + ½aΔt² (c) Position accumulates larger error — every velocity error is integrated  into position at each step; position error grows even if velocity error stays bounded.
Breakdown.
  1. (a) is one sentence of calculus: if the rate of change of v is the constant a, then after Δt seconds v has grown by aΔt. In code: v += a*dt.
  2. (b) is the same move applied to position, except the rate (velocity) is itself moving. Over the step it goes vt → vt+aΔt linearly, so the distance covered is the average velocity times Δt. Expanding (vt + ½aΔt)Δt gives the boxed formula. If you ever forget the ½: it is the area of the triangle under a linearly-growing velocity curve.
  3. (c) is the error-propagation insight the course reuses in Module 8: summing (integrating) noisy values makes the sum's error grow without bound. Velocity gets a fresh error each step; position gets the running total of them.
Deeper take. This tiny model is the seed of everything in localization: “dead reckoning drifts, so you need sensors” (Ex 18c) and “the Kalman prediction step increases uncertainty” (Ex 11a) are both restatements of part (c). Source: official Solution 16 agrees on all three parts.

Exercise 17 · Recovering Motion

Exercise 17: robot starts at x0, v0, reaches x1 after Δt with constant acceleration. (a) can acceleration be recovered? (b) derive the equation (c) uniqueness if acceleration not constant
autonomous_robotics_exercises_only.pdf · p. 9 · Exercise 17
Exam working · ≈2 min (a) Yes — one unknown (a), one equation (the position update). (b) x1 = x0 + v0Δt + ½aΔt² from Ex 16(b)  ½aΔt² = x1 − x0 − v0Δt a = 2(x1 − x0 − v0Δt) / Δt² (c) No — infinitely many a(t) profiles hit the same x1; would need final  velocity or intermediate measurements to pin the profile down.
Breakdown.
  1. Write the forward model first (green), then treat it as an equation in the one unknown you want. This “invert the motion model” move is the entire trick — the algebra is two lines.
  2. For (c), think API contract: constant-a is a one-parameter family, so one end-point measurement identifies it. Arbitrary a(t) is an infinite-dimensional family — one scalar equation cannot identify a function. Any profile with the same time-average effect gives the same x1.

Exercise 18 · Error Accumulation

Exercise 18: robot repeatedly applies the motion model from Exercise 16. (a) why do small motion errors accumulate (b) which variable becomes more uncertain (c) why do mobile robots require external sensorsExercise 18 continuation: part (c) why do mobile robots require external sensors for localization
autonomous_robotics_exercises_only.pdf · pp. 9–10 · Exercise 18
Exam working · ≈2 min (concept answer) (a) Each estimate is built on the previous one: xt+1 depends on xt. An error at step t is carried into every later step — errors compound. (b) Position — velocity errors get integrated into position (Ex 16c). (c) Dead reckoning has no correction term: drift grows without bound. External sensors (camera, LiDAR, GPS, landmarks) provide absolute references that reset the drift.
Breakdown. One mental picture answers all three parts: open-loop state estimation is a chain of function calls where each call's output is the next call's input — error is data corruption propagating through a pipeline with no validation step. Sensors are the validation step; Module 8 turns this intuition into the Bayes filter's predict/correct loop.

1.2 · Trajectories and time scaling — the chain rule at work

🟠 Exam-practical

Directly assessed by Ex 6; the chain-rule pattern returns in EKF Jacobians (Module 8).

What the exam asks: “A path X(s) is given with a time scaling s(t). Write down Ẋ and Ẍ.” Pure mechanical differentiation — free points if you keep the bookkeeping straight.

A path is geometry: X(s) maps a progress parameter s ∈ [0,1] to a point in space — like a progress bar position mapping to a location. A time scaling s(t) says how fast the progress bar advances. Composing them gives the trajectory X(s(t)), and the chain rule differentiates a composition:

Ẋ = dXds ṡ   Ẍ = d²Xds² ṡ² + dXds

not on sheet — memorize the Ẍ pattern The Ẍ formula is product rule applied to Ẋ = X′(s)·ṡ: differentiate X′(s(t)) (gives X″·ṡ, times the outer ṡ → ṡ²) plus X′ times the derivative of ṡ (gives s̈). If you remember one check: the ṡ² and the single s̈ term.

Exercise 6 · Cylindrical Path

Exercise 6: cylindrical path x=cos(2πs), y=sin(2πs), z=2s with time scaling s(t)=t/4+t²/8, t in [0,2]. Write down Ẋ and ẌExercise 6 continuation: requested outputs Ẋ and Ẍ
autonomous_robotics_exercises_only.pdf · pp. 4–5 · Exercise 6
Exam working · ≈4 min X(s) = (cos 2πs, sin 2πs, 2s), s(t) = ¼t + ⅛t² ṡ = ¼ + ¼t = (1+t)/4, s̈ = ¼ differentiate s(t) twice dX/ds = (−2π sin 2πs, 2π cos 2πs, 2) d²X/ds² = (−4π² cos 2πs, −4π² sin 2πs, 0) Ẋ = (dX/ds)·ṡ chain rule Ẋ = (−2π sin(2πs), 2π cos(2πs), 2) · (1+t)/4 Ẍ = (d²X/ds²)·ṡ² + (dX/ds)·s̈ product + chain rule Ẍ = (−4π²cos(2πs), −4π²sin(2πs), 0)·((1+t)/4)² + (−2π sin(2πs), 2π cos(2πs), 2)·¼ with s = s(t) substituted in. ✓ check: at t=0, ṡ=¼ > 0 — motion starts forward
Breakdown.
  1. Differentiate the scalar time scaling first — it is the easy part and both results need it. ṡ = ¼ + t/4, s̈ = ¼.
  2. Differentiate the path component-wise with respect to s, not t. Each cos/sin pulls out a factor 2π (inner derivative of 2πs); z-component 2s just gives 2.
  3. Assemble with the two green formulas. Do not multiply things out unless asked — the factored form is the official answer and faster to write.
  4. Common trap: writing Ẍ = (d²X/ds²)·ṡ² and forgetting the (dX/ds)·s̈ term. Here s̈ = ¼ ≠ 0, so the second term is very much alive.
Deeper take. Why the course cares: separating path from timing is how planners work (Module 9) — one component finds a collision-free geometric path, another schedules speed along it (subject to velocity/acceleration limits). The chain rule is the interface between the two layers. Source: official Solution 6 agrees.

1.3 · Simulating dynamics — Euler, midpoint, RK4, odeint

🟠 Exam-practical

Lab Problem 1 (150426); slides ch. 1 devote a worked figure to comparing the integrators; concept questions about integration error are cheap exam marks.

What the exam asks: “Explain/implement Euler integration for this model” or “compare Euler with Runge-Kutta.”

You cannot usually solve ẋ = f(x, u) symbolically, so you simulate. All integrators are variations of one loop — the difference is only how carefully they sample f during the step:

# Euler — one sample, first-order accurate: error per step ~ O(dt²)
x = x + dt * f(x, u)

# Midpoint — probe half a step ahead, use the slope there: O(dt³) per step
x_mid = x + 0.5*dt * f(x, u)
x     = x + dt * f(x_mid, u)

# RK4 — four slope samples, weighted average: O(dt⁵) per step
k1 = f(x);  k2 = f(x + dt/2*k1);  k3 = f(x + dt/2*k2);  k4 = f(x + dt*k3)
x  = x + dt/6 * (k1 + 2*k2 + 2*k3 + k4)

Euler is x += f(x)*dt — cheap, drifts on curved dynamics (it always follows the tangent from the step's start). RK4 samples the slope four times per step and averages; scipy.integrate.odeint goes further with adaptive step size. Trade-off is calls-to-f per step vs. allowed step size — exactly a precision/compute budget trade.

Lab Problem 1 · Numerical Integration Methods ▲ programming task — solution outline independently written (no official solution supplied)

Problem 1: Numerical Integration Methods — implement dynamics models for a damped pendulum and a bicycle model, simulate both with scipy odeint in ch01/exercises/simulation.ipynb
exercises_150426.pdf · p. 1 · Problem 1

The task is implementation: write each model as a function returning the state derivative, hand it to odeint.

def damped_pendulum(state, t, g=9.81, l=1.0, b=0.1, m=1.0):
    theta, omega = state                     # state = [angle, angular velocity]
    return [omega, -(g/l)*np.sin(theta) - (b/(m*l**2))*omega]

def bicycle(state, t, v=1.0, alpha=0.1, L=1.0):
    x, y, theta = state                      # pose
    return [v*np.cos(theta), v*np.sin(theta), (v/L)*np.tan(alpha)]

sol = odeint(damped_pendulum, [np.pi/4, 0.0], np.linspace(0, 10, 500))
Breakdown. Both functions are literally the state-space models of this module written as code: the returned list is ẋ = f(x, u). The pendulum's second component is the equation of motion you will derive in Ex 7 (with friction term −b·θ̇/(ml²) included, matching Ex 7's setup); the bicycle's third component is the steering law you will meet in Ex 19. Expected output: the damped pendulum's angle oscillates with shrinking amplitude; the bicycle traces a circle of radius L/tan α. Failure case to mention: with a large fixed step, plain Euler makes the pendulum's amplitude grow (energy injection) — the classic reason to use RK4/odeint.

1.4 · The double integrator — your first linear system

🟠 Exam-practical

Lab Problem 3 (150426); the A/B matrix form is the bridge to the Kalman filter's prediction step in Module 8.

What the exam asks: “Write the discrete dynamics in matrix form xt+1 = Axt + But.”

“Double integrator” = you command acceleration, and it integrates twice before reaching position. State (x, y, vx, vy), control (ax, ay). Because f is linear, the whole step function collapses into two matrices — the structural reason the Kalman filter later gets clean closed-form updates.

Lab Problem 3 · Double Integrator Dynamics ▲ programming task — solution outline independently written (no official solution supplied)

Problem 3: double integrator ẋ=vx, ẏ=vy, v̇x=ax, v̇y=ay with state (x,y,vx,vy) and control (ax,ay)Problem 3 continuation: derive discrete-time vectorized dynamics with stacked states and A,B matrices; implement vectorized feed_forward and rollout
exercises_150426.pdf · pp. 2–3 · Problem 3
Exam working · ≈3 min Per axis, constant a over Δt the Ex 16 equations again xt+1 = xt + vx,tΔt + ½axΔt², vx,t+1 = vx,t + axΔt Stack state (x, y, vx, vy): xt+1 = A xt + B ut A = 10Δt0010Δt00100001 B = ½Δt²00½Δt²Δt00Δt ✓ check: row 1 reads x + Δt·vx + ½Δt²·ax — matches the scalar equation
Breakdown.
  1. Solve one axis first with the Ex 16 equations; x and y do not interact, so the 2D system is two copies.
  2. “Write it in matrix form” means: arrange coefficients so each state component's update is one row. Read row-by-row to verify — that is also the exam sanity check.
  3. The vectorized notebook part: for N simultaneous rollouts, stack states as rows of X̄ (N×4) and controls as rows of Ū (N×2); one step is X̄ = X̄ @ A.T + Ū @ B.T. The transposes appear because rows, not columns, hold the vectors. rollout then needs only the time loop — the batch dimension is handled by the matrix product.
Deeper take. Some notebooks discretize with plain Euler (B has Δt only, no ½Δt² rows). Both are accepted discretizations; the ½Δt² version is exact for piecewise-constant acceleration and is consistent with the official Ex 16 solution, so prefer it on paper and state your choice.
Module 2

Wheeled kinematics & constraints

How do wheel speeds become robot motion? This module covers the three wheeled models the course uses — unicycle, differential drive, bicycle — and the constraint language (holonomic vs non-holonomic) that explains why your robot can't strafe. It contains the highest-value numeric exercise of the collection (Ex 8, 15 points) and a run of cheap concept questions (Ex 20–23).

2.1 · Constraints — why wheels can't strafe

🔴 Exam-core

Second region of the formula sheet; Ex 22 asks the holonomic/non-holonomic comparison directly; Lab P2 builds on the unicycle model.

What the exam asks: “Which robot is holonomic? Explain the difference. Write the no-slip constraint.”

A constraint is an invariant the physical system enforces on the state. Two kinds:

  • Holonomic: g(q, t) = 0 — a restriction on positions (configuration q). Think database constraint on the row's values. It removes a degree of freedom outright: a train constrained to its track.
  • Non-holonomic: A(q, t)q̇ = b(q, t) — a restriction on velocities that cannot be integrated into a position restriction. The state can eventually reach anywhere, but not by any path: a car can parallel park, but not by sliding sideways.

For a wheel with heading θ, the two rows of the constraint story are on your sheet:

  • Lateral no-slip: ẋ sin θ − ẏ cos θ = 0 — “velocity component perpendicular to the wheel is zero.” This is the mathematical form of can't strafe.
  • Rolling without slip: ẋ cos θ + ẏ sin θ = rφ̇ — “forward speed equals wheel radius times wheel spin rate.” Rolling converts rotation to translation losslessly.
Formula sheet region: constraints — holonomic g(q,t)=0, general velocity constraint A(q,t)q̇=b(q,t), lateral no-slip ẋsinθ−ẏcosθ=0, rolling without slip ẋcosθ+ẏsinθ=rφ̇
on your sheet Formula sheet p. 1, “Constraints”. To reconstruct the no-slip row: the unit vector perpendicular to heading θ is (sin θ, −cos θ); dot it with (ẋ, ẏ) and demand zero.

Exercise 22 · Holonomic vs Non-Holonomic Robots

Exercise 22: Robot A omnidirectional platform, Robot B differential-drive robot. (a) which is holonomic (b) explain the difference (c) real-world example of each (d) which is easier to maneuver indoorsExercise 22 continuation: subparts on holonomic vs non-holonomic systems
autonomous_robotics_exercises_only.pdf · pp. 10–11 · Exercise 22
Exam working · ≈2 min (concept answer) (a) Robot A (omnidirectional) is holonomic. (b) Holonomic: can directly command all DOF of its configuration (x, y, θ) —  no velocity constraint. Non-holonomic: velocity constraints forbid some motions  (ẋ sin θ − ẏ cos θ = 0: a diff-drive cannot move sideways). (c) Holonomic: mecanum/omni-wheel platform. Non-holonomic: car, differential-drive robot. (d) Robot A — it can translate sideways without re-orienting first.
Breakdown. Quote the sheet's no-slip constraint in (b) — it is the cleanest possible evidence you understand the definition, and it is sitting on your allowed sheet. The word “directly” matters in the definition: a diff-drive can reach any (x, y, θ), just not by any instantaneous velocity — reachability is not the issue, the velocity space is.

2.2 · Differential drive — two wheel speeds in, (v, ω) out

🔴 Exam-core

Ex 8 carries 15 points and full numbers; the formulas are NOT on the sheet — this is the single most valuable memorization item of the course.

What the exam asks: “Wheel radius r, separation L, wheel speeds ωL, ωR — compute v, ω, and the turning radius.”

Each wheel contributes a ground-contact speed v = rω (that's the rolling constraint). The robot body then averages and differences them:

v = r(ωR + ωL)2  ω = r(ωR − ωL)L  R = vω

not on sheet — memorize How to rebuild them if memory fails: equal wheels → straight line at the average speed (so v must be the mean of rωL, rωR). Opposite wheels → spin in place about the midpoint: each wheel travels a circle of radius L/2, so ω = (vR − vL)/L. Turning radius is just the ratio: a point moving at v while turning at ω traces a circle with v = ωR.

Exercise 8 · Differential Drive Kinematics (15 points)

Exercise 8: differential drive robot with wheel radius r=0.1 m, wheel separation L=0.5 m, left wheel 4 rad/s, right wheel 6 rad/s. (a) compute linear velocity v (b) compute angular velocity ωExercise 8 continuation: (c) determine the turning radius of the robot
autonomous_robotics_exercises_only.pdf · pp. 5–6 · Exercise 8
Exam working · ≈3 min (a) v = r(ωR + ωL)/2 = 0.1·(6 + 4)/2 = 0.05 · 10 → v = 0.5 m/s (b) ω = r(ωR − ωL)/L = 0.1·(64)/0.5 = 0.2 · 2 → ω = 0.4 rad/s (c) R = v/ω = 0.5/0.4 → R = 1.25 m ✓ ωR > ωL → turns left; R = 1.25 > L/2 = 0.25 → a gentle arc, plausible
Breakdown.
  1. Write each green formula before substituting — with 5 points per subpart, the formula line alone earns partial credit.
  2. Units: rad/s times m gives m/s because radians are dimensionless — v = rω is the definition of arc speed.
  3. (c) reuses your own intermediates (amber): no new given values enter. If your v or ω was wrong, consistent reuse still earns follow-through marks.
  4. Sanity checks that cost 5 seconds: equal speeds would give ω = 0 (straight); swapped wheels flips the sign of ω but not v.
Calculator corner (fx-991CW)
Plain Calculate app: 0.1×(6+4)÷2 EXE → 0.5, store: VARIABLE → A → Store. Then 0.1×(6−4)÷0.5 EXE → 0.4 → store in B. Radius: A÷B EXE → 1.25. Numbers this clean are hand-arithmetic — use the calculator only to verify.
Deeper take. The turning radius is measured from the ICC (instantaneous center of curvature), the point both wheel circles share. R = v/ω places the ICC 1.25 m to the robot's left. As ω → 0, R → ∞: a straight line is a circle of infinite radius — the math degrades gracefully, your answer should mention division-by-zero only if v is also 0. Source: official Solution 8 agrees on all values.

2.3 · Unicycle and bicycle models — steering as state update

🔴 Exam-core

Ex 19 demands the discrete bicycle model; Lab P2 implements the unicycle; Ex 20–21 interrogate the same equations conceptually.

What the exam asks: “Write the discrete motion model of a bicycle robot” plus interpretation questions (“what does increasing α do?”).

The unicycle is the minimal non-holonomic model — pose (x, y, θ), controls (v, ω):

ẋ = v cos θ ẏ = v sin θ θ̇ = ω

The bicycle replaces the direct turn-rate command with a steering angle α acting through the wheelbase L (front wheel steers, rear wheel drives):

xt+1 = xt + v cos(θt)Δt  yt+1 = yt + v sin(θt)Δt  θt+1 = θt + vL tan(α)Δt

not on sheet — memorize Reading it like code: position advances along the current heading (cos/sin split the speed into x/y components — that is the no-slip constraint in disguise), and heading integrates a turn rate v·tan(α)/L. The tan α appears because the front wheel's sideways velocity component v·tan α must be matched by rotation about the rear axle at lever arm L.

Exercise 19 · Bicycle Kinematic Model

Exercise 19: bicycle robot with wheelbase L, steering angle α, forward velocity v. (a) write the discrete motion model (b) how does increasing steering angle change the trajectory (c) why is the bicycle model more suitable for cars
autonomous_robotics_exercises_only.pdf · p. 10 · Exercise 19
Exam working · ≈3 min (a) xt+1 = xt + v cos(θt)Δt, yt+1 = yt + v sin(θt)Δt, θt+1 = θt + (v/L)tan(α)Δt (b) Larger α → larger tan α → larger curvature, smaller turning radius (R = L/tan α). (c) Cars steer their front wheels and cannot rotate in place — matching the bicycle's  geometry; a diff-drive model assumes independently driven left/right wheels.
Breakdown. The only memory item is the θ-update's v·tan(α)/L. Derive-on-demand version: turning radius of a bicycle is R = L/tan α (front wheel offset L ahead, angled α); then θ̇ = v/R = v·tan(α)/L. Notice α = 0 gives θ̇ = 0 (straight), α → 90° gives R → 0 (pivot around rear axle — physically impossible for a car, and tan blows up accordingly).

Exercise 20 · Effect of Control Errors

Exercise 20: steering and velocity commands affected by noise. (a) which error most affects orientation (b) which error mainly affects travelled distance (c) explain why
autonomous_robotics_exercises_only.pdf · p. 10 · Exercise 20
Exam working · ≈2 min (concept answer) (a) Steering error dominates orientation. (b) Velocity error dominates travelled distance. (c) In θt+1 = θt + (v/L)tan(α)Δt, α enters the heading directly (and through  the nonlinear tan); v enters distance directly via vΔt in x, y. A heading error then redirects all subsequent motion, while a distance error stays along-track.
Breakdown. Point at the model, name the term. Deeper marks: steering errors are worse long-term because a wrong heading rotates every future displacement (cross-track error grows with distance travelled), whereas a pure speed error only scales the path. This asymmetry is why odometry drift is dominated by heading noise — a fact Module 8 uses to justify external sensing.

Exercise 21 · Inverse Bicycle Problem

Exercise 21: known initial pose and final position. (a) is there always a unique steering angle reaching the goal (b) explain (c) why is final orientation important
autonomous_robotics_exercises_only.pdf · p. 10 · Exercise 21
Exam working · ≈2 min (concept answer) (a) No — uniqueness is not guaranteed. (b) The final position leaves (α, v, t) underdetermined: different steering/speed/time  combinations reach the same point; without a required final orientation, several  arcs through the goal exist. (c) Robots rarely need only a point: docking, entering a doorway, grasping, continuing a path all require a specific final heading.
Breakdown. This is the inverse-problem counterpart of Ex 17 — again counting unknowns vs constraints: a 2D goal position gives two equations; the control space (α, v, duration) has three degrees of freedom. Fixing the final orientation adds the third equation and typically restores (local) uniqueness. Same reasoning template, different vehicle.

Exercise 23 · Motion Uncertainty

Exercise 23: (a) list four sources of motion uncertainty (b) how does uncertainty affect localization (c) how do localization algorithms reduce it
autonomous_robotics_exercises_only.pdf · p. 11 · Exercise 23
Exam working · ≈2 min (concept answer) (a) Wheel slip · uneven ground · actuator error · encoder noise (also: calibration error, control delay) (b) Predicted pose becomes less reliable over time — belief spreads; the robot may  believe a pose far from the true one (dead-reckoning drift, Ex 18). (c) Fuse motion prediction with sensor measurements: predict with the motion model,  correct with observations (Bayes/Kalman filter — Module 8).
Breakdown. Give exactly four sources, physical and distinct (slip and uneven ground are different mechanisms; encoder noise is sensing of the wheel, actuator error is execution). Part (c) wants the predict/correct vocabulary — one sentence naming both steps is a complete answer here.

Lab Problem 2 · Nonholonomic Wheeled Robot Dynamics ▲ programming task — solution outline independently written (no official solution supplied)

Problem 2: nonholonomic wheeled robot with state (x, y, θ), control (v, ω), unicycle dynamics ẋ=v cos θ, ẏ=v sin θ, θ̇=ω, constraints |v|≤0.75 m/s and |ω|≤1.0 rad/sProblem 2 continuation: implement RobotDynamics class, feed_forward with Euler integration, rollout with two for-loops, simulate multiple trajectories
exercises_150426.pdf · pp. 1–2 · Problem 2
class RobotDynamics:
    def feed_forward(self, x, u, dt):          # one Euler step of the unicycle
        px, py, th = x;  v, om = np.clip(u, [-0.75, -1.0], [0.75, 1.0])
        return np.array([px + v*np.cos(th)*dt,
                         py + v*np.sin(th)*dt,
                         th + om*dt]) + disturbance()

    def rollout(self, x0, U, dt):              # N trajectories × T steps
        for n in range(N):                     # loop 1: rollouts
            x = x0
            for t in range(T):                 # loop 2: time
                x = self.feed_forward(x, U[t], dt)
                X[n, t] = x
Breakdown. feed_forward is Euler integration (Lesson 1.3) applied to the unicycle equations (Lesson 2.3): next = current + derivative·dt. The control clip enforces the stated actuator limits |v| ≤ 0.75, |ω| ≤ 1.0. The hint about disturbances is the whole pedagogical point: run the same control sequence N times and the trajectories fan out — a picture of Ex 23's motion uncertainty and the reason rollout needs the outer loop at all.
Module 3

Lagrangian dynamics — equations of motion from energy

One lesson, one exercise, disproportionate value: the Lagrangian block occupies a whole region of your formula sheet, and Ex 7 is the course's canonical derivation question. If you have never touched analytical mechanics: good news — the sheet contains every formula, and the procedure is completely mechanical once you see it as a pipeline.

3.1 · The Lagrangian pipeline: energies in, equation of motion out

🔴 Exam-core

Third region of the formula sheet including the fully-worked pendulum special case; Ex 7 assessed it with numbers; Lab P1's damped pendulum implements the result.

What the exam asks: “Write the equation of motion of the pendulum in terms of θ” — possibly with a twist the sheet doesn't cover, like friction. Ex 7 has exactly that twist.

Newton's approach needs you to resolve forces and torques — error-prone geometry. Lagrange's approach is a pure pipeline over scalar energies, no force diagrams:

  1. Choose a coordinate q that describes the configuration (for a pendulum: the angle θ).
  2. Write kinetic energy T = ½mv² (energy of motion) and potential energy V = mgy (energy of height). For a mass on a rod of length l: the speed is v = lθ̇, and the height above the lowest point is y = l(1 − cos θ).
  3. Form the Lagrangian L = T − V. (Yes, minus. L is not itself “an energy” — it is the quantity whose stationarity encodes the dynamics.)
  4. Run the Euler–Lagrange equation — think of it as the compiler that turns L into the equation of motion:
    ddt∂L∂q̇i∂L∂qi = Qi
    where Qi collects the non-conservative generalized forces — friction, motor torques. Unforced case: Qi = 0.
Formula sheet region: Lagrangian mechanics — T=½mv², V=mgy, L=T−V, Euler–Lagrange equation with Q_i, unforced case, and the planar pendulum: T=½ml²θ̇², V=mgl(1−cosθ), ml²θ̈+mgl sinθ=0, θ̈=−(g/l)sinθ
on your sheet Formula sheet p. 1, “Lagrangian Mechanics”. Note it already contains the frictionless pendulum end-to-end: T = ½ml²θ̇², V = mgl(1−cos θ), and the result ml²θ̈ + mgl sin θ = 0. Your job in the exam is to add whatever the sheet's ideal case is missing.

Symbols and where their values come from: m (mass) and l (rod length) are given in the question; g is given or 9.81 ≈ 10 m/s²; θ̇, θ̈ are the unknowns the equation relates; b (friction coefficient, N·m·s/rad) is given only if the question adds friction — and then the sheet will not help you: the friction torque −bθ̇ enters as Q = −bθ̇ on the right-hand side.

Exercise 7 · Pendulum Dynamics

Exercise 7: pendulum with g=10 m/s², 2 kg mass at the end of a 1 m massless rod, viscous friction coefficient b=0.1 N m s/rad. (a) write the equation of motion in terms of θ, θ=0 is hanging down
autonomous_robotics_exercises_only.pdf · p. 5 · Exercise 7
Exam working · ≈4 min m = 2 kg, l = 1 m, b = 0.1 N·m·s/rad, g = 10 m/s², θ = 0 hangs down T = ½ml²θ̇², V = mgl(1 − cos θ) sheet, pendulum block L = T − V = ½ml²θ̇² − mgl(1 − cos θ) ∂L/∂θ̇ = ml²θ̇ → d/dt(∂L/∂θ̇) = ml²θ̈ ∂L/∂θ = −mgl sin θ friction enters as generalized force: Q = −bθ̇ not on the sheet! d/dt(∂L/∂θ̇) − ∂L/∂θ = Q → ml²θ̈ + mgl sin θ = −bθ̇ ml²θ̈ + bθ̇ + mgl sin θ = 0 numbers: 2·1²·θ̈ + 0.1θ̇ + 2·10·1·sin θ = 0 → 2θ̈ + 0.1θ̇ + 20 sin θ = 0 ÷2: θ̈ + 0.05θ̇ + 10 sin θ = 0 ✓ units: each term is rad/s² after ÷ml²; b=0 recovers the sheet's ml²θ̈+mgl sinθ=0
Breakdown.
  1. Copy T, V, L from the sheet — free marks for structure. The 1−cos θ in V measures height above the rest position: at θ=0 (hanging) V=0, at the top V=2mgl. Both extremes check out.
  2. The two partial derivatives are the only calculus: ∂L/∂θ̇ treats θ as constant (picks the θ̇² term), ∂L/∂θ treats θ̇ as constant (picks the cos θ term, derivative sin θ, sign flips twice — walk it slowly).
  3. The exam twist: viscous friction. It is not conservative, so it cannot live inside V — it enters as Q = −bθ̇ (opposing torque proportional to angular speed, exactly like a damping term in a control system). Forgetting Q and answering the sheet's frictionless equation is the predictable error here.
  4. Alternative route (equally valid, mention if faster for you): torque balance about the joint, I θ̈ = τgravity + τfriction with I = ml², τg = −mgl sin θ, τb = −bθ̇ — same boxed equation; the official solution takes this route.
Deeper take. Why sin θ and not θ: gravity's restoring torque depends on the lever arm l sin θ, which shrinks to zero when hanging straight down and is maximal horizontal. For small angles sin θ ≈ θ and the system becomes the linear oscillator θ̈ + (b/ml²)θ̇ + (g/l)θ = 0 — the linearization move that Module 8's EKF applies to everything. Source: official Solution 7 agrees (2θ̈ + 0.1θ̇ + 20 sin θ = 0).
Module 4

Rotations & rigid transformations

Frames are the type system of robotics: every point carries an implicit “which frame am I expressed in?” type, and rotation matrices are the type converters. Get fluent here and Module 5 (camera) becomes bookkeeping. Three collection exercises drill it, including the course's classic 7-part frame workout (Ex 3).

4.1 · Rotation matrices — reading, inverting, composing

🔴 Exam-core

“Rigid Transformations” region of the sheet plus the “Useful Values” on page 2; assessed by Ex 3, 4, 5 and reused by every camera exercise.

What the exam asks: “Write down Rsa / invert it without a matrix inverse / compute Rab / rotate this point.”

Everything follows from one reading rule: the columns of Rsa are the axes of frame {a} written in {s} coordinates. Column 1 = where x̂a points, column 2 = ŷa, column 3 = ẑa. That's the whole data structure — a rotation matrix is three unit vectors side by side, mutually perpendicular (an orthonormal set).

Consequences you use constantly:

  • Inverse for free: R−1 = RT. Because the columns are orthonormal, RTR = I. Never row-reduce a rotation matrix.
  • Subscript cancellation: Rab = RasRsb = RsaTRsb — adjacent identical subscripts cancel, like function composition through a shared intermediate type. ps = Rsb pb: the matrix "converts b-typed points to s-typed points."
  • Two readings of R·p: the same multiplication either changes coordinates of a fixed point (if R's subscripts bridge two frames) or moves the point within one frame (if R is used as an operator). Which reading applies is decided by your bookkeeping, not by the numbers — Ex 3(g) tests exactly this.
  • Composition side matters: for an orientation Rsa and a rotation operator R: RsaR rotates about a body axis (applied in {a}-coordinates, right side), R·Rsa rotates about a world axis (applied in {s}-coordinates, left side). Mnemonic: the side the operator touches is the frame it lives in.
Formula sheet region: rigid transformations — cP = cRW·WP + ctW, homogeneous cTW, rotation about y Ry(α), inverse rigid transform T⁻¹ = [Rᵀ, −Rᵀt; 0 0 0 1]
on your sheet Formula sheet p. 1, “Rigid Transformations”. Note it prints only Ry(α) — you must reconstruct Rx, Rz by cycling: the 1 sits at the rotation axis' diagonal slot, cos on the other two diagonal slots, ±sin off-diagonal with the −sin above the +sin for x and z, and flipped for y (as printed).

The professor also circulated a rotation reference (the fig/ sheets): SO(3) membership tests (RTR = I, det R = 1), the skew matrix [ω], the Rodrigues formula R = I + sin θ[ω̂] + (1−cos θ)[ω̂]², and ZYX Euler angles R = Rz(α)Ry(β)Rx(γ) with all three elementary matrices. Those formulas — including the Rx/Rz matrices the exam sheet omits — are collected in your printable cheatsheet §4.

Formula sheet page 2 region: useful values — sin 45° = cos 45° = √2/2, sin 30° = 1/2, cos 30° = √3/2
on your sheet Formula sheet p. 2, “Useful Values” — the surds Ex 4 expects. Extend by symmetry: sin 135° = sin 45° = √2/2, cos 135° = −√2/2, cos(−120°) = −½, sin(−120°) = −√3/2.

Exercise 3 · Rotations and Coordinate Frames

Exercise 3: frame {a} has x̂a pointing along (0,0,1) and ŷa along (−1,0,0); frame {b} has x̂b along (1,0,0) and ŷb along (0,0,−1). Subparts (a)-(e): draw frames, write Rsa and Rsb, invert without matrix inverse, compute Rab, interpret RsaR vs RRsaExercise 3 continuation: (f) use Rsb to convert pb=(1,2,3) to {s} coordinates; (g) compute p′=Rsb·ps and p″=Rsbᵀ·ps and interpret each as changing coordinates or moving the point
autonomous_robotics_exercises_only.pdf · pp. 2–3 · Exercise 3
Exam working · ≈8 min for all seven subparts (a) drawing below — axes from the given directions, ẑ = x̂ × ŷ (right-hand rule) (b) columns of R are the frame's axes in {s}: a=(0,0,1), ŷa=(−1,0,0) → ẑa = x̂a×ŷa = (0,−1,0) Rsa = 0−1000−1100b=(1,0,0), ŷb=(0,0,−1) → ẑb = (0,1,0)Rsb = 1000010−10 (c) R−1 = RT (orthonormal columns): Rsb−1 = Rbs = 10000−1010 (d) Rab = RasRsb = RsaTRsb subscripts cancel  = 001−1000−10 · 1000010−10 = Rab = 0−10−10000−1 (e) R1 = RsaR = 00−1010100 — operator on the right: R1 rotates Rsa by −90° about the body-fixed x̂a-axis  R2 = R Rsa = 0−10100001 — operator on the left: R2 rotates Rsa by −90° about the world-fixed x̂s-axis (f) ps = Rsb pb = 1000010−10·(1,2,3) = ps = (1, 3, −2) (g) p′ = Rsb ps = (1,3,−2)moves the point (operator in {s}; s-typed in, s-typed out)  p″ = RsbT ps = Rbs ps = (1,−3,2)changes coordinates {s}→{b}, point unmoved ✓ every R above: det = 1, columns unit length — checked
x̂ₛŷₛẑₛ {s} x̂ₐŷₐẑₐ {a} bŷbb {b} Answer to (a): each frame drawn with x̂ red, ŷ green, ẑ blue. World directions: x̂ₛ toward the viewer (lower-left), ŷₛ right, ẑₛ up. Check each with the right-hand rule.
Ex 3(a): frames {s}, {a}, {b} drawn from the given axis directions — the requested drawing.
Breakdown.
  1. (b) Never guess a rotation matrix entry-by-entry. Build the third axis with the cross product (right-hand rule: x̂ × ŷ = ẑ), then stack the three axes as columns. x̂a×ŷa = (0,0,1)×(−1,0,0) = (0,−1,0) — the cross product of unit axes always lands on another axis, so entries stay 0/±1.
  2. (c) The whole point of the subpart: orthonormality makes transposition the inverse. Verify against your drawing — Rbs's columns must be the {s} axes expressed in {b}.
  3. (d) Subscript algebra first (RsaTRsb), then multiply. All entries 0/±1: do it by hand, each output entry is a single dot product of a row and a column.
  4. (e) is the conceptual heart. Same two matrices, opposite order, different geometric meaning: right-multiplication = body-frame rotation, left-multiplication = world-frame rotation. If this feels arbitrary, trace one axis: R1's first column (0,0,1) says x̂ still points at world ẑ — the body x-axis was the rotation axis, unchanged ⇒ body-fixed rotation.
  5. (g) p′ keeps the s-type (operator reading, point physically rotated); p″ retypes the same point into {b} (converter reading, Rbs = RsbT bridges s→b). The numbers (1,3,−2) vs (1,−3,2) differing is the proof that the two readings are different operations.
Calculator corner (fx-991CW)
Worth using only as a checker here (entries are 0/±1). Matrix app: define MatA = RsaT (3×3), MatB = Rsb; CATALOG→Matrix→MatA × MatB EXE reproduces (d). Determinant check: CATALOG→Matrix Calc→Determinant→MatA) EXE → must be 1.
Deeper take. This exercise is the standard frame-fluency test (it originates from the Modern Robotics problem set). Every camera exercise in Module 5 is this exercise wearing a trench coat: “world point → camera coordinates” is (f) with Rcw, and “which reading applies” never comes up again if you always write subscripts. Source: official Solution 3 agrees on every matrix.

Exercise 4 · Rotation Composition

Exercise 4: point p=(1/√3, −1/√6, 1/√2) rotated about fixed-frame x̂ by 30°, then fixed-frame ŷ by 135°, then fixed-frame ẑ by −120°. (a) coordinates p′ (b) rotation matrix R with p′=Rp
autonomous_robotics_exercises_only.pdf · p. 3 · Exercise 4
Exam working · ≈6 min with calculator fixed-frame rotations stack on the left: R = Rz(−120°) Ry(135°) Rx(30°) (b) answered first surds from sheet p.2: cos30=√3/2, sin30=½, cos135=−√2/2, sin135=√2/2, cos(−120)=−½, sin(−120)=−√3/2 Rx(30°)=1000√3/2−½0½√3/2 Ry(135°)=−√2/20√2/2010−√2/20−√2/2 Rz(−120°)=−½√3/20−√3/2−½0001 multiply (calculator, exact display): R = √2/4 ¾−√2/8 −√3/4−√6/8√6/4 −√3/4−√6/8 ¼−3√2/8−√2/2 −√2/4 −√6/4 apply to p = (1/√3, −1/√6, 1/√2): p′ = R p = ( −(2√6+√3)/12, (2√2−1)/4, −(√6+√3)/6 ) ≈ (−0.553, 0.457, −0.697) ✓ ∥p′∥ = 1 = ∥p∥ (rotation preserves length) and det R = 1 — both verified
Breakdown.
  1. The one decision in this exercise: which side does each new rotation multiply on? All three rotations are about fixed-frame axes → each premultiplies (left). First applied = rightmost. (Body-frame rotations would postmultiply — Ex 3(e) is the rule's source.)
  2. Build the elementary matrices from the sheet's Ry(α) template plus the surd table; watch the sign pattern for Ry (its +sin is top-right, unlike Rx/Rz).
  3. The double 3×3 surd product is where hand arithmetic dies. Under exam time: do it on the calculator and transcribe.
Calculator corner (fx-991CW)
Matrix app. TOOLS define MatA = Rz(−120°), MatB = Ry(135°), MatC = Rx(30°) — type entries as −√3÷2 etc. (exact surds are kept). Then CATALOG→Matrix: MatA×MatB×MatC EXE → R. Store p as MatD (3×1): MatAns×MatD EXE → p′. Press FORMAT to toggle exact/decimal. Sanity: Det(MatAns) of R → 1.
⚠ Discrepancy with the supplied solutionThe official Solution 4 lists R and p′ = ((3√6+√2)/8, (√6−3√2)/8, −½) — but that vector has length √1.5 ≈ 1.22, and a rotation cannot change the length of p (which is 1). Its R also contains a row of length < 1, so its matrix product has arithmetic slips. The values above were computed symbolically (SymPy) and check both invariants: ∥p′∥ = 1, det R = 1, R RT = I. The official solution's method (composition order, elementary matrices) is correct — only its multiplication is off. In the exam, the norm check is your defence: 10 seconds to catch this class of error.

Exercise 5 · Rigid Body Motion

Exercise 5: rigid body rotates about the point (L, L) with angular velocity θ̇=1. Find position of point P relative to fixed frame in terms of θ, velocity of P, and TsbExercise 5 figure: fixed frame {s} at origin, rotation center at (L,L), body frame {b} at point P located distance d below the rotation center; subparts (a) position of P (b) velocity of P (c) configuration Tsb
autonomous_robotics_exercises_only.pdf · pp. 3–4 · Exercise 5 (figure included)
Exam working · ≈4 min rotation center C = (L, L); from the figure P sits distance d below C at θ=0  → rCP = (0, −d) in the rotating frame planar rotation: R(θ) = cos θ−sin θsin θcos θ (a) Ps(θ) = C + R(θ) rCP = (L,L) + (d sin θ, −d cos θ) Ps(θ) = ( L + d sin θ, L − d cos θ ) (b) differentiate, θ̇ = 1: Ṗs = (d cos θ·θ̇, d sin θ·θ̇) → s = ( d cos θ, d sin θ ) (c) frame {b} sits at P with orientation R(θ): Tsb = cos θ−sin θL+d sin θsin θcos θL−d cos θ001 ✓ θ=0: P=(L, L−d) — directly below C, matches the figure
Breakdown.
  1. The decomposition center + rotated offset is the universal trick for circular motion: express the fixed pivot, then rotate the constant body-frame offset. All the geometry reading happens in the single line rCP = (0, −d) — taken straight from the figure in the snippet.
  2. (b) is one chain rule; with θ̇ = 1 the answer is the derivative of (a) with θ̇ struck out. Velocity is perpendicular to the offset (dot product of (sin θ, −cos θ) and (cos θ, sin θ) is 0) — circular motion sanity check.
  3. (c) A planar homogeneous transform is the 2×2 rotation with the frame origin glued on as the third column, bottom row (0 0 1). The origin of {b} is P itself, so paste in (a).
Deeper take. Tsb packages “where is the body and how is it oriented” into a single matrix so that composing motions becomes matrix multiplication — the same homogeneous trick the camera's [R|t] uses in Module 5. Source: official Solution 5 agrees on all three parts.

4.2 · Homogeneous transforms — position and orientation in one matrix

🔴 Exam-core

On the sheet (T, T−1); the camera pipeline's [R|t] and Ex 5(c) both use it; camera sheet Ex 10–13 drill the inverse.

What the exam asks: “Write T / apply T to a point / invert T without inverting a 4×4.”

A rigid transform is rotation-then-translation: cP = cRWWP + ctW. Homogeneous coordinates make it a single multiplication by appending a 1 to the point:

cTW = cRWctW0 0 01  cP̃ = cTWW

The payoff is the inverse shortcut on your sheet — derived by solving cP = R WP + t for WP (multiply by RT, move terms):

T−1 = RT−RTt0 0 01

Note the translation of the inverse is −RTt, not −t — the single most common error in camera back-projection tasks. The worked drills live with the camera exercises (Camera 10–13), where this matrix does its real job.

Module 5

Camera projection — world point to pixel and back

The most drilled topic of the course: one 15-point collection exercise plus 31 practice drills across two sheets. The good news: every single one runs the same four-stage pipeline, forward or backward. Learn the pipeline once, then execute.

5.1 · The projection pipeline

🔴 Exam-core

Largest region of the formula sheet; Ex 9 (15 points); two full drill sheets; ceiling-marker localization (Module 6) is a special case of it.

What the exam asks: “Given a point, R, t, and K — compute the pixel coordinates” (forward) or “given a pixel and depth, recover the 3D point” (inverse).

Four stages, each a one-liner. Think of it as a data pipeline with three coordinate types:

PW world (3D, m)frame: {W} PC camera (3D, m)ZC = depth, must be > 0 (xn, yn) normalizeddimensionless, on plane Z=1 (u, v) pixelsimage coordinates PC = R·PW + t divide by ZC apply K extrinsics (pose) the nonlinear step intrinsics (lens/sensor)
The full pipeline. Every camera exercise in the course is some subset of these arrows, run left-to-right (projection) or right-to-left (back-projection). This diagram is also the expected answer whenever a drill says “draw the projection pipeline.”
  1. World → camera (extrinsics): PC = R PW + t. Frame conversion, Module 4 material. R, t describe where the camera is.
  2. Camera → normalized: xn = XC/ZC, yn = YC/ZC. Perspective division — the step that makes far things small, and the only nonlinear step. Requires ZC > 0 (point in front of camera).
  3. Normalized → pixels (intrinsics): u = fxxn + cx, v = fyyn + cy. A scale (focal length in pixel units) and a shift (principal point = image center of the optical axis).
  4. All at once, homogeneous: λp̃ = K[R|t]P̃W — append 1 to the point, multiply, then divide the result by its third component (λ = ZC). One matrix product instead of three steps.
Formula sheet region: pinhole camera projection — normalized coordinates xn=Xc/Zc, yn=Yc/Zc; u=fx·xn+cx, v=fy·yn+cy; intrinsic matrix K; full projection λp̃=K[R|t]P̃w; homogeneous normalization
on your sheet Formula sheet p. 1, “Pinhole Camera Projection” — the entire pipeline is printed. The trap: its normalized-coordinate formulas assume the point is already in camera coordinates. If the exercise says “world point”, stage 1 is on you (rigid transforms, also on the sheet).

Symbols and origins: fx, fy (focal lengths, pixels), cx, cy (principal point, pixels — sometimes written u0, v0; s = skew, always 0 in this course) come from K, given. R, t given or built from a stated rotation. ZC is computed in stage 1 unless the point is already camera-frame. In back-projection, depth is given or the answer stays a ray.

Exercise 9 · Camera Projection (15 points) — the flagship

Exercise 9: pinhole camera with intrinsic matrix K=[[800,0,320],[0,800,240],[0,0,1]], 3D point in camera coordinates P=(1,2,5) m. (a) compute normalized image coordinates (b) compute pixel coordinates (c) explain difference between intrinsic and extrinsic parameters
autonomous_robotics_exercises_only.pdf · p. 6 · Exercise 9
Exam working · ≈4 min point already in camera coords: P = (1, 2, 5), fx=fy=800, cx=320, cy=240 (a) xn = XC/ZC, yn = YC/ZC = 1/5, 2/5 → (xn, yn) = (0.2, 0.4) (b) u = fxxn + cx = 800·0.2 + 320 = 160 + 320 → u = 480 v = fyyn + cy = 800·0.4 + 240 = 320 + 240 → v = 560 (u, v) = (480, 560) (c) Intrinsic: internal camera geometry (focal lengths, principal point, skew) — inside K. Extrinsic: camera pose relative to another frame — R and t; they map world → camera coords. ✓ point is right of and below center (x_n, y_n > 0) and u > 320, v > 240 — consistent
Breakdown.
  1. First decision of any camera task: what frame is the point in? Here it says “in camera coordinates” — stage 1 skipped. (The wording is exactly what distinguishes this from Camera 7/16, where a world point forces the extrinsic step first.)
  2. (a) is two divisions; keep them as clean decimals. (b) is the K map spelled out — writing the sheet's u, v formulas before substituting earns the structure marks.
  3. (c) one crisp sentence each side, naming where they live (K vs [R|t]). Bonus phrase: intrinsics are fixed by the camera hardware, extrinsics change whenever the camera moves.
Calculator corner (fx-991CW)
Calculate app is enough: 800×1÷5+320 EXE, 800×2÷5+240 EXE. Or matrix check: MatA = K (3×3), MatB = P (3×1), MatA×MatB EXE → (2400, 2800, 5); divide first two by 5. Same answer both routes — the homogeneous route is (b) of Camera 6.
Deeper take. Source: official Solution 9 agrees. Notice the two equivalent routes — direct formulas vs K-multiplication + normalization. The homogeneous route generalizes (it's what λp̃ = K[R|t]P̃ does); the direct route is faster for numbers. Pick per task, know both.

5.2 · Guided drill sheet — the forward pipeline, stage by stage

🟠 Exam-practical

The 060526 sheet exists specifically to rehearse the exam calculation; its own printed solutions are cross-checked below (all values agree unless noted).

The sheet builds the pipeline one stage at a time. Work them in order; each drill below shows the snippet, the working as you would write it, and — only where something is instructive — a remark.

Camera 1 · Coordinate Frames

Camera exercise 1: world point PW=(2,1,5), camera aligned with world frame, translation t=0. Compute PC = R·PW + t
exercises_060526.pdf · p. 1 · Exercise 1
Working · <1 min aligned frames → R = I, t = 0: PC = R PW + t = PW → PC = (2, 1, 5)
Remark. The identity case exists to fix the convention in your head: the formula maps world → camera, and “aligned, no offset” must give the same numbers back.

Camera 2 · Translation Only

Camera exercise 2: world point PW=(3,2,10), same orientation, translation t=(−1,0,0). Compute PC
exercises_060526.pdf · p. 2 · Exercise 2
Working · <1 min PC = PW + t = (31, 2, 10) → PC = (2, 2, 10)
Remark. t is added in the camera frame — it is not the camera's position. With R = I the camera center sits at −t = (1, 0, 0): a camera one meter along +x sees the world shifted one meter toward −x. Sign confusion here is the #1 error in inverse tasks later.

Camera 3 · Camera Coordinates to Image Coordinates

Camera exercise 3: PC=(2,1,4), focal length f=2. Compute image-plane coordinates x=f·Xc/Zc, y=f·Yc/ZcCamera exercise 3 continuation: formulas x=f·Xc/Zc and y=f·Yc/Zc
exercises_060526.pdf · pp. 2–3 · Exercise 3
Working · 1 min x = f·XC/ZC = 2·2/4 = 1, y = f·YC/ZC = 2·1/4 = 0.5 → p = (1, 0.5)
Remark. This is the metric image plane (f in the same length units as the point). The sheet's xn, yn are the f = 1 special case. Same operation, different scaling constant.

Camera 4 · Effect of Depth

Camera exercise 4: points P1=(2,1,4) and P2=(2,1,8), f=2. Project both onto the image plane
exercises_060526.pdf · p. 3 · Exercise 4
Working · 1 min P1: (2·2/4, 2·1/4) = (1, 0.5) P2: (2·2/8, 2·1/8) = (0.5, 0.25) Same X, Y — twice the depth → image point at half the distance from center.
Remark. Projection scales like 1/Z. This single fact powers the entire ceiling-marker module (scale = f/h) and stereo depth (Module 7).

Camera 5 · Camera Coordinates to Pixel Coordinates

Camera exercise 5: PC=(2,1,4), parameters α=800, β=800, u0=320, v0=240. Compute pixel coordinates u=α·Xc/Zc+u0, v=β·Yc/Zc+v0Camera exercise 5 continuation
exercises_060526.pdf · pp. 3–4 · Exercise 5
Working · 1 min u = α·XC/ZC + u0 = 800·0.5 + 320 = 400+320 → u = 720 v = β·YC/ZC + v0 = 800·0.25 + 240 = 200+240 → v = 440 p = (720, 440)
Remark. α, β here are the sheet's fx, fy, and (u0, v0) is (cx, cy) — notation drift between sheets, same objects. Expect either notation in the exam.

Camera 6 · Using the Intrinsic Matrix

Camera exercise 6: K=[[800,0,320],[0,800,240],[0,0,1]], PC=(2,1,4). Compute homogeneous pixel coordinate ph=K·PC and recover the Euclidean pixel coordinate
exercises_060526.pdf · p. 4 · Exercise 6
Working · 2 min ph = K PC = 80003200800240001·(2,1,4) = (800·2+320·4, 800·1+240·4, 4) = (2880, 1760, 4) normalize by 3rd coordinate: u = 2880/4, v = 1760/4 → p = (720, 440) ✓ matches Camera 5 — the two routes must agree
Remark. Key mental shift: K·PC gives a homogeneous triple whose third entry is the depth; the perspective division happens at the end. This ordering is what lets the whole pipeline chain into λp̃ = K[R|t]P̃.
Calculator corner: Matrix app, MatA = K, MatB = PC (3×1); MatA×MatB EXE; divide entries 1–2 by entry 3 by hand — the calculator will not do the homogeneous division for you.

Camera 7 · Complete Projection from World to Pixel

Camera exercise 7: world point PW=(3,2,10), pose R=I, t=(−1,0,0), K=[[800,0,320],[0,800,240],[0,0,1]]. Compute the pixel coordinates
exercises_060526.pdf · p. 5 · Exercise 7
Working · 2 min stage 1: PC = R PW + t = (3,2,10) + (−1,0,0) = (2, 2, 10) stage 2+3: u = 800·2/10 + 320 = 160+320 → 480; v = 800·2/10 + 240 = 160+240 → 400 p = (480, 400)
Remark. First drill that runs the whole pipeline. In the exam, label the stages exactly as here — “world→camera”, “project” — graders award structure.

Camera 8 · Back-Projection from Pixel to Camera Ray

Camera exercise 8: pixel p=(720,440), K=[[800,0,320],[0,800,240],[0,0,1]]. Compute the corresponding ray direction in camera coordinatesCamera exercise 8 continuation: K matrix definition
exercises_060526.pdf · pp. 5–6 · Exercise 8
Working · 2 min invert the intrinsic map: xn = (u−u0)/fx = (720320)/800 = 0.5 yn = (v−v0)/fy = (440240)/800 = 0.25 ray direction dC = (0.5, 0.25, 1) — a direction, not a point: depth unknown
Remark. Undoing K is just undoing “scale then shift”: subtract the shift, divide by the scale. The 1 in the third slot parametrizes the ray: every point Z·(0.5, 0.25, 1) hits pixel (720, 440).

Camera 9 · Back-Projection with Known Depth

Camera exercise 9: same camera as exercise 8, pixel (720,440) has depth Zc=4. Compute the 3D point in camera coordinatesCamera exercise 9 continuation
exercises_060526.pdf · pp. 6–7 · Exercise 9
Working · 1 min from Camera 8: (xn, yn) = (0.5, 0.25); given ZC = 4 XC = xnZC = 2, YC = ynZC = 1 → PC = (2, 1, 4) ✓ projecting (2,1,4) with this K gives (720,440) — Camera 5 confirms

Camera 10 · Back from Camera to World Coordinates

Camera exercise 10: PC=(2,2,10), transformation PC=R·PW+t with R=I, t=(−1,0,0). Compute PW
exercises_060526.pdf · p. 7 · Exercise 10
Working · 1 min R = I → PW = PC − t = (2,2,10) − (−1,0,0) → PW = (3, 2, 10) ✓ Camera 7 forward gave (2,2,10) from (3,2,10) — round trip closes

Camera 11 · General Inverse Transformation

Camera exercise 11: derive the formula recovering PW from PC = R·PW + t for a valid rotation matrix R
exercises_060526.pdf · p. 8 · Exercise 11
Working · 2 min (derivation) PC = R PW + t subtract t: PC − t = R PW multiply by R−1, and R−1 = RT for rotations: PW = RT(PC − t)
Remark. Expand it: PW = RTPC − RTt — the inverse transform's rotation is RT and its translation is −RTt. That is exactly the sheet's T−1 block (Module 4.2). Two-line derivation, worth having cold.

Camera 12 · Rotation Around the Z-Axis

Camera exercise 12: world point PW=(1,0,5), camera rotated 90° around z-axis, R=[[0,−1,0],[1,0,0],[0,0,1]], t=0. Compute PCCamera exercise 12 continuation
exercises_060526.pdf · pp. 8–9 · Exercise 12
Working · 1 min PC = R PW = 0−10100001·(1,0,5) = PC = (0, 1, 5) world x̂-axis point now lies on the camera ŷ-axis; depth unchanged (rotation about the optical axis)

Camera 13 · Full Projection with Rotation

Camera exercise 13: using PC=(0,1,5) from exercise 12 and K=[[800,0,320],[0,800,240],[0,0,1]], compute the pixel coordinates
exercises_060526.pdf · p. 9 · Exercise 13
Working · 1 min u = 800·0/5 + 320 = 320 (dead center in u — XC = 0) v = 800·1/5 + 240 = 160+240 = 560… careful: 800·(1/5) = 160 → v = 400 p = (320, 400)
Remark. A point with XC = 0 lands exactly on the vertical center line u = cx — reading such structural zeros before computing is the fastest self-check available.

Camera 14 · Which Points Are Visible?

Camera exercise 14: a camera only sees points with positive depth Zc>0. Determine visibility of P1=(1,1,5), P2=(1,1,−2), P3=(0,0,0)Camera exercise 14 continuation
exercises_060526.pdf · pp. 9–10 · Exercise 14
Working · 1 min P1: ZC = 5 > 0 → visible P2: ZC = −2 < 0 → not visible (behind the camera) P3: ZC = 0 → not projectable (division by zero — the camera center itself)

Camera 15 · Conceptual Question

Camera exercise 15: why does a single pixel coordinate not uniquely determine a 3D point?
exercises_060526.pdf · p. 10 · Exercise 15
Working · 1 min (concept answer) A pixel defines a ray from the camera center; every point on that ray projects to the same pixel. Recovering a point needs extra information: depth sensor, stereo, or known object size.
Remark. The slogan to write: pixel → ray, not point. Camera 8 is this fact as arithmetic; triangulation (Module 7) is the fix — intersect two rays.

Camera 16 · Guided Full Pipeline

Camera exercise 16: PW=(4,2,8), R=I, t=(−2,0,0), K=[[600,0,320],[0,600,240],[0,0,1]]. Compute camera-frame point, normalized coordinates, pixel coordinatesCamera exercise 16 continuation: K matrix and the three requested computations
exercises_060526.pdf · pp. 10–11 · Exercise 16
Working · 3 min 1. PC = PW + t = (42, 2, 8) = (2, 2, 8) 2. xn = XC/ZC = 2/8 = 0.25, yn = 2/8 = 0.25 3. u = 600·0.25 + 320 = 150+320 → 470; v = 600·0.25 + 240 → 390 p = (470, 390)
Remark. The battle plan's Day-1 target. Different K (600, not 800) than earlier drills — read the given K every time; the numbers are deliberately varied between drills to punish formula-sheet autopilot.

Camera 17 · Guided Inverse Pipeline

Camera exercise 17: pixel (470,390), depth Zc=8, K=[[600,0,320],[0,600,240],[0,0,1]], R=I, t=(−2,0,0). Recover the world point PWCamera exercise 17 continuation: transformation definition
exercises_060526.pdf · pp. 11–12 · Exercise 17
Working · 3 min 1. xn = (470320)/600 = 0.25; yn = (390240)/600 = 0.25 2. with ZC = 8: XC = 0.25·8 = 2, YC = 2 → PC = (2, 2, 8) 3. PW = RT(PC − t) = (2, 2, 8) − (−2, 0, 0) → PW = (4, 2, 8) ✓ exact inverse of Camera 16 — round trip closes
Remark. The complete inverse pipeline in three moves: undo K, attach depth, undo the rigid transform. Every inverse camera exam task is this template with different numbers.

Camera 18 · Conceptual Summary

Camera exercise 18: fill in the missing words about K containing parameters, R and t being parameters, a pixel with no depth being a ray, depth positivity, and homogeneous coordinates enabling matrix operations
exercises_060526.pdf · p. 12 · Exercise 18
Working · 1 min 1. K contains the intrinsic parameters 2. R, t are the extrinsic parameters 3. pixel with no depth ↔ a ray in 3D 4. depth ZC must be positive and nonzero 5. homogeneous coordinates make projection a matrix multiplication

5.3 · Variant sheet — same pipeline, fresh numbers

🟠 Exam-practical

Second practice sheet (060526_2), no official solutions supplied — all answers below independently computed and machine-verified; the conceptual parts follow the course slides' definitions.

Variant 1 · Understanding Coordinate Frames

Variant exercise 1: PW=(2,1,5), t=(−1,0,0). Compute PC, interpret the translation physically, sketch the frames
exercises_060526_2.pdf · p. 1 · Exercise 1
Working · 2 min 1. no rotation stated → R = I: PC = PW + t = (21, 1, 5) → PC = (1, 1, 5) 2. t shifts world points by −1 along x when re-expressed in the camera frame — equivalently the camera center sits at −t = (1, 0, 0) in the world. 3. sketch: two parallel axis triads offset by 1 m along x (orientations identical).

Variant 2 · Basic Perspective Projection

Variant exercise 2: PC=(2,1,4), focal length f=800. Compute image coordinates, explain effect of increasing Zc, explain why perspective projection is nonlinearVariant exercise 2 continuation
exercises_060526_2.pdf · pp. 1–2 · Exercise 2
Working · 2 min 1. x = f·XC/ZC = 800·2/4 = 400; y = 800·1/4 = 200 → (x, y) = (400, 200) 2. ZC ↑ → x, y shrink toward the image center (1/Z scaling). 3. Nonlinear because of the division by the coordinate ZC — scaling a point's  depth does not scale its image linearly; it is a projective, not affine, map.

Variant 3 · Pixel Coordinates

Variant exercise 3: fx=fy=700, u0=320, v0=240, PC=(1,2,5). Compute (u,v), determine position relative to image center, explain the principal point
exercises_060526_2.pdf · p. 2 · Exercise 3
Working · 2 min 1. u = 700·1/5 + 320 = 140+320 → 460; v = 700·2/5 + 240 = 280+240 → 520 (u, v) = (460, 520) 2. u > u0right of center; v > v0below center (v grows downward). 3. Principal point (u0, v0): where the optical axis pierces the image — the origin  offset that converts centered image coordinates into pixel-array indices.

Variant 4 · Intrinsic Matrix

Variant exercise 4: construct K for fx=900, fy=850, u0=640, v0=360, skew γ=0; explain each parameter and when skew becomes nonzero
exercises_060526_2.pdf · p. 2 · Exercise 4
Working · 2 min 1. K = 90006400850360001 2. fx, fy: focal length in pixel units per axis; u0, v0: principal point; γ: skew (axis shear). 3. γ ≠ 0 when the pixel axes are not perpendicular — sensor manufacturing shear or  legacy analog readout; modern digital sensors: γ = 0.

Variant 5 · Rotation and Translation

Variant exercise 5: PW=(1,0,2), R=[[0,−1,0],[1,0,0],[0,0,1]], t=(1,2,0). Compute PC, describe the rotation's effect, sketch the transformed axes
exercises_060526_2.pdf · p. 3 · Exercise 5
Working · 2 min 1. R PW = 0−10100001·(1,0,2) = (0, 1, 2); + t = (0+1, 1+2, 2+0) → PC = (1, 3, 2) 2. R is a +90° rotation about ẑ: world x̂ ↦ camera ŷ, world ŷ ↦ −x̂; z unchanged. 3. sketch: axes rotated a quarter-turn in the xy-plane, then shifted by t.

Variant 6 · Full Projection Pipeline

Variant exercise 6: PW=(2,1,4), R=I, t=0, K=[[800,0,320],[0,800,240],[0,0,1]]. Transform to camera coordinates, compute image and pixel coordinates, draw the pipeline
exercises_060526_2.pdf · p. 3 · Exercise 6
Working · 2 min 1. R = I, t = 0 → PC = (2, 1, 4) 2. (xn, yn) = (2/4, 1/4) = (0.5, 0.25) 3. u = 800·0.5+320 = 720; v = 800·0.25+240 = 440 → p = (720, 440) 4. pipeline drawing: reproduce the four-box diagram from Lesson 5.1.

Variant 7 · Depth Effect

Variant exercise 7: PC1=(1,1,2) and PC2=(1,1,8). Compute projections, compare, explain why distant objects appear smaller, sketch the geometry
exercises_060526_2.pdf · p. 4 · Exercise 7
Working · 2 min 1. normalized: PC1 → (1/2, 1/2) = (0.5, 0.5); PC2 → (1/8, 1/8) = (0.125, 0.125) 2. same (X, Y), 4× the depth → image position 4× closer to center 3. image size/offset ∝ 1/ZC — equal physical extents subtend smaller angles when far 4. sketch: two similar triangles sharing the camera center; far triangle → shallower ray angle.

Variant 8 · Homogeneous Coordinates

Variant exercise 8: convert (2,3) and (4,−1,5) into homogeneous coordinates, convert back, explain their usefulness
exercises_060526_2.pdf · p. 4 · Exercise 8
Working · 1 min 1. append 1: (2, 3) → (2, 3, 1); (4, −1, 5) → (4, −1, 5, 1) (any nonzero multiple is equivalent) 2. back: divide by the last coordinate, drop it. 3. They turn translation + rotation + projection into single matrix multiplications,  so transform chains compose by multiplying matrices.

Variant 9 · Back Projection

Variant exercise 9: pixel (400,300), K=[[800,0,320],[0,800,240],[0,0,1]]. Compute normalized coordinates, viewing ray, explain why depth is unrecoverable
exercises_060526_2.pdf · p. 4 · Exercise 9
Working · 2 min 1. xn = (400320)/800 = 0.1; yn = (300240)/800 = 0.075 2. ray dC = (0.1, 0.075, 1), i.e. all points Z·dC, Z > 0 3. one image measures 2 numbers (u, v) for 3 unknowns — the depth dimension is lost  in the Z-division; need stereo/depth sensor/size prior.

Variant 10 · Camera Calibration Interpretation

Variant exercise 10: calibrated K=[[1200,0,640],[0,1180,360],[0,0,1]]. Identify intrinsics, estimate image resolution, explain fx≠fy, discuss calibration errors
exercises_060526_2.pdf · p. 5 · Exercise 10
Working · 2 min 1. fx = 1200, fy = 1180, (u0, v0) = (640, 360), skew 0 2. principal point ≈ image center → resolution ≈ 2·(640, 360) = 1280 × 720 3. fx ≠ fy: non-square pixels or estimation noise in calibration 4. error sources: corner-detection noise, poor pose variety in calibration images,  unmodelled lens distortion, over/under-fitting the distortion model.

Variant 11 · Radial Distortion

Variant exercise 11: a camera suffers from barrel distortion. Describe how straight lines appear, barrel vs pincushion, sketch distorted grids, explain why correction matters
exercises_060526_2.pdf · p. 5 · Exercise 11
Working · 2 min (concept answer + sketch below) 1. Barrel: straight lines bow outward, away from the image center (worst at the edges). 2. Barrel: magnification falls with radius (wide-angle lenses); pincushion: magnification grows with radius (telephoto) — lines bow inward. 3. sketch: grids below. 4. Uncorrected distortion breaks the pinhole model — projections,  measurements and triangulation all assume straight rays → correct before calculating.
barrel — bulges outward pincushion — pinched inward
The requested sketch (task 3): a square grid under each distortion type. Center lines stay straight; curvature grows with distance from the principal point.

Variant 12 · Coordinate Transformation Interpretation

Variant exercise 12: a robot moves forward 2 m observing a static object. How do world, camera, and pixel coordinates change? Moving robot vs moving object
exercises_060526_2.pdf · p. 5 · Exercise 12
Working · 2 min (concept answer) 1. World coordinates of the static object: unchanged — the world frame is fixed. 2. Camera coordinates: depth ZC decreases by 2 m (object approaches along the axis). 3. Pixels: features move outward from the center and the object grows (1/ZC shrank). 4. Only relative pose matters: robot +2 m forward ≡ object 2 m closer — the  projection cannot distinguish them.

Variant 13 · Multi-Step Challenge

Variant exercise 13: PW=(3,2,6), R=[[0,−1,0],[1,0,0],[0,0,1]], t=(1,0,0), K=[[1000,0,640],[0,1000,360],[0,0,1]]. Compute camera, image, pixel coordinates; explain each transformation; draw the visualizationVariant exercise 13 continuation: t and K definitions
exercises_060526_2.pdf · pp. 5–6 · Exercise 13
Working · 4 min 1. R PW = 0−10100001·(3,2,6) = (−2, 3, 6); + t(1,0,0) → PC = (−1, 3, 6) 2. (xn, yn) = (−1/6, 3/6) = (−0.1667, 0.5) 3. u = 1000·(−1/6) + 640 = −166.67+640 → 473.33; v = 1000·0.5 + 360 → 860 p ≈ (473.3, 860) 4. geometrically: quarter-turn about ẑ re-labels x/y axes, t shifts along camera x̂,  division by 6 projects, K scales+shifts into the pixel array. 5. drawing: pipeline diagram of Lesson 5.1 with these numbers on the arrows. ✓ XC < 0 → left of center: u < 640 ✓; large yn = 0.5 → far below center: v = 860 ✓
Calculator corner: MatA = R, MatB = PW; MatA×MatB EXE; add t by hand. Then 1000×(−1)÷6+640 EXE → 473.33. Keep the fraction −1/6 (press FORMAT for exact) until the last multiplication to avoid rounding drift.
Module 6

Ceiling-marker & landmark localization

The course's own localization setup: a robot looks straight up at markers on the ceiling and works out where it is. It is the camera pipeline of Module 5 collapsed to one delicious special case — a single scale factor s = f/h — plus one orientation formula. Five exercises, one of them worth 20 points (Ex 24). This is the topic the formula sheet was visibly written around.

6.1 · The ceiling-marker geometry — one scale factor does everything

🔴 Exam-core

Dedicated formula-sheet region plus the page-2 relative-orientation formula; Ex 24 (20 points), 25, 26, 27 all compute with it.

What the exam asks: “Camera looks up at a ceiling marker at height h, focal length f — how many pixels does a displacement of X meters cause?” and “estimate the robot pose from the observed marker.”

Why this setup is a special case: the camera points straight up, the ceiling is flat, so every marker point has the same depth ZC = h. The perspective division stops being point-dependent and the whole pipeline becomes a single linear scale:

s = fh [pixels per meter]  Δu = s·ΔX = fhΔX  ΔX = hfΔu

Read s like a DPI setting: at f = 800 px and h = 4 m, the world is imaged at 200 pixels per meter. Everything in this module is multiplying or dividing by s — the only care needed is direction (world→pixels: multiply by s; pixels→world: divide).

Two consequences the sheet spells out:

  • Distance doubles → scale halves: s′ = f/(2h) = s/2. Same 1/Z law as Camera 4, now in scale form.
  • Heading from marker orientation: θr = θm − θi — the robot's heading is the marker's known world orientation minus the orientation it appears with in the image. If the marker looks rotated by θi in your camera, it is really you who is rotated the other way.
Formula sheet region: ceiling-marker projection — s=f/h, Δu=sΔX=(f/h)ΔX, ΔX=(h/f)Δu, if distance doubles s′=f/2h=s/2
on your sheet Formula sheet p. 1, “Ceiling-Marker Projection” — all four formulas printed.
Formula sheet page 2: relative orientation θr = θm − θi
on your sheet · page 2 The relative-orientation formula hides at the top of page 2 — easy to miss under exam stress. It pairs with Ex 26(b).

Exercise 24 · Camera-Based Robot Localization (20 points)

Exercise 24: robot on flat floor looks upward at ceiling marker with known world coordinates (xm,ym) and orientation θm, observed at (xi,yi) with orientation θi; f=800 pixels, h=4 m; robot pose (2,1,30°), marker at (5,5). (a) why are ceiling markers advantageousExercise 24 continuation: (b) compute image displacement for 1 m real displacement using image scale f/h (c) robot moves 0.5 m closer, how many pixels does the marker shift (d) why are two rotationally symmetric markers required
autonomous_robotics_exercises_only.pdf · pp. 11–12 · Exercise 24
Exam working · ≈4 min (a) Fixed, rarely occluded (people/furniture don't block the ceiling), easy to detect, unlikely to be moved accidentally. (b) s = f/h = 800/4 = 200 px/m → 1 m ↦ Δu = 200 pixels (c) Δu = s·ΔX = 200·0.5 → 100 pixels (d) A rotationally symmetric marker fixes position but not orientation (it looks the  same from any heading). Two markers define a direction between them, which  disambiguates the robot's heading → unique pose.
Breakdown.
  1. (b) and (c) are the sheet's s = f/h twice — with 10 of the 20 points on them. Write the formula, plug, done. Note (c) says the robot moves “0.5 m closer” horizontally toward the point under the marker: the marker's image shifts by s·0.5. (The height h does not change — the robot drives on the floor.)
  2. (d) is a degrees-of-freedom count: pose has 3 unknowns (x, y, θ); one symmetric marker measures 2 (your offset from it). The missing one is exactly the heading — hence the second marker (or an asymmetric marker, which is why real fiducials like ArUco are asymmetric).
  3. The given robot pose (2, 1, 30°) and marker (5, 5) are scene dressing for (a)–(d) — no subpart consumes them. Don't invent a calculation the question didn't ask for.
Deeper take. Source: official Solution 24 agrees. This scenario (TH Deggendorf's ceiling-marker localization) is the course's running example of an absolute position reference — the external sensor that Ex 18(c) said dead reckoning needs. Module 8's filters are how you'd fuse it with odometry.

Exercise 25 · Camera Projection with Ceiling Marker

Exercise 25: ceiling marker 3 m above the camera, focal length 600 pixels. (a) compute the projection scaleExercise 25 continuation: (b) point 0.4 m right of marker center — where in the image (c) if ceiling height doubles, what happens to the scale
autonomous_robotics_exercises_only.pdf · pp. 12–13 · Exercise 25
Exam working · ≈2 min (a) s = f/h = 600/3 → s = 200 px/m (b) Δu = s·ΔX = 200·0.4 = 80 px right of the marker's image center (c) h → 2h: s′ = f/2h = s/2 → scale halves (100 px/m); marker appears half as large
Breakdown. Pure sheet-reading — all three formulas are printed, including (c) verbatim (“If distance doubles: s′ = s/2”). Free 100% if you know where to look; that is why the formula-sheet geography drill exists.

Exercise 26 · Localization Geometry

Exercise 26: robot detects a marker directly above it at known coordinates (4,2); image shows robot displaced 1 m west of marker. (a) estimate robot position (b) robot measures marker orientation 20° while true orientation is 45° — estimate robot heading
autonomous_robotics_exercises_only.pdf · p. 13 · Exercise 26
Exam working · ≈2 min (a) marker at (4, 2); robot 1 m west of it; west = −x:  (4 − 1, 2) → robot at (3, 2) (b) θr = θm − θi = 45°20° → θr = 25°
Breakdown. (a) is a compass-direction translation: west = negative x (north = +y in the course's map convention). (b) is the page-2 formula: the marker's true orientation is 45°, but the camera sees only 20° of it — the missing 25° is the robot's own rotation. Sanity: if the robot had heading 0°, it would measure the full 45°.

Exercise 27 · Localization Accuracy

Exercise 27: image measurement uncertainty ±10 pixels, projection scale 200 pixels per meter. (a) estimate uncertainty in metersExercise 27 continuation: (b) would increasing camera resolution improve localization accuracy
autonomous_robotics_exercises_only.pdf · pp. 13–14 · Exercise 27
Exam working · ≈2 min (a) ΔX = Δu/s = 10/200 → ±0.05 m = ±5 cm (b) Yes — more pixels per meter (larger s) → the same ±10 px is fewer meters.  But real accuracy also depends on calibration, lens distortion, lighting, detection quality  resolution is necessary, not sufficient.
Breakdown. Error propagation through a linear map is just the same map: pixels of uncertainty divide by s exactly like pixels of displacement. The “but” in (b) earns the second half of the marks — name at least two non-resolution error sources.

Exercise 28 · Landmark-Based Localization

Exercise 28: robot measures range and bearing to uniquely identifiable landmarks on a known map. (a) why is one landmark insufficient (b) why do two or more landmarks help (c) sketch robot, two landmarks, ranges and bearings (d) which localization algorithm is appropriate
autonomous_robotics_exercises_only.pdf · p. 14 · Exercise 28
Exam working · ≈3 min + sketch (a) One range fixes only a circle around the landmark; even with bearing, noise and  the unknown heading leave the pose ambiguous. (b) Each landmark adds independent geometric constraints — the intersection of the constraint sets pins the pose down and averages out noise. (c) sketch below — robot pose, two landmarks, range lines r1, r2, bearings β1, β2. (d) EKF if a good initial estimate exists (uncertainty ≈ Gaussian, single mode); particle filter for global localization (can hold multiple pose hypotheses).
robotheading L₁ L₂ r₁ r₂ β₁β₂
Ex 28(c): the requested sketch. Ranges r (dashed blue) are distances to each landmark; bearings β (amber) are angles measured from the robot's heading to each landmark direction.
Breakdown. The geometry vocabulary matters: range constrains you to a circle, bearing to a ray relative to your unknown heading. Two identified landmarks over-determine the 3-DOF pose, which is what lets a filter both solve it and estimate its confidence. In (d), naming both filters with their applicability conditions is what full marks look like — the official solution does exactly that.
Module 7

Triangulation, SfM, optical flow & event cameras

Module 5 ended with “a pixel is a ray, not a point.” This module is the vision toolkit that gets 3D back: intersect rays (triangulation), do it from a moving camera (SfM), track motion between frames (optical flow), and a hardware twist (event cameras). The 130526 sheet is 17 mostly short exercises — three quick calculations, the rest precise definitions. None of its formulas are on your sheet. No official solutions were supplied for this sheet; all answers below are independently written and the numeric ones machine-checked.

7.1 · Triangulation — intersecting rays to recover depth

🟠 Exam-practical

Seven of the sheet's 17 exercises; slide deck 6 (13.05.) devotes its first half to it.

What the exam asks: “Explain triangulation / why two views / what does the SVD solve?” plus small computations (homogeneous → Euclidean, reprojection error).

One camera gives you a ray per pixel (Camera 8). A second camera, displaced by a known baseline, gives a second ray to the same physical point — and two non-parallel lines meet in (at most) one point. Triangulation = compute that intersection. Because measurements are noisy the rays never exactly meet, so in practice you solve a least-squares problem: stack the constraints from both views into A X̃ = 0 and take the best non-trivial solution via SVD (the right-singular vector of the smallest singular value — the direction A squashes closest to zero). Quality is then measured in the image, not in 3D: the reprojection error ∥p − p̂∥ asks “if the 3D estimate were true, how far off would its predicted pixel be?”

Vision 1 · Understanding Triangulation

Vision exercise 1: two calibrated cameras observe the same 3D point. (a) explain triangulation (b) why at least two views (c) what geometric object does each observation define
exercises_130526 copy.pdf · p. 1 · Exercise 1
Working · 2 min (concept answer) a) Recover a 3D point as the intersection of the viewing rays from ≥2 known camera poses. b) One view leaves depth free (pixel ↦ ray) — the second view supplies the constraint that picks one point on the ray. c) Each observation defines a ray (line) in 3D from the camera center through the pixel.

Vision 2 · Projection Matrix

Vision exercise 2: projection equation p̃ = P·X̃. (a) what does P represent (b) size of P (c) difference between p̃ and p
exercises_130526 copy.pdf · p. 1 · Exercise 2
Working · 2 min a) P = K[R|t]the full camera map: intrinsics and extrinsics fused into one matrix (sheet: “Full projection model”). b) K is 3×3, [R|t] is 3×4 → P is 3×4. c) p̃ is homogeneous (3-vector, scale-free, third entry ∝ depth); p is Euclidean — divide p̃ by its third entry.

Vision 3 · Homogeneous Coordinates

Vision exercise 3: p̃=(400,200,2), compute Euclidean coordinates
exercises_130526 copy.pdf · p. 2 · Exercise 3
Working · <1 min divide by the third coordinate: (400/2, 200/2) → p = (200, 100)

Vision 4 · Linear Triangulation

Vision exercise 4: explain why triangulation leads to a system A·X̃=0
exercises_130526 copy.pdf · p. 2 · Exercise 4
Working · 2 min (concept answer) Each view gives λp̃ = P X̃ — p̃ and P X̃ must be parallel (same ray, unknown scale λ). Eliminating λ (cross product p̃ × P X̃ = 0) yields 2 independent linear, homogeneous equations in X̃ per view; stacking ≥2 views gives A X̃ = 0 — homogeneous because X̃'s overall scale is arbitrary.

Vision 5 · SVD Solution

Vision exercise 5: A=UΣVᵀ. (a) which vector gives the solution (b) why
exercises_130526 copy.pdf · p. 2 · Exercise 5
Working · 2 min a) The last column of V — the right-singular vector of the smallest singular value. b) X̃ = 0 is excluded (trivial); among ∥X̃∥ = 1 the minimizer of ∥A X̃∥ is the  direction A stretches least — σmin's singular vector; with noise A X̃ = 0 holds only approximately, so we minimize instead of solving exactly.

Vision 6 · Reprojection Error

Vision exercise 6: observed p=(320,200), predicted p̂=(312,198). Compute the L2 norm of p−p̂
exercises_130526 copy.pdf · p. 2 · Exercise 6
Working · 1 min p − p̂ = (320312, 200198) = (8, 2) ∥p−p̂∥2 = √(8² + 2²) = √68 = 2√17 ≈ 8.25 px
Calculator corner: √(8²+2²) EXE → 2√17; FORMAT → 8.2462. Exact form first, decimal second.

Vision 7 · Effect of Baseline

Vision exercise 7: stereo system A baseline 5 cm, system B baseline 50 cm. (a) which gives better depth accuracy (b) disadvantage of large baselineVision exercise 7 continuation with baseline visualization
exercises_130526 copy.pdf · pp. 2–3 · Exercise 7
Working · 2 min a) System B (50 cm) — a wider baseline makes the two rays intersect at a larger angle,  so the same pixel noise moves the intersection less in depth. b) Less view overlap and harder feature matching (the scene looks more different  between views; more occlusion; nearby objects may leave one view entirely).
Remark. Same 1/Z intuition as always: depth error grows with Z²/(f·b) — baseline b sits in the denominator. Accuracy vs matchability is the design trade-off every stereo rig makes.

7.2 · Structure from Motion — stereo with one moving camera

🟠 Exam-practical

Sheet Ex 8–10 and 16; the pipeline-ordering question is a classic quick-marks format.

SfM answers: what if the “two cameras” are one camera at two (or many) times? Then the camera poses are unknown too, and you must estimate structure (3D points) and motion (camera poses) jointly, from feature correspondences alone. The pipeline is fixed vocabulary — learn it as an ordered list, and know that bundle adjustment is the final polish: a nonlinear least-squares pass minimizing the total reprojection error over all poses and points simultaneously.

Vision 8 · Structure from Motion

Vision exercise 8: explain the difference between stereo vision and Structure from Motion
exercises_130526 copy.pdf · p. 3 · Exercise 8
Working · 2 min (concept answer) Stereo: two cameras, fixed and calibrated relative pose (known baseline) — depth from one synchronized pair. SfM: one moving camera, unknown poses — structure and camera motion estimated together from many views; scale is unobservable without extra information.

Vision 9 · SfM Pipeline

Vision exercise 9: order the steps triangulation, feature matching, bundle adjustment, feature detection, camera pose estimation
exercises_130526 copy.pdf · p. 3 · Exercise 9
Working · 1 min 1. feature detection → 2. feature matching → 3. camera pose estimation → 4. triangulation → 5. bundle adjustment
Remark. Logic beats memory: you can't match features before finding them; matches are what pose estimation consumes; triangulation needs poses; bundle adjustment refines everything, so it must be last.

Vision 10 · Bundle Adjustment

Vision exercise 10: what is optimized during bundle adjustment?
exercises_130526 copy.pdf · p. 3 · Exercise 10
Working · 1 min All camera poses and all 3D points jointly, minimizing the sum of squared reprojection errors Σ ∥pij − proj(Pi, Xj)∥² over every observation.

Vision 16 · Conceptual Matching

Vision exercise 16: match triangulation, optical flow, SfM, bundle adjustment to their goals
exercises_130526 copy.pdf · p. 5 · Exercise 16
Working · 1 min Triangulation → recover 3D points Optical flow → estimate apparent motion SfM → jointly estimate structure and motion Bundle adjustment → refine reconstruction

7.3 · Optical flow — one equation, two unknowns

🟠 Exam-practical

Sheet Ex 11–13 include the sheet's only flow computation; the aperture problem is a favorite concept question.

Optical flow estimates the apparent pixel motion (u, v) between consecutive frames. Its foundation is brightness constancy — a moving point keeps its intensity — whose first-order Taylor expansion gives the flow equation:

Ixu + Iyv + It = 0

not on sheet — memorize Ix, Iy are the image's spatial intensity gradients, It the temporal change (all measurable from the frames); u, v the unknown flow. One equation, two unknowns — underdetermined at a single pixel, which is the aperture problem: only the flow component along the gradient (perpendicular to an edge) is observable.

Vision 11 · Optical Flow

Vision exercise 11: optical flow equation Ix·u+Iy·v+It=0 with Ix=2, Iy=−1, It=−3, u=1. Compute vVision exercise 11 continuation with apparent pixel motion visualization
exercises_130526 copy.pdf · pp. 3–4 · Exercise 11
Working · 1 min Ixu + Iyv + It = 0: 2·1 + (−1)v + (−3) = 0 −v − 1 = 0 → v = −1 ✓ substitute back: 2 + 1 − 3 = 0

Vision 12 · Brightness Constancy

Vision exercise 12: what assumption is made in optical flow estimation?
exercises_130526 copy.pdf · p. 4 · Exercise 12
Working · 1 min Brightness constancy: a scene point's image intensity stays constant as it moves I(x+u, y+v, t+1) = I(x, y, t) (plus, implicitly, small motion for the linearization). Fails under lighting change, specular reflections, occlusion.

Vision 13 · Aperture Problem

Vision exercise 13: why is motion along edges ambiguous?
exercises_130526 copy.pdf · p. 4 · Exercise 13
Working · 1 min Along an edge the intensity doesn't change, so motion parallel to the edge produces no image change — only the component along the gradient is observable. One flow equation, two unknowns: through a small “aperture” infinitely many (u, v) fit the data.

7.4 · Event cameras — pixels that report changes

🟡 Context

Two short sheet exercises; slides mention them as an outlook topic. Definitions suffice.

A conventional camera reads out full frames at a fixed rate. An event camera's pixels fire independently and asynchronously whenever their local log-brightness changes past a threshold — think interrupt-driven I/O instead of polling. Output: a sparse stream of events instead of images. Payoff: microsecond latency, huge dynamic range, no motion blur; cost: no absolute intensity, algorithms must be rewritten for event streams.

Vision 14 · Event Cameras

Vision exercise 14: complete the table comparing traditional camera and event camera: ? vs asynchronous events, full frames vs ?
exercises_130526 copy.pdf · p. 4 · Exercise 14
Working · 1 min Traditional: synchronous, fixed frame rate · outputs full frames Event camera: asynchronous events · outputs sparse per-pixel brightness-change events

Vision 15 · Event Representation

Vision exercise 15: an event is (x, y, t, p) — explain each variable
exercises_130526 copy.pdf · p. 5 · Exercise 15
Working · 1 min (x, y): pixel location · t: timestamp of the change (µs resolution) · p: polarity — brightness increased (+1) or decreased (−1)

Vision 17 · Reflection Question

Vision exercise 17: why is computer vision fundamentally an inference problem?
exercises_130526 copy.pdf · p. 5 · Exercise 17
Working · 2 min (concept answer) Projection destroys information (3D → 2D: depth lost, Camera 15), so an image is consistent with infinitely many world states. Vision must infer the most plausible state from incomplete, noisy data plus prior assumptions (rigidity, brightness constancy, smoothness) — estimation under uncertainty, not deterministic decoding. The same logic motivates the probabilistic filters of Module 8.
Module 8

Bayes → Kalman → EKF → SLAM

Modules 1–2 proved motion estimates drift; Modules 5–6 gave you sensors. This module is the fusion machinery: represent where the robot might be as a probability distribution (“belief”) and alternate two moves — predict with the motion model, correct with the sensor model. Nine exercises, from a 15-point Bayes calculation to concept questions the sheet gives zero help with. Nothing in this module is on your formula sheet — it is the biggest memorization block of the course.

8.1 · The Bayes filter — predict, then correct

🔴 Exam-core

Ex 1 opens the collection with it; Ex 10 (15 points) computes it; Ex 23, 28, 29 all lean on its vocabulary. Absent from the formula sheet.

What the exam asks: “Describe the two steps of the Bayes filter” / “compute P(A|z) with Bayes' rule” / “explain these three densities.”

The state is now a distribution, not a number: bel(xt) = the probability of every candidate state given everything seen so far. Two functions you already met keep it updated — but now they push distributions instead of points:

  • Predict (motion model p(xt | ut, xt−1)): push the belief through the motion model. Like Ex 16's error growth, this spreads the belief — motion adds uncertainty.
    bel(xt) = ∫ p(xt | ut, xt−1) bel(xt−1) dxt−1
  • Correct (sensor model p(zt | xt)): reweight each candidate state by how well it explains the measurement, then renormalize. This sharpens the belief.
    bel(xt) = η p(zt | xt) bel(xt)

not on sheet — memorize And the engine inside the correction step is plain Bayes' rule:

P(A | z) = P(z | A) P(A)P(z), P(z) = Σi P(z | Ai) P(Ai)

Dev translation: prior = your cached estimate; likelihood = how compatible the new data is with each hypothesis; normalization = making the weights sum to 1 again so they stay probabilities.

Exercise 1 · Bayes Filter and EKF

Exercise 1: (a) describe the two main steps of the Bayes filter (b) describe the meaning of p(xt|ut,xt−1), p(zt|xt), bel(xt)
autonomous_robotics_exercises_only.pdf · p. 1 · Exercise 1
Exam working · ≈3 min (concept answer) (a) Prediction: propagate the belief with the motion model and control —  “where could the robot be after this command?” (uncertainty grows). Update/correction: reweight the predicted belief by the measurement likelihood,  normalize — “which predicted states are consistent with what the sensor saw?” (uncertainty shrinks). (b) p(xt | ut, xt−1): motion/transition model — probability of reaching xt from xt−1 under control ut. p(zt | xt): sensor/measurement model — how likely measurement zt is if the state is xt. bel(xt): belief — posterior over states given all controls and measurements so far.
Breakdown. Write each answer as name + what it maps + which question it answers. The two-step description earns full marks when it mentions both the mechanism (motion model / sensor model) and the effect on uncertainty (grow / shrink). Source: official Solution 1 agrees.

Exercise 10 · Bayesian Localization (15 points)

Exercise 10: robot in location A or B, prior P(A)=0.7, P(B)=0.3, sensor model P(z|A)=0.9, P(z|B)=0.2. (a) compute P(A|z) and P(B|z) with Bayes ruleExercise 10 continuation: (b) explain why normalization is required in Bayesian filtering
autonomous_robotics_exercises_only.pdf · pp. 6–7 · Exercise 10
Exam working · ≈4 min P(A)=0.7, P(B)=0.3, P(z|A)=0.9, P(z|B)=0.2 P(z) = P(z|A)P(A) + P(z|B)P(B) = 0.9·0.7 + 0.2·0.3 = 0.63 + 0.06 = 0.69 P(A|z) = P(z|A)P(A)/P(z) = 0.63/0.69 → P(A|z) ≈ 0.913 P(B|z) = 0.06/0.69 → P(B|z) ≈ 0.087 ✓ 0.913 + 0.087 = 1; sensor favored A (0.9 vs 0.2) so belief in A rose above the 0.7 prior — direction correct (b) after multiplying prior × likelihood the numbers (0.63, 0.06) are only proportional  to probabilities; dividing by P(z) makes them sum to 1 so the posterior is a valid distribution.
Breakdown.
  1. Layout matters: compute the normalizer P(z) once, as its own labeled line — both posteriors divide by it, and the line itself carries marks.
  2. The two sanity checks cost nothing: posteriors sum to 1, and the belief moved toward the hypothesis the sensor favored.
  3. Keep fractions until the end: 0.63/0.69 = 63/69 = 21/23 ≈ 0.913. Rounding early is how 0.91 becomes 0.9 becomes lost marks.
Calculator corner (fx-991CW)
0.9×0.7+0.2×0.3 EXE → 0.69, store in A (VARIABLE→A→Store). Then 0.63÷A EXE → 0.913…, and 0.06÷A EXE → 0.0869…. FORMAT shows 21/23 exact.
Deeper take. This two-cell world is the Bayes filter correction step, executed once by hand. Ex 29's “multi-modal belief” is this with more cells and less decisive likelihoods; the Kalman filter below is this with a continuous Gaussian instead of two cells. Source: official Solution 10 agrees.

8.2 · Kalman filter and EKF — Gaussians make it tractable

🔴 Exam-core

Ex 11 (10 points) asks for exactly these explanations; Ex 2 is a full EKF modeling exercise; Ex 28/30 ask when EKF is appropriate.

What the exam asks: “Purpose of prediction/update step? Why Gaussian?” and modeling: “identify state, controls, measurements, transition function; which filter fits?”

The Bayes filter's integral over all states is intractable in general. The Kalman filter is the special case with an exact, cheap answer: if the belief is Gaussian, the models linear, the noise Gaussian — then predict and correct keep it Gaussian, and only the mean μ and covariance Σ need storing (a struct of two fields instead of a whole distribution):

predict: μ̄t = Atμt−1 + Btut, Σ̄t = AtΣt−1AtT + Rt
correct: Kt = Σ̄tCtT(CtΣ̄tCtT + Qt)−1, μt = μ̄t + Kt(zt − Ctμ̄t), Σt = (I − KtCt)Σ̄t

not on sheet — memorize the roles, reproduce the shapes Read them as software: the innovation zt − Ctμ̄t is the diff between what the sensor said and what you expected it to say; the Kalman gain Kt is a learned blend ratio — trust the measurement more when your prediction is uncertain (Σ̄ big) and less when the sensor is noisy (Q big). Rt is process noise (motion sloppiness), Qt measurement noise.

The EKF (extended KF) handles nonlinear f and h — rotations, camera projections — by linearizing at the current estimate: At = ∂f/∂x, Ct = ∂h/∂x (Jacobians — the multivariable chain rule you used in Ex 6). Same two-step loop, matrices recomputed each step.

Exercise 11 · Kalman Filter Concepts (10 points)

Exercise 11: (a) purpose of the prediction step (b) purpose of the update step (c) why does the Kalman filter assume Gaussian uncertainty
autonomous_robotics_exercises_only.pdf · p. 7 · Exercise 11
Exam working · ≈3 min (concept answer) (a) Prediction: use the motion model + control to estimate the next state before the measurement arrives; propagates mean and covariance; uncertainty grows (process noise adds). (b) Update: correct the prediction with the measurement — compare expected vs actual  (innovation), blend by the Kalman gain; uncertainty shrinks. (c) A Gaussian is fully described by mean and covariance, and stays Gaussian under linear models with Gaussian noise → closed-form, efficient updates of just (μ, Σ).
Breakdown. The grading skeleton for (a)/(b) is: which model is used + what it produces + what happens to uncertainty. For (c), the two halves are “compact representation” and “closed under the filter's operations” — give both. Source: official Solution 11 agrees.

Exercise 2 · Track My Tethraedron

Exercise 2: rigid body of 4 distinguishable points qi observed by a pinhole camera at known pose T; body moves with constant translational and rotational velocity with Gaussian noise nv, nω; state equations for vt, ωt, pt, Rt givenExercise 2 continuation: functions r2a and a2r convert between axis-angle and rotation matrix. Question 1: model the system — state, controls, measurements, transition function
autonomous_robotics_exercises_only.pdf · pp. 1–2 · Exercise 2
Exam working · ≈6 min State — everything needed to predict the future: position, orientation (axis-angle to stay a vector), both velocities: xt = (pt, at, vt, ωt) ∈ ℝ¹² with at = r2a(Rt) Controls — nothing commands the body: ut = ∅ (it drifts under its own velocities) Measurements — each point qi projects to a pixel pair: zi ∈ ℝ², four points: zt = (z1, z2, z3, z4) ∈ ℝ⁸ Transition — copy the given dynamics, noise enters through the velocities:  vt = vt−1 + nv, ωt = ωt−1 + nω, pt = pt−1 + vtΔT,  at = r2a( a2r(at−1)·a2r(ωtΔT) ) → xt = f(xt−1) + nt, nt = (0, 0, nv, nω) Observation — object point → world → camera → pixels (Module 5 pipeline): i = proj( K T−1 Xt qi ), Xt = [a2r(at) | pt; 0 1] Filter choice: rotations + camera projection are nonlinear → EKF,  Jacobians At = ∂f/∂x ∈ ℝ12×12, Ct = ∂h/∂x ∈ ℝ8×12 (stacked) or 2×12 per point.
Breakdown.
  1. Modeling questions have a fixed template — state, control, measurement, transition, observation — and this exercise hands you the transition equations; your work is choosing containers and dimensions. Count dimensions out loud (3+3+3+3 = 12; 4 points × 2 pixels = 8): stated dimensions are what graders scan for.
  2. Orientation is stored as axis-angle at (a 3-vector) rather than the 9-entry matrix Rt so the state stays a vector the EKF can add noise to; a2r/r2a shuttle between forms.
  3. The observation function is literally Module 5's pipeline with T−1 (camera pose inverted — sheet formula!) and the object's own pose Xt composed in front.
  4. A second valid model (official solution notes it): treat velocities as controls ut = (vt, ωt) with a 6-dim state (p, a) — noise then reads as control noise. Say which you chose.
Deeper take. This is the course's capstone modeling exercise — it stitches Module 1 (state), Module 4 (rotations, T−1), Module 5 (projection) and this module (EKF) into one answer. If you can reproduce this table cold, you have functionally covered four modules. Source: official Solution 2 agrees, including both modeling variants.

8.3 · SLAM — localize and map at the same time

🔴 Exam-core

Ex 12 (15 points) asks all three classic SLAM questions verbatim.

What the exam asks: “Why chicken-and-egg? Write the augmented state. What is data association?”

Localization assumed a known map (Ex 28); mapping assumes a known pose. SLAM (Simultaneous Localization And Mapping) drops both assumptions and solves the circular dependency by estimating pose and map jointly: in EKF-SLAM the landmark coordinates simply become extra state variables, and the same predict/correct loop runs on the enlarged state.

Exercise 12 · SLAM (15 points)

Exercise 12 EKF-SLAM: (a) why is SLAM the chicken-and-egg problem (b) write the augmented state vector for robot pose (x,y,θ) and two landmarks (c) explain the data association problem
autonomous_robotics_exercises_only.pdf · p. 7 · Exercise 12
Exam working · ≈3 min (a) Localization needs a map; mapping needs the pose. A wrong pose inserts landmarks  at wrong places; a wrong map corrupts the pose estimate → must estimate both together. (b) pose + both landmark positions in one vector: yt = ( x, y, θ, m1x, m1y, m2x, m2y )T ∈ ℝ⁷ (c) Deciding which observed measurement corresponds to which map landmark. Hard with  similar-looking landmarks, noise, partial views; a wrong association updates the wrong  landmark and can corrupt the whole filter.
Breakdown. For (b), the only trap is forgetting the pose or a coordinate — count: 3 (pose) + 2 per landmark = 7, state the dimension. For (c), the money sentence is the consequence: mis-association is catastrophic, not merely noisy, because the EKF commits to it. Source: official Solution 12 agrees.
Deeper take. Note what Ex 28(d) established: EKF-SLAM works when uncertainty is unimodal; ambiguous environments (Ex 29) break the Gaussian assumption and demand multi-hypothesis approaches (particle filters). Those three exercises form one story the exam can quiz from any side.

8.4 · Localization scenarios — applying the theory

🟠 Exam-practical

Ex 29–32 are scenario questions; 29 and 30 have official solutions, 31–32 are the course's reasoning-heavy finale.

Exercise 29 · Ambiguous Environments

Exercise 29: laser-equipped robot in a building where two rooms are identical. (a) why is localization difficult (b) what type of ambiguity appears in the belief (c) two practical ways to reduce it (d) would unique landmarks help
autonomous_robotics_exercises_only.pdf · p. 14 · Exercise 29
Exam working · ≈3 min (concept answer) (a) Identical rooms produce identical laser scans — the measurement cannot distinguish them. (b) The belief becomes multi-modal: several separate poses are simultaneously plausible. (c) Move to where scans differ (corridor, doorway); add uniquely identifiable landmarks  (also valid: integrate odometry over time; add another sensor modality). (d) Yes — a unique landmark makes the likelihoods differ, collapsing the wrong mode.
Breakdown. The keyword being tested is multi-modal — and its implication: an EKF (one Gaussian = one mode) cannot represent this belief; a particle filter can. Say that and (b) is airtight.

Exercise 30 · Underwater Robot Localization

Exercise 30: underwater robot in 3D, orientation known from compass, acoustic beacons at known positions send identified, time-stamped signals; speed of sound known. (a) what quantity from arrival time (b) how do several beacons give position (c) EKF state variables (d) why is orientation not in the state
autonomous_robotics_exercises_only.pdf · p. 15 · Exercise 30
Exam working · ≈3 min (a) travel time → d = vsound·Δtdistance to the beacon (b) each distance puts the robot on a sphere around that beacon; intersecting several spheres pins down the 3D position (trilateration). (c) x = (x, y, z); add (ẋ, ẏ, ż) if velocity should be estimated too. (d) the compass already gives orientation exactly — the EKF only estimates unknowns.
Breakdown. The range-measurement geometry is Ex 28 lifted to 3D: circle → sphere. Part (d) states a design principle worth remembering for any modeling question: known quantities are inputs, not state. Source: official Solution 30 agrees.

Exercise 31 · Open-Loop Localization in Grid Environments no supplied solution — independently generated, verified by exhaustive belief-state search (previous build) and re-checked by hand for grid (a)

Exercise 31: robot in grid environments, unknown start cell, facing North. Commands: L turn left, R turn right, M move forward until obstacle. (a) find command sequences forcing a predictable final location (b) minimize M actions (c) state the final location (d) explain if impossibleFigure 1: six grid-style environments (a)-(f) for open-loop localization
autonomous_robotics_exercises_only.pdf · pp. 15–16 · Exercise 31 (Figure 1 included)

The idea: with no sensors at all, the robot can still localize by driving into walls on purpose — each M collapses many possible positions onto the same boundary cell. Track the set of possible cells (a belief with equal weights); a solution is a command program that shrinks the set to one cell for every start.

(a)
(b)
(c)
(d)
(e)
(f)
Exam working · answers per grid (rows 1–7 top→bottom, cols 1–6 left→right) (a) M L M L M — 3 M's → final cell (7, 1) M: everything collapses to row 1 (or the cell under the block); L,M: to column 1; L,M: to the SW corner (b) L M L M L M R M R M L M — 6 M's → (7, 1) (c) L L M L M L M L M L M R M L M — 7 M's → (7, 1) (d) L L M L M L M L M — 4 M's → (1, 3) (e) R M R M R M R M R M L M — 6 M's → (1, 6) (f) impossible — no open-loop L/R/M program ever collapses the belief to one cell:  its corridors keep at least two hypotheses at distinct trap endpoints under every program  (exhaustive search over all 176 reachable (belief set, heading) states found no singleton).
Breakdown.
  1. Method to show on paper: write the current set of possible cells, apply each command to every member simultaneously, and repeat. Walls are the information source: M is a projection that maps whole corridors onto their end cells.
  2. Work grid (a) once fully by hand (three lines, shown in the comment above) — it demonstrates the method; for the others state sequence, M-count, final cell.
  3. For (d)-style impossibility claims, the acceptable exam argument is exhibiting two start cells whose hypotheses never merge — you don't need the exhaustive search, just one stubborn pair.

Exercise 32 · Open-Loop Localization with Step Counting no supplied solution — independently generated, verified by exhaustive observation-history search (previous build)

Exercise 32: robot can now count the grid cells moved during each M action. (a) shortest sequences to determine the final location (b) how step counts reduce uncertainty (c) comparison with exercise 31 (d) example where different starts give different final positions but distinct step counts
autonomous_robotics_exercises_only.pdf · p. 16 · Exercise 32 (uses Figure 1 above)
Exam working · answers per grid (a) shortest sequences (final cell now may depend on the observed counts):  (a) M L M L M (3 M's) → (7,1) (b) L M L M L M R M (4) → (5,6) or (7,6)  (c) L L M R M R M (3) → (1,1), (1,3) or (6,3) (d) R M R M R M (3) → (7,1) or (7,5)  (e) R M L M L M (3) → (1,1) or (1,4) (f) M L M L M L M (4) → (1,6), (5,2), (5,6) or (7,4) (b) each M's count is a measurement: keep only hypotheses whose predicted distance  matches the observed one — the count partitions and prunes the belief set. (c) strictly easier: same physics, extra observations. Grid (f), impossible in Ex 31,  becomes solvable in 4 M's. The final cells need not coincide — knowing which cell you're in suffices. (d) grid (d), R M R M R M: start (1,1) observes counts [0, 6, 0] → ends (7,1);  start (1,3) observes [3, 6, 1] → ends (7,5). Different endpoints, but the count  histories differ, so the robot knows which one it reached.
Breakdown. The conceptual leap the exercise wants stated: in Ex 31, M was only an action; the step count upgrades it to action + measurement — a full Bayes-filter cycle (predict with M, correct with the count). Success is redefined accordingly: not “all starts converge to the same cell” but “the observation history identifies the final cell.” That reframing sentence is the answer to (b) and (c) in one.
Module 9

Planning & control — finding paths, following them

Two cheap-to-bank topics. Control has its own formula-sheet region (three one-liners); planning is one 10-point exercise about Dijkstra vs A* that the course clearly loves. As a developer you already know both: control is a feedback loop, A* is the graph search you have probably implemented.

9.1 · Open-loop vs closed-loop control

🔴 Exam-core

Formula-sheet region “Open-Loop and Closed-Loop Control”; the open-loop concept is assessed via Ex 31–32 and the labs' feed-forward functions.

What the exam asks: “Distinguish open-loop and closed-loop control; give the control laws.”

Three control laws, escalating in awareness:

  • Open-loop: u(t) = uplanned(t) — replay a precomputed schedule, never look at reality. A cron job. Drifts under disturbance (Lab P2 demonstrated it).
  • Closed-loop (policy): u(t) = π(x(t)) — the control is a function of the measured state. A request handler: input state, output action.
  • Linear feedback: u(t) = K(xref(t) − x(t)) — the workhorse special case: push proportionally to the error. Big error, big correction; the gain K sets how aggressively.
Formula sheet region: open-loop and closed-loop control — u(t)=u_planned(t), u(t)=π(x(t)), u(t)=K(x_ref(t)−x(t))
on your sheet Formula sheet p. 1 — all three laws printed. Attach the words yourself: planned / policy / error feedback.

Why feedback wins: errors get measured and cancelled instead of accumulating (Ex 18's drift is exactly what open-loop suffers). Cost: needs a sensor and can oscillate if K is too aggressive — the trade every thermostat and every PID controller makes.

9.2 · Graph search — Dijkstra and A*

🔴 Exam-core

Ex 13 (10 points) asks the comparison verbatim; slides give A* a worked trace. Not on the formula sheet.

What the exam asks: “Compare Dijkstra and A* (optimality, heuristic, efficiency). Why does a good heuristic matter?”

Discretize the world into a graph (grid cells, waypoints); planning = shortest path. Both algorithms grow a frontier from the start, always expanding the node with the smallest score f(n):

Dijkstra: f(n) = g(n)  A*: f(n) = g(n) + h(n)

not on sheet — memorize g(n) = cost from start to n (known, accumulated); h(n) = estimated cost from n to goal (the heuristic — e.g. straight-line distance). Vocabulary that earns marks:

  • Admissible: h never overestimates the true remaining cost → A* stays optimal. (Straight-line distance is admissible — you can't beat a straight line.)
  • Consistent: h obeys the triangle inequality along edges → nodes never need reopening.
  • h ≡ 0 turns A* into Dijkstra — Dijkstra is A* with a maximally uninformed heuristic.

Exercise 13 · Motion Planning (10 points)

Exercise 13: (a) compare Dijkstra's algorithm and A* — optimality, heuristic usage, computational efficiencyExercise 13 continuation: (b) why is a good heuristic important in A*
autonomous_robotics_exercises_only.pdf · pp. 7–8 · Exercise 13
Exam working · ≈4 min (concept answer) (a) Dijkstra: f(n) = g(n) · A*: f(n) = g(n) + h(n) Optimality: Dijkstra optimal for non-negative edge costs; A* optimal if h is admissible  (never overestimates). Heuristic: Dijkstra uses none (uninformed); A* uses h(n) to aim at the goal. Efficiency: A* usually expands far fewer nodes — the search is goal-directed;  with h ≡ 0, A* degenerates to Dijkstra. (b) A good heuristic reduces expanded nodes (more informed → more focused search)  while staying admissible to preserve optimality. Overestimate → may miss the best path;  too weak → behaves like Dijkstra and wastes computation.
Breakdown. Structure the comparison by the three named axes — the question literally lists your headings. The two formulas are the anchor; every claim hangs off them. For (b), the tension to articulate: informative (large h, close to true cost) vs admissible (h ≤ true cost) — the best heuristic is the largest one that never lies upward. Source: official Solution 13 agrees.
Deeper take. If asked for a trace: maintain an open list sorted by f; pop the smallest, expand neighbors, update g-values, repeat until the goal is popped. On a grid with obstacles, Dijkstra's expansion front is a circle; A*'s is an ellipse stretched toward the goal — that picture is worth a sentence in any efficiency answer.
Module 10

Decision making — FSM, reinforcement learning, ROS

The “think” layer of see–think–act, assessed as two 10-point definition exercises. For you this is home turf: FSMs are state machines, RL is an optimization loop, ROS is pub/sub middleware. The work is matching the course's exact vocabulary, not understanding.

10.1 · Finite-state machines for robot behavior

🔴 Exam-core

Ex 14 (10 points) demands a drawn FSM plus a trade-off; the delivery-robot example comes straight from the slides.

What the exam asks: “Draw a finite-state machine for this robot; give one advantage and one limitation of FSM control.”

Exactly the state machines you know: states = behaviors (discrete modes), transitions = events/conditions. Robot FSMs add one convention worth copying: a global interrupt-style transition (“battery low → Recharge from anywhere”) that would be an on* guard in code.

Exercise 14 · Finite State Machines and Decision Making (10 points)

Exercise 14: delivery robot with states Idle, Navigate, Deliver, Recharge. (a) draw a finite-state machine of possible transitions (b) one advantage and one limitation of FSM-based robot control
autonomous_robotics_exercises_only.pdf · p. 8 · Exercise 14
Exam working · ≈4 min (diagram below + 2 sentences) (a) transitions: Idle →(delivery request)→ Navigate →(arrived)→ Deliver →(done)→ Idle;  Idle/Navigate/Deliver →(battery low)→ Recharge →(battery full)→ Idle draw as graph, label every edge (b) Advantage: simple, interpretable, easy to implement and verify — each state is a clear  behavior, transitions are explicitly checkable. Limitation: scales poorly — states/transitions explode with task complexity, and FSMs handle uncertainty poorly (no notion of belief or probabilistic outcomes).
Idle Navigate Deliver Recharge delivery request arrived delivery completed . battery full battery low battery low battery low
Ex 14(a): the requested FSM. Solid edges = task flow; dashed red = the battery-low interrupt available from every active state; Recharge returns to Idle when full. Any diagram with these four states, labeled edges, and the recharge interrupts is full credit.
Breakdown. Grading an FSM drawing is mechanical: all four states present, every edge labeled with its trigger, and the battery-low interrupt not forgotten (the official solution routes it from Idle and Navigate at minimum — including Deliver is also accepted). For (b), give one advantage and one limitation, each with a “because” — a bare adjective earns half.

10.2 · Reinforcement learning and ROS — the vocabulary

🔴 Exam-core

Ex 15 (10 points) is a pure definition check; the slides close the course with both topics.

What the exam asks: “Explain state, action, reward, policy” and “explain node, topic, message, master.”

RL in one loop: an agent in state x picks action u via a policy, the environment returns a scalar reward and the next state; the objective is a policy maximizing cumulative reward. Note the connection to your sheet: the closed-loop control law u = π(x) printed there is exactly what RL calls a (deterministic) policy — RL is learning π from data instead of deriving it from a model.

ROS in one sentence: a robot's software as microservices — processes (nodes) exchanging typed payloads (messages) over named pub/sub channels (topics), with a discovery service (the ROS 1 master) so publishers and subscribers find each other; the data itself flows peer-to-peer.

Exercise 15 · Reinforcement Learning and ROS (10 points)

Exercise 15: (a) explain state, action, reward, policy in reinforcement learning (b) explain the roles of node, topic, message, master in ROS
autonomous_robotics_exercises_only.pdf · p. 8 · Exercise 15
Exam working · ≈4 min (concept answer) (a) RL: State — the agent's current situation (pose, sensor readings, task status). Action — a decision/control the agent chooses (move forward, turn, grasp). Reward — scalar feedback rating the action in that state; the agent maximizes the cumulative sum. Policy — the mapping from states to actions, u = π(x) (or stochastic π(u|x)); the thing RL learns. (b) ROS: Node — a running process doing one job (camera driver, planner, controller). Topic — a named channel nodes publish to / subscribe to. Message — the typed data structure sent over a topic (image, velocity command, pose). Master — the ROS 1 name service that lets nodes find each other; actual traffic is peer-to-peer.
Breakdown. Eight definitions, ~1.25 points each: one precise sentence plus one concrete example per term is the full-marks pattern. The differentiators graders look for: reward is scalar and the objective is cumulative (not greedy per-step); the master only brokers discovery — saying it relays all messages is the classic error. Source: official Solution 15 agrees.
Finish

Exam toolkit

The final pass: what must be in your head (because the sheet won't help), what must be automatic, and the traps this course's own exercises set.

Memorize — not on the sheet

  • 🔴 Differential drive: v = r(ωRL)/2, ω = r(ωR−ωL)/L, R = v/ω → Ex 8
  • 🔴 Bicycle model: θt+1 = θt + (v/L)tan(α)Δt (position rows use v cos θΔt, v sin θΔt) → Ex 19
  • 🔴 Constant acceleration: vt+1 = vt + aΔt; xt+1 = xt + vtΔt + ½aΔt² → Ex 16
  • 🔴 Bayes' rule + normalizer: P(A|z) = P(z|A)P(A)/P(z), P(z) = Σ P(z|Ai)P(Ai) → Ex 10
  • 🔴 Bayes filter: predict with p(xt|ut,xt−1) (spreads), correct with η·p(zt|xt) (sharpens) → Ex 1
  • 🔴 KF roles: prediction propagates (μ, Σ), uncertainty ↑; update blends by Kalman gain, uncertainty ↓; Gaussian = closed under both → Ex 11
  • 🔴 EKF-SLAM state: (x, y, θ, m1x, m1y, …) → Ex 12
  • 🔴 Dijkstra f = g vs A* f = g + h; admissible = never overestimates → Ex 13
  • 🟠 Inverse intrinsics: xn = (u−cx)/fx (back-projection) → Camera 8
  • 🟠 Chain rule for trajectories: Ẋ = X′ṡ, Ẍ = X″ṡ² + X′s̈ → Ex 6
  • 🟠 Optical flow: Ixu + Iyv + It = 0; brightness constancy; aperture problem → Vision 11–13
  • 🟠 Friction enters Euler–Lagrange as Q = −bθ̇ (the sheet's pendulum is frictionless) → Ex 7

Reproduce on demand

  • 🔴 The four-stage projection pipeline diagram (Lesson 5.1) — asked for verbatim by Variant 6/13.
  • 🔴 The Lagrangian pipeline: T, V → L → Euler–Lagrange (+Q) → equation of motion (Ex 7).
  • 🔴 A labeled FSM with an interrupt transition (Ex 14).
  • 🟠 Frame drawing with right-hand-rule check + rotation-matrix-from-columns (Ex 3).
  • 🟠 Landmark sketch: ranges as circles, bearings from heading (Ex 28).

Sanity checks that catch real errors

  • Rotation matrix: det R = 1, columns unit length, R RT = I — caught an error in the official Solution 4 (see discrepancy).
  • Rotated/transformed points keep their norm; probabilities sum to 1; units survive every formula (rad/s · m = m/s).
  • Camera: XC > 0 ⇒ u > cx; depth doubles ⇒ image offsets halve; ZC ≤ 0 ⇒ not visible.
  • Inverse transform translation is −RTt, never −t (unless R = I).

Traps the exercises actually set

  • Using the sheet's frictionless pendulum when the question gives b (Ex 7).
  • Feeding world coordinates into the sheet's camera formulas without transforming first (Camera 7, Variant 13).
  • Forgetting the (dX/ds)·s̈ term in Ẍ (Ex 6).
  • Left- vs right-multiplication of rotations: world-fixed vs body-fixed (Ex 3e, Ex 4).
  • Answering “position” when asked which variable's error grows vs which error source dominates (Ex 16c vs Ex 20).
  • Claiming the ROS master relays messages (it only brokers discovery, Ex 15).
  • Missing that page 2 of the sheet exists: θr = θm − θi and the exact surds live there.

Rapid checklist (evening before)

The 100-point block

Graded exam set · Exercises 8–15

These eight are the only exercises in the collection that print explicit point values — together 100 points. This is a deliberate duplicate: one scannable card per exercise with the proof, the formula-sheet snippet (or an honest flag that nothing is on the sheet), and a memorize box. Drill these until each is automatic; each card links to its full module treatment.

Exercise 8 · Differential Drive Kinematics 15 pts

Full treatment: Module 2.2. Given r = 0.1 m, L = 0.5 m, ωL = 4, ωR = 6 rad/s.

Exercise 8: differential drive, r=0.1 m, L=0.5 m, ω_L=4, ω_R=6; compute v, ω, turning radius
autonomous_robotics_exercises_only.pdf · pp. 5–6 · Exercise 8

Formula sheet

Formula sheet Constraints region: rolling without slip ẋcosθ+ẏsinθ=rφ̇
on your sheet Only the rolling constraint v = rφ̇ (per wheel) is here. The v/ω/R formulas themselves are not on the sheet.

Proof

Exam working (a) v = r(ωRL)/2 = 0.1·(6+4)/2 = 0.05·10 → v = 0.5 m/s (b) ω = r(ωR−ωL)/L = 0.1·(64)/0.5 = 0.2·2 → ω = 0.4 rad/s (c) R = v/ω = 0.5/0.4R = 1.25 m ✓ ωRL ⇒ turns left; R = 1.25 > L/2 = 0.25 ⇒ gentle arc

Calculator (fx-991CW)

Calculate app. 0.1×(6+4)÷2 EXE → 0.5, then store it: VARIABLE → A → Store. 0.1×(6−4)÷0.5 EXE → 0.4 → store in B. Radius: A÷B EXE → 1.25. Numbers this clean are hand-arithmetic — use the calculator only to check.

Memorize

⚠ Not on the sheet — commit to memory
  • v = r(ωRL)/2   ω = r(ωR−ωL)/L   R = v/ω
  • Rebuild rule: equal wheels → straight at the average speed; opposite wheels → spin about the midpoint (each wheel circles radius L/2).

Exercise 9 · Camera Projection 15 pts

Full treatment: Module 5.1. Given K = 80003200800240001, camera-frame point P = (1,2,5) m.

Exercise 9: intrinsic matrix K, camera-coordinate point P=(1,2,5); compute normalized image coordinates, pixel coordinates, intrinsic vs extrinsic
autonomous_robotics_exercises_only.pdf · p. 6 · Exercise 9

Formula sheet

Formula sheet Pinhole Camera Projection region: normalized coordinates, u/v pixel formulas, K, full projection model
on your sheet The whole pipeline is printed. Trap: it assumes the point is already in camera coordinates (here it is).

Proof

Exam working (a) xn = XC/ZC, yn = YC/ZC = 1/5, 2/5 → (xn, yn) = (0.2, 0.4) (b) u = fxxn+cx = 800·0.2+320 → u = 480;  v = fyyn+cy = 800·0.4+240 → v = 560 (u, v) = (480, 560) (c) Intrinsic = internal geometry (fx, fy, cx, cy, skew) inside K. Extrinsic = camera pose (R, t) mapping world → camera.

Calculator (fx-991CW)

Calculate app. 800×1÷5+320 EXE → 480; 800×2÷5+240 EXE → 560.
Or Matrix app (checks K·P): MatA = K (3×3), MatB = P (3×1); CATALOG → Matrix → MatA × MatB EXE → (2400, 2800, 5); divide the first two entries by the third (5) by hand — the calculator will not do the homogeneous ÷.

Memorize

Pipeline order (on the sheet, but know it cold)
  • PC = R·PW+t → divide by ZC → apply K. Back-projection: xn = (u−cx)/fx.
  • Intrinsic (in K) vs extrinsic (R, t) — one sentence each, name where they live.

Exercise 10 · Bayesian Localization 15 pts

Full treatment: Module 8.1. Given P(A)=0.7, P(B)=0.3, P(z|A)=0.9, P(z|B)=0.2.

Exercise 10: two locations A, B with prior and sensor model; compute P(A|z), P(B|z) by Bayes rule; why normalization is required
autonomous_robotics_exercises_only.pdf · pp. 6–7 · Exercise 10

Formula sheet

not on your sheet Nothing for this exercise is printed on the 2026 sheet — the memorize box is the whole toolkit.

Proof

Exam working P(z) = P(z|A)P(A) + P(z|B)P(B) = 0.9·0.7 + 0.2·0.3 = 0.63 + 0.06 = 0.69 (a) P(A|z) = P(z|A)P(A)/P(z) = 0.63/0.69P(A|z) ≈ 0.913;  P(B|z) = 0.06/0.69≈ 0.087 (b) after prior×likelihood the values are only proportional to probabilities; ÷P(z) makes them sum to 1. ✓ 0.913 + 0.087 = 1; belief rose toward the sensor-favored A

Calculator (fx-991CW)

Calculate app. 0.9×0.7+0.2×0.3 EXE → 0.69, store VARIABLE → A → Store. Then 0.63÷A EXE → 0.913…; 0.06÷A EXE → 0.087…. Press FORMAT to see the exact fraction (21/23). Keep P(z) in A so you never retype it.

Memorize

⚠ Not on the sheet — commit to memory
  • P(A|z) = P(z|A)P(A) / P(z),   P(z) = Σi P(z|Ai)P(Ai).
  • Compute the normalizer P(z) on its own line; posteriors must sum to 1.

Exercise 11 · Kalman Filter Concepts 10 pts

Full treatment: Module 8.2. Concept answer (4 + 4 + 2 pts).

Exercise 11: purpose of prediction step, purpose of update step, why Gaussian uncertainty
autonomous_robotics_exercises_only.pdf · p. 7 · Exercise 11

Formula sheet

not on your sheet The Kalman equations are not printed — know the roles, and be able to reproduce the shapes.

Proof

Exam working · concept (a) Prediction: motion model + control estimate the next state before measuring; propagates (μ, Σ); uncertainty ↑ (process noise added). (b) Update: correct the prediction with the measurement — innovation z−Cμ̄ blended by the Kalman gain; uncertainty ↓. (c) Gaussian: fully described by (μ, Σ) and stays Gaussian under linear models + Gaussian noise → closed-form, efficient.

Calculator (fx-991CW)

No calculation — this is a written concept answer; the calculator is not used.

Memorize

⚠ Not on the sheet — commit to memory
  • Predict: μ̄ = Aμ+Bu, Σ̄ = AΣAᵀ+R.   Gain: K = Σ̄Cᵀ(CΣ̄Cᵀ+Q)⁻¹.
  • Update: μ⁺ = μ̄+K(z−Cμ̄), Σ⁺ = (I−KC)Σ̄.   R = process noise, Q = measurement noise.
  • Prediction grows uncertainty, update shrinks it; Gaussian = compact + closed under both steps.

Exercise 12 · SLAM 15 pts

Full treatment: Module 8.3. Robot pose (x, y, θ) + two landmarks.

Exercise 12 EKF-SLAM: chicken-and-egg, augmented state vector for pose plus two landmarks, data association
autonomous_robotics_exercises_only.pdf · p. 7 · Exercise 12

Formula sheet

not on your sheet Nothing here is on the sheet — the state vector and the three definitions are pure memory.

Proof

Exam working (a) Localization needs a map; mapping needs the pose — a wrong pose mis-places landmarks and vice-versa → estimate both jointly. (b) augmented state = pose + both landmark positions: yt = ( x, y, θ, m1x, m1y, m2x, m2y )T ∈ ℝ⁷ (c) Data association: deciding which measurement matches which map landmark; a wrong match corrupts the filter.

Calculator (fx-991CW)

No calculation — a written concept answer plus the augmented state vector; the calculator is not used.

Memorize

⚠ Not on the sheet — commit to memory
  • Augmented state dimension = 3 (pose) + 2 per landmark. Two landmarks → ℝ⁷.
  • Chicken-and-egg one-liner + data-association consequence (mis-match is catastrophic, not just noisy).

Exercise 13 · Motion Planning 10 pts

Full treatment: Module 9.2. Dijkstra vs A* (5 + 5 pts).

Exercise 13: compare Dijkstra and A* on optimality, heuristic, efficiency; why a good heuristic matters
autonomous_robotics_exercises_only.pdf · pp. 7–8 · Exercise 13

Formula sheet

Formula sheet control region: open-loop, closed-loop policy, feedback laws
on your sheet Only the control laws are here (related context). The Dijkstra / A* facts below are not on the sheet.

Proof

Exam working · concept (a) Dijkstra: f(n) = g(n)A*: f(n) = g(n) + h(n) Optimality: Dijkstra optimal for non-negative edges; A* optimal if h admissible (never overestimates). Heuristic: Dijkstra none; A* uses h to aim at the goal. Efficiency: A* expands fewer nodes; h ≡ 0 ⇒ A* = Dijkstra. (b) good h reduces expansions while staying admissible to keep optimality; overestimate → may miss the best path.

Calculator (fx-991CW)

No calculation — a written comparison; the calculator is not used. (If a numeric A* trace is asked, add g and h per node by hand.)

Memorize

⚠ Not on the sheet — commit to memory
  • f = g vs f = g + h; g = cost-from-start, h = estimated-cost-to-goal.
  • Admissible = never overestimates → optimal; consistent = triangle inequality → no reopening.

Exercise 14 · Finite State Machines 10 pts

Full treatment: Module 10.1. Delivery robot: Idle, Navigate, Deliver, Recharge (5 + 5 pts).

Exercise 14: draw an FSM for a delivery robot; one advantage and one limitation of FSM control
autonomous_robotics_exercises_only.pdf · p. 8 · Exercise 14

Formula sheet

not on your sheet Nothing here is on the sheet — it is a drawing plus two sentences.

Proof

Exam working (a) Idle →(request)→ Navigate →(arrived)→ Deliver →(done)→ Idle;  Idle/Navigate/Deliver →(battery low)→ Recharge →(battery full)→ Idle  draw as a labeled graph (b) Advantage: simple, interpretable, easy to implement/verify. Limitation: scales poorly (state explosion); poor under uncertainty.
IdleNavigateDeliverRecharge delivery requestarriveddelivery completedbattery fullbattery lowbattery low
The requested FSM — solid = task flow, dashed red = battery-low interrupt from any active state.

Calculator (fx-991CW)

No calculation — this is a drawing plus two sentences; the calculator is not used.

Memorize

⚠ Not on the sheet — commit to memory
  • Four states + labeled edges + the battery-low interrupt (from at least Idle and Navigate).
  • Advantage (simple/interpretable) and limitation (state explosion / poor under uncertainty) — each with a “because”.

Exercise 15 · Reinforcement Learning & ROS 10 pts

Full treatment: Module 10.2. Eight definitions (5 + 5 pts).

Exercise 15: explain state, action, reward, policy in RL; node, topic, message, master in ROS
autonomous_robotics_exercises_only.pdf · p. 8 · Exercise 15

Formula sheet

Formula sheet control region including the closed-loop policy law u=π(x)
on your sheet Only the policy law u = π(x) appears (that is the RL policy). The eight definitions below are not on the sheet.

Proof

Exam working · concept (a) RL — State: agent's situation. Action: chosen control. Reward: scalar feedback, maximize the cumulative sum. Policy: states→actions, u = π(x). (b) ROS — Node: process doing one job. Topic: named pub/sub channel. Message: typed data on a topic. Master: discovery/name service (ROS 1) — traffic is peer-to-peer.

Calculator (fx-991CW)

No calculation — eight written definitions; the calculator is not used.

Memorize

⚠ Not on the sheet — commit to memory
  • RL: state / action / reward (scalar, cumulative) / policy π (u = π(x) is on the sheet).
  • ROS: node / topic / message / master — master only brokers discovery, it does not relay messages.
Reference

Glossary

State x
Minimal variable set making the future independent of the past. Modules 1, 8. 🔴
Control u
Commanded input (wheel speeds, acceleration, steering). Module 1. 🔴
Holonomic constraint
g(q,t) = 0 — restricts positions. Non-holonomic: restricts velocities, not integrable to positions. Module 2. 🔴
ICC / turning radius
Instantaneous center of a wheeled robot's circular motion; R = v/ω. Module 2. 🟠
Lagrangian L = T − V
Kinetic minus potential energy; Euler–Lagrange turns it into the equation of motion. Module 3. 🔴
Generalized force Q
Non-conservative torque/force (friction −bθ̇, motors) on the Euler–Lagrange right side. Module 3. 🟠
Rotation matrix Rsa
Columns = frame {a}'s axes in {s} coordinates; R⁻¹ = Rᵀ; det = 1. Module 4. 🔴
Homogeneous transform T
[R | t; 0 1] — pose as one matrix; T⁻¹ = [Rᵀ | −Rᵀt; 0 1]. Modules 4–5. 🔴
Intrinsics K
fx, fy, cx, cy, skew — camera-internal pixel mapping. Module 5. 🔴
Extrinsics [R | t]
Camera pose: world → camera coordinate map. Module 5. 🔴
Normalized coordinates
xn = XC/ZC — image position before intrinsics, on the Z = 1 plane. Module 5. 🔴
Principal point
(cx, cy): where the optical axis pierces the image. Module 5. 🟠
Image scale s = f/h
Pixels per meter for a ceiling plane at height h. Module 6. 🔴
Triangulation
3D point from intersecting viewing rays of ≥2 known poses; least-squares via SVD. Module 7. 🟠
Baseline
Distance between stereo camera centers; larger → better depth, harder matching. Module 7. 🟠
Reprojection error
∥p − p̂∥: pixel distance between observation and prediction from the 3D estimate. Module 7. 🟠
Bundle adjustment
Joint nonlinear refinement of all poses + points minimizing total reprojection error. Module 7. 🟠
Brightness constancy
A moving point keeps its intensity — optical flow's core assumption. Module 7. 🟠
Aperture problem
Only the flow component along the intensity gradient is observable. Module 7. 🟠
Belief bel(x)
Posterior distribution over states given all data so far. Module 8. 🔴
Motion / sensor model
p(xt|ut,xt−1) and p(zt|xt) — the two densities driving the Bayes filter. Module 8. 🔴
Innovation
z − Cμ̄: measurement minus expectation; what the Kalman update reacts to. Module 8. 🟠
Kalman gain K
Blend ratio between prediction and measurement, set by their covariances. Module 8. 🔴
EKF
Kalman filter for nonlinear models via Jacobian linearization at the estimate. Module 8. 🔴
Multi-modal belief
Several plausible poses at once; breaks single-Gaussian filters → particle filter. Module 8. 🟠
Data association
Which measurement belongs to which landmark; mis-association corrupts SLAM. Module 8. 🔴
Admissible heuristic
h(n) ≤ true remaining cost — preserves A* optimality. Module 9. 🔴
Policy π
State → action mapping; closed-loop control law; what RL learns. Modules 9–10. 🔴
Odometry / dead reckoning
Pose by integrating motion only; drifts without external correction. Modules 1, 8. 🟠
Traceability

Sources and coverage

Every exercise-bearing source and where it landed. Slides were used as scope/emphasis evidence throughout the modules; snippets are embedded from the PDFs listed here.

Source fileContentIn this book
2026_Autonomous_Robotics_Formula_Sheet.pdf (2 pp.)The allowed exam sheetFormula-sheet mastery + region snippets inside every module
autonomous_robotics_exercises_only.pdf (16 pp.)Main collection, Ex 1–32All 32 solved in Modules 1–4, 6, 8–10 (camera: Ex 9 in Module 5)
autonomous_robotics_solutions.pdf / …_exercises_only_solutions.pdfOfficial solutions, Ex 1–30Cross-checked against every solution; one error found (Ex 4, documented below)
exercises_compilation.pdf (4 pp.)The Moodle “Test” (mock exam) — identical to collection Ex 1–7Solved as Ex 1Ex 7; flagged as the Day-2 mock rehearsal in the battle plan
exercises_150426.pdf (3 pp.)Lab problems P1–P3 (integration, unicycle, double integrator)Module 1 and Module 2
exercises_060526.pdf (12 pp.)Guided camera drills 1–18 (with inline solutions)Module 5.2, all 18; inline solutions verified
exercises_060526_2.pdf (6 pp.)Camera variants 1–13 (no solutions)Module 5.3, all 13, independently solved + machine-checked
exercises_130526 copy.pdf (5 pp.)Vision sheet 1–17 (no solutions)Module 7, all 17
1_slides … 10_slides (579 slides)Lecture decksScope, emphasis and terminology evidence for module priorities; content taught via the modules
fig/fig1–fig3.pngProf-provided rotation reference (SO(3) properties, skew matrices, Rodrigues formula, ZYX Euler angles)Folded into Module 4 and the printable cheatsheet §4
Mathematical_Physical_Foundations_Robotics.pdf, transformation_sheet_robotics.pngPrerequisite diagnostic (vectors, trig, atan2, derivatives) and camera-geometry posterFoundations woven into module prose; essentials in cheatsheet §0

Exercise numbering and subpart labels preserved exactly as in the sources. Anchors: collection = ex1–ex32, guided camera = cam1–cam18, variants = camv1–camv13, vision = vis1–vis17, labs = lab1–lab3.

Honesty

Known gaps, discrepancies & uncertainties

⚠ Official Solution 4 is arithmetically wrongIts final rotation matrix contains a row of length < 1 and its p′ has norm √1.5 (a rotation must preserve the norm 1). The corrected, SymPy-verified result is in Ex 4. Method in the official solution is right; only the multiplication slipped. If the same task appears in the exam, trust the invariants.
  • No official solutions exist for the camera variant sheet, the vision sheet, the labs, and Ex 31–32. Those answers are independently produced, numerically machine-checked where numeric, and labeled at the exercise. Ex 31–32 additionally rest on the previous build's exhaustive search plus a fresh hand re-check of grid (a).
  • Ex 31/32 grids were transcribed visually from Figure 1 (embedded as a snippet). If your reading of a wall differs, re-run the set-collapse method — the technique, not the specific cells, is what transfers to the exam.
  • Exam format is inferred, not known: point values and question styles come from the exercise collection itself. No fake certainty — the priorities state their evidence.
  • Lab P3's discretization: notebooks sometimes use plain-Euler B matrices; the book presents the exact ½Δt² version consistent with Ex 16 and says to state your choice.
  • Calculator sequences follow the official Casio fx-991CW manual; label wording can differ slightly by firmware/region (UK model). Rehearse maneuver 1 once on your own device.