Procedural animation for LED pixels and motors: making things move the way we want them to
- # Where we start
- Mover
- https://kinopio.club/types-of-movement-b6N57ol_BLDTOdwz4mHhO
- # Use physical linkages and mechanical movements where appropriate
- https://cdn.kinopio.club/ouDeXpxn7UR99m1Vk1VK2/image.png
- https://web.archive.org/web/20120606141658/http://www.makingthingsmove.com/resources/
- https://kinopio.club/getting-started-with-companion-robots-j4rr4c0obR9o5Gtqdjyve
- simple smoothing
- # Really Simple Movement Smoothing
- one tiny change to movement code: add a simple smoothing algorithm
- ``` position += (target - position) * .1;
servo1.writeMicroseconds(position);```
- Designing Movement Parameters
- the resulting movement starts fast, and slows as it reaches target position
- # Keyframe Animation
- Issue: 'the curve does not update "on the fly" in response to updated sensor inputs' (see https://github.com/siteswapjuggler/RAMP/issues/19#issuecomment-984511412 )
- # Procedural Animation (using acceleration)
- ## How it works
- ## Vectors?
- https://cdn.kinopio.club/ehPCgdgjEHyaaJS4ftuR5/Screenshot-2023-11-30-at-10.14.17-AM.png
- Possible libraries and resources for Arduino
- `2` is 2 steps in the + direction from 0
`-3` is 3 steps in the - direction from 0
- a sensor value could be mapped to a target coordinate which your moving motor or pixels want to seek toward and arrive at
- https://github.com/joshua-8/Derivs_Limiter?hidden=true
- https://github.com/tomstewart89/BasicLinearAlgebra?hidden=true
- https://github.com/RCmags/vector_datatype/tree/main?hidden=true
- https://github.com/RobTillaart/FastTrig?hidden=true
- https://github.com/pfeerick/elapsedMillis?hidden=true
- https://kinopio.club/robots---personality-with-math-video-KI1vsib33pLTQlbWCXqAZ
- Lerp and Game Math Notes
- ```
// takes in values a and b, and a fraction between 0 and 1 t, and returns a value between a and b,
// LINEARLY proportional to t
// Lerp(10, 20, 0.08) = 10.8
float Lerp( float a, float b, float t ) {
return ( 1.0f - t ) * a + b * t;
}
```
Procedural animation for LED pixels and motors: making things move the way we want them to
- # Where we start
- Mover
- https://kinopio.club/types-of-movement-b6N57ol_BLDTOdwz4mHhO
- # Use physical linkages and mechanical movements where appropriate
- https://cdn.kinopio.club/ouDeXpxn7UR99m1Vk1VK2/image.png
- https://web.archive.org/web/20120606141658/http://www.makingthingsmove.com/resources/
- https://kinopio.club/getting-started-with-companion-robots-j4rr4c0obR9o5Gtqdjyve
- simple smoothing
- # Really Simple Movement Smoothing
- one tiny change to movement code: add a simple smoothing algorithm
- ``` position += (target - position) * .1;
servo1.writeMicroseconds(position);```
- Designing Movement Parameters
- the resulting movement starts fast, and slows as it reaches target position
- # Keyframe Animation
- Issue: 'the curve does not update "on the fly" in response to updated sensor inputs' (see https://github.com/siteswapjuggler/RAMP/issues/19#issuecomment-984511412 )
- # Procedural Animation (using acceleration)
- ## How it works
- ## Vectors?
- https://cdn.kinopio.club/ehPCgdgjEHyaaJS4ftuR5/Screenshot-2023-11-30-at-10.14.17-AM.png
- Possible libraries and resources for Arduino
- `2` is 2 steps in the + direction from 0
`-3` is 3 steps in the - direction from 0
- a sensor value could be mapped to a target coordinate which your moving motor or pixels want to seek toward and arrive at
- https://github.com/joshua-8/Derivs_Limiter?hidden=true
- https://github.com/tomstewart89/BasicLinearAlgebra?hidden=true
- https://github.com/RCmags/vector_datatype/tree/main?hidden=true
- https://github.com/RobTillaart/FastTrig?hidden=true
- https://github.com/pfeerick/elapsedMillis?hidden=true
- https://kinopio.club/robots---personality-with-math-video-KI1vsib33pLTQlbWCXqAZ
- Lerp and Game Math Notes
- ```
// takes in values a and b, and a fraction between 0 and 1 t, and returns a value between a and b,
// LINEARLY proportional to t
// Lerp(10, 20, 0.08) = 10.8
float Lerp( float a, float b, float t ) {
return ( 1.0f - t ) * a + b * t;
}
```