I400/I590/B659: Intelligent Robotics Preliminaries: Vectors Lab 1 1. Install Klamp’t python API 2. In Klampt/Python/demos folder: run python gltemplate.py ../../data/athlete_fractal_1.xml 3. Navigate with the mouse (hold Shift and Ctrl to pan and zoom) to get a good screenshot of the robot 4. Press ‘s’ to start simulating 5. Take a screenshot, submit it in .jpg or .png format • Due next Wednesday • Ask your peers / myself for help installing • Document installation problems, email to me (hauserk@indiana.edu) Agenda • Vector algebra: Representing and manipulating points and directions in 2D, 3D, and higher dimensions Vectors • Represent physical quantities that exist in some “space” • Both direction and magnitude • Represent ordered collections of related numbers • In this class: • 2D and 3D: Positions, velocities, accelerations, forces, pixel positions… • Higher D: RGBA colors, configurations, robot-environment system states, torques… Example #1 • Bob is standing at point A. He moves north one meter. He then moves east 2 meters. How far is he now from point A? A Example #1 • Bob is standing at point A. He moves north one meter. He then moves east 2 meters. How far is he now from point A? A Example #1 • Bob is standing at point A. He moves north one meter. He then moves east 2 meters. How far is he now from point A? B A Example #1 • Bob is standing at point A. He moves north one meter. He then moves east 2 meters. How far is he now from point A? (2,1) B (0,0) A Example #1 • Bob is standing at point A. He moves north one meter. He then moves east 2 meters. How far is he now from point A? (2,1) B A The displacement vector from A to B is š“šµ = vertically for reasons to be discussed later) 2 (it is oriented 1 Notation • A displacement vector starting at point A and ending at pint B is denoted š“šµ • Capitals • Not used much in this class • A plain vector will be denoted š„ • Point of origin is either unspecified, assumed, or does not need to be made explicit to be meaningful (e.g., velocity) • Lowercase • Eventually we’ll drop the arrow Example #1 • Bob is standing at point A. He moves north one meter. He then moves east 2 meters. How far is he now from point A? ? (2,1) B A 2 is 22 + 12 = 5. 1 This is also known as the norm of the vector and is denoted š“šµ . The length of the vector š“šµ = Norms š • Definition: If š„ = is a vector, then š„ ≡ š2 + š 2 š • (Pythagorean theorem) • [Subtle point: distance is not the same as distance traveled! Bob traveled 3m, but ended up about 2.23m away from the start] Comment • What about if Bob repeats the same procedure, arriving at point C? C (2,1) B A Comment • What about if Bob repeats the same procedure, arriving at point C? (4,2) C (2,1) B A Comment • What about if Bob repeats the same procedure, arriving at point C? (4,2) C (2,1) B (0,0) A The displacement vector from A to B is? The displacement vector from B to C is? The displacement vector from A to C is? 2 1 Example #2: Multiplication • Dan is standing at point A. He moves in the same direction that Bob originally did, but goes 50% farther. Where does he stand? (2,1) B A D Example #2: Multiplication • Dan is standing at point A. He moves in the same direction that Bob originally did, but goes 50% farther. Where does he stand? (2,1) D B A Displacement vector from A to D is š“š· = 1 + 0.5 ∗ š“šµ = 1.5 ∗ 3 2 = 1.5 1 Scalar multiplication • To differentiate it from a vector, a “regular number” is known as a scalar • Scalar-vector multiplication scales both elements of the vector by the same amount. If a, b, and c are scalars, then: š šš = š šš • š • It commutes: • š š š = š š š • Scalar division is the same as multiplying by 1/c • š š /š = š š 1 š = š/š š/š • [As usual, don’t divide by zero] Scalar multiplication • Scalar multiplication “passes through” the norm operation: • š š„ = |š| š„ • (Why?) Points vs. Displacements • A point X in space can be represented for the purposes of calculations (out of the realm of pure thought) as a displacement vector from some special reference point O, called the origin • The representation of a point P changes depending on the choice of O • When comparing or manipulating two points, their representations as vectors must use the same origin! • A displacement vector from point X to Y is the same regardless of the choice of origin • [Note: what about the orientation of the reference axes? More later] Example #3: Vector addition • Suppose Bob is at B=(2,1). Bob then moves South 2 meters and east 3 more meters, arriving at E. What are E’s coordinates? B (2,1) (3,-2) A E Example #3: Vector addition • Suppose Bob is at B=(2,1). Bob then moves South 2 meters and east 3 more meters, arriving at E. What are E’s coordinates? š“šµ + šµšø = š“šø B (2,1) (3,-2) A š“šø = 2 3 5 + = 1 −2 −1 E Vector addition š§ = š„ + š¦: produces a new vector in which š§ ‘s first element is equal to the sum of the first elements of š„ and š¦, and its second element is equal to the sum of the second elements. Example #4: Vector subtraction • Dan is at back at D=(3,1.5). Along which vector would he have to move in order to reach E=(5,-1)? D š“š· + š·šø = š“šø (3,1.5) š·šø = š“šø − š“š· A (5,-1) E š·šø = 3 2 5 − = 1.5 −2.5 −1 Vector subtraction š§ = š„ − š¦: produces a new vector in which š§ ‘s first element is equal to the first element of š„ minus the first element of š¦, and its second element is equal to the second element of š„ minus the first element of š¦. Vector subtraction: another view • With normal numbers, š„ − š¦ = š„ + (−1 ∗ š¦) • With vectors, š„ − š¦ = š„ + (−1 ∗ š¦) • (Try it) Distances D • How far is D from E? (3,1.5) A ? (5,-1) E • Step 1: calculate š·šø = š“šø − š“š· • Step 2: calculate the norm š·šø • In other words, the distance between D and E is š“šø − š“š· Interpolation • To go from D to E gradually, you can use linear interpolation (3,1.5) D A (5,-1) E š š¢ = š“š· + š¢ ∗ (š“šø − š“š·) for uļ[0,1] a scalar parameter Or… š š¢ = š“š· + š¢ ∗ š·šø Or… š š¢ = 1 − š¢ ∗ š“š· + š¢ ∗ š“šø Higher dimensions • Everything is exactly the same, but the vectors contain more elements š • 3D: š„ = š š š š • 4D: š„ = š š • Etc… • Scalar-vector multiplication, vector addition and subtraction remain essentially the same Norms in higher dimensions š • 3D: if š„ = š , then š„ = š2 + š 2 + š 2 (why?) š š š • 4D: if š„ = , then š„ = š2 + š 2 + š 2 + š 2 š š • Etc… Standard vector spaces • • • • Cartesian space 1D space: ā 2D space: ā2 Etc… ān • It can be shown that any space of objects that transform like vectors do, with scalar-vector multiplication and vector-vector addition, is isomorphic to ān for some n* *as long as it has finite dimension Cheat sheet • Notation for n-dimensional vectors: • š„ = š„1 , … , š„š , š¦ = š¦1 , … , š¦š , etc • Space of n-dimensional vectors: ān (Cartesian space) • • • • Norm: š„ = š„12 + āÆ + š„š2 Scalar-vector multiplication: cš„ = šš„1 , … , šš„š Norms and scalar multiplications: š š„ = |š| š„ Vector-vector addition: • š„ + š¦ = š„1 + š¦1 , … , š„š + š¦š • Vector-vector subtraction: • š„ − š¦ = š„1 − š¦1 , … , š„š − š¦š • No such thing as vector-vector multiplication, vector-scalar addition. Implementation in Python • Lists: • • • • • E.g., [2,1], or [0.5,-0.8] Operators +, -, *, / do not work in the same way Use klampt.vectorops.{add,sub,mul,div} Norm: klampt.vectorops.norm Distance: klampt.vectorops.distance • Numpy arrays: • • • • E.g., numpy.array([2,1]), or numpy.array([0.5,-0.8]), Operators +, -, *, / work as desired Norm: numpy.linalg.norm Distance: numpy.linalg.norm(x-y) Next time • Matrix algebra, linear transformations (Principles A.E) • No class on Monday