Some introductory text.
“Ask engaging questions that spark people’s curiosity and fascination that people find intriguing…”
What you will learn
- A list of 2 to 5 learning goals
 
Lecture
A video of slides, coding, hands-on electronics, etc.
Interactive
TODO: - add frames (wmr and global) - allow global frame to move? - add angle? - cursor style of grab and grabbing - animation? - https://ipesek.github.io/jsxgraphbook/4_3_animation_sliders.html - https://jsxgraph.org/wiki/index.php/Animations
Try dragging the robot around. You can also rotate the robot by dragging from the tip of the forward arrow.
mutable x = 0
mutable y = 0
mutable phi = 0
 
 
html`
${tex.block`
\vec{q}(t) = \begin{bmatrix}
    x(t) \\
    y(t) \\
    \phi(t)
\end{bmatrix}
= \begin{bmatrix}
    ${x} \; \text{m} \\
    ${y} \; \text{m} \\
    ${(phi * 180 / Math.PI).toFixed(2)} \degree
\end{bmatrix}
\\[10pt]
R = \begin{bmatrix}
    \cos(\phi) & -\sin(\phi) \\
    \sin(\phi) & \cos(\phi)
\end{bmatrix}
= \begin{bmatrix}
    ${Math.cos(phi).toFixed(2)} & ${-Math.sin(phi).toFixed(2)} \\
    ${Math.sin(phi).toFixed(2)} & ${Math.cos(phi).toFixed(2)}
\end{bmatrix}
`}
`
 
 
 
 
div_id = "jsxdiv"
graph_style = `
    width: ${width}px;
    height: ${width}px;
    user-select: none;
    overflow: hidden;
    position: relative;
    touch-action: none;
    background-color: #f5f5f5;
    border: solid #DDD 1px;
    border-style: solid;
    border-radius: 10px;
    margin: 0;
`
viewof graph = html`<div id="${div_id}" style="${graph_style}"></div>`
 
 
import { WMRGraph } from '../_interactives/WMRGraph/dist/wmr-graph.js';
function updateRotation(newPhi) {
    mutable phi = newPhi.toFixed(2);
}
function updateTranslation(newX, newY) {
    mutable x = newX.toFixed(2);
    mutable y = newY.toFixed(2);
}
new WMRGraph(div_id, updateRotation, updateTranslation);
 
 
import { Player } from '../_interactives/Player/dist/player.js';
function testUpdate( time ) { console.log( time ); }
function testReset() { console.log( 'reset' ); }
player = new Player( 10, 0.1, testUpdate, testReset );
player.initialize();
 
 
Exercise
Each “chapter” will include the assignment/exercise. These will be completed in class.
Resources
Coordinate Transformations - How robots move through space - YouTube
- Motion modeling
- Kinematics (direct and inverse)
 
- Differential drive
 
- Ackerman steering
 
- Bicycle model
 
- Rear-wheel bicycle drive
 
- Unicycle model
 
- Tricycle drive
 
- Tricycle with a trailer
 
- Synchronous drive
 
- Omnidirectional drive
 
- Track drive
 
- Motion constraints
 
- Holonomic and non-holonomic constraints
 
 
http://msl.cs.uiuc.edu/planning/node657.html
differential kinematics from Correll 3.3