Interactive, Instructional Demos

By Justus Piater. No strings attached, but please give me credit where appropriate, or drop me a note if something doesn't work as advertised.

Probabilities and Machine Learning

• Covariance ellipses and samples drawn from the corresponding, bivariate, normal distribution of adjustable parameters (HTML/SVG/JavaScript).

• Gridworld demos (Java) illustrating value functions and policies of TD(λ), Sarsa, and Q-Learning.

• Neural network trained one training instance at a time, showing all intermediate results.

• A simple explanation of how PyTorch computes errors, gradients and parameter updates (Jupyter notebook)

Computer Vision

• Thin-lens projection, allowing just about all elements to be dragged. (HTML/SVG/JavaScript)

• Lines and intersections in homogeneous coordinates (HTML/SVG/JavaScript)

• Planar homography with adjustable parameters. (HTML/SVG/JavaScript)

• Projective camera model with adjustable internal and external parameters. (HTML/SVG/JavaScript)

• Discrete Convolution graphically explained for the computation of a single value in 1D, showing both the shifting kernel and the equivalent inner product with the stationary, flipped kernel. (Call showconvj() at the R prompt; check the code for optional parameters.)

Robotics (R)

• Spring-Mass-Damper system with adjustable parameters. Plotted is the state of the system in temporal and phase spaces. (Call smd() in RStudio.)

• Kinematics of a planar arm consisting of two links and a gripper. (Call forwardKinematics() or inverseKinematics() in RStudio.)

Visual Geometry (Octave/Matlab)

These are mostly obsoleted by the above.

• To visualize the effects of a 2D homographic transformation, download homography.m, homography_draw.m, homography_gui.m and homography_gui.fig (binary file), and run homography in Octave or Matlab.

Under Octave, you then run homography_draw (see homography.m for calling conventions), since it lacks Matlab's GUI functionalities.

• To visualize the effects of the various intrinsic and extrinsic camera parameters, download camera.m, camera_draw.m, camera_gui.m and camera_gui.fig (binary file), and run camera in Octave or Matlab.

Under Octave, you then run camera_draw (see camera.m for calling conventions), since it lacks Matlab's GUI functionalities.

In this example, the rotation matrix R is composed by multiplying the three axis-rotation matrices parametrized by the orientation angles around x, y and z axes, left to right (Euler angles in “x y z” (pitch-roll-yaw) convention).