|
| 1 | +{ |
| 2 | + "title": "Robot Controllers Part 2: Raibert Hopper (with Dr. Christian Hubicki", |
| 3 | + "description": "In this livestream, I'm rejoined by Dr. Christian Hubicki to continue our series on robot controllers. Dr. Hubicki gives a presentation on the history of legged robots (like ASIMO and Boston Dynamics) and the principles behind the Raibert Hopper. Then, we attempt to implement a 1D hopping robot simulation in p5.js using a PID controller.", |
| 4 | + "videoId": "3FeySIv-gFM", |
| 5 | + "date": "2025-08-24", |
| 6 | + "languages": ["p5.js", "MATLAB"], |
| 7 | + "topics": ["robotics", "p5.js", "PID controller", "Raibert hopper", "simulation", "physics", "legged locomotion", "robot control"], |
| 8 | + "canContribute": true, |
| 9 | + "relatedChallenges": ["160-spring-forces"], |
| 10 | + "timestamps": [ |
| 11 | + { "time": "0:00:00", "title": "Waiting to Start" }, |
| 12 | + { "time": "0:05:17", "title": "Welcome to The Coding Train" }, |
| 13 | + { "time": "0:08:35", "title": "Revisiting Part 1 from 2022" }, |
| 14 | + { "time": "0:10:13", "title": "Introducing Dr. Christian Hubicki" }, |
| 15 | + { "time": "0:20:10", "title": "Dr. Hubicki's Presentation: How to Make a Robot Hop" }, |
| 16 | + { "time": "0:24:00", "title": "History of Legged Locomotion: Safety vs. Agility" }, |
| 17 | + { "time": "0:27:09", "title": "The 'Safety First' Approach (ZMP, ASIMO)" }, |
| 18 | + { "time": "0:30:34", "title": "The 'Agility First' Approach (Mark Raibert, Boston Dynamics)" }, |
| 19 | + { "time": "0:38:17", "title": "Whiteboard Explanation: PID Controllers" }, |
| 20 | + { "time": "0:51:30", "title": "Whiteboard Explanation: The Raibert Hopper Controller" }, |
| 21 | + { "time": "0:58:07", "title": "Transition to Coding in p5.js" }, |
| 22 | + { "time": "1:03:04", "title": "Connecting to Nature of Code and Steering Behaviors" }, |
| 23 | + { "time": "1:10:40", "title": "Starting with the p5.js Spring Simulation Code" }, |
| 24 | + { "time": "1:24:27", "title": "Implementing Hopping Phases (Stance vs. Flight)" }, |
| 25 | + { "time": "1:48:01", "title": "Implementing the PID Controller for Hopping Height" }, |
| 26 | + { "time": "2:09:59", "title": "Reviewing a Pre-made, Working 1D Hopper Example" }, |
| 27 | + { "time": "2:16:40", "title": "Previewing a 2D Hopper Starter Code" }, |
| 28 | + { "time": "2:23:04", "title": "Where to Find Dr. Christian Hubicki" }, |
| 29 | + { "time": "2:24:53", "title": "What's Next for The Coding Train" }, |
| 30 | + { "time": "2:29:43", "title": "Outro and Goodbyes" } |
| 31 | + ], |
| 32 | + "codeExamples": [ |
| 33 | + { |
| 34 | + "title": "1D Raibert Hopper", |
| 35 | + "description": "The p5.js sketch for a 1D hopping robot that we coded together during the livestream.", |
| 36 | + "image": "1d-hopper-a.jpg", |
| 37 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/CjfAtvdGx" } |
| 38 | + }, |
| 39 | + { |
| 40 | + "title": "1D Raibert Hopper", |
| 41 | + "description": "A organized and commented p5.js implementation of the 1D Raibert hopper controller.", |
| 42 | + "image": "1d-hopper-b.jpg", |
| 43 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/EYOfSWBaF" } |
| 44 | + }, |
| 45 | + { |
| 46 | + "title": "1D Spring Simulation", |
| 47 | + "description": "The starter code for the 1D spring simulation used at the beginning of the coding session.", |
| 48 | + "image": "1d-spring.jpg", |
| 49 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/EhhzPIB-h" } |
| 50 | + }, |
| 51 | + { |
| 52 | + "title": "2D Hopper", |
| 53 | + "description": "A starter p5.js sketch for a 2D hopper, ready for a controller to be implemented.", |
| 54 | + "image": "2d-hopper.jpg", |
| 55 | + "urls": { "p5": "https://editor.p5js.org/codingtrain/sketches/W_hxT-8ST" } |
| 56 | + } |
| 57 | + ], |
| 58 | + "groupLinks": [ |
| 59 | + { |
| 60 | + "title": "References", |
| 61 | + "links": [ |
| 62 | + { |
| 63 | + "icon": "π", |
| 64 | + "title": "Dr. Christian Hubicki's", |
| 65 | + "url": "https://www.christianhubicki.com/", |
| 66 | + "description": "Dr. Hubicki's personal website." |
| 67 | + }, |
| 68 | + { |
| 69 | + "icon": "π€", |
| 70 | + "title": "Optimal Robotics Lab", |
| 71 | + "url": "https://www.optimalroboticslab.com/", |
| 72 | + "description": "The research group run by Dr. Christian Hubicki at the FAMU-FSU College of Engineering." |
| 73 | + }, |
| 74 | + { |
| 75 | + "icon": "π", |
| 76 | + "title": "The Nature of Code", |
| 77 | + "url": "https://natureofcode.com/", |
| 78 | + "description": "My book on simulating natural systems, which covers concepts like vectors, forces, and springs." |
| 79 | + } |
| 80 | + ] |
| 81 | + }, |
| 82 | + { |
| 83 | + "title": "Videos", |
| 84 | + "links": [ |
| 85 | + { |
| 86 | + "icon": "π", |
| 87 | + "title": "Robot Controllers Part 1", |
| 88 | + "url": "/tracks/livestreams/livestreams/robot-controller-1", |
| 89 | + "description": "The first part of this series, where we coded a simulation of an inverted pendulum on a cart." |
| 90 | + }, |
| 91 | + { |
| 92 | + "icon": "π", |
| 93 | + "title": "Steering Behaviors", |
| 94 | + "url": "/tracks/the-nature-of-code-2/noc/5-autonomous-agents/1-steering-agents", |
| 95 | + "description": "This video covers steering behaviors, which are algorithms for autonomous agents to navigate their environment." |
| 96 | + }, |
| 97 | + { |
| 98 | + "icon": "π", |
| 99 | + "title": "Scalar Projection", |
| 100 | + "url": "/tracks/the-nature-of-code-2/noc/5-autonomous-agents/6-scalar-projection", |
| 101 | + "description": "This video covers scalar projection, used in the spring damping code." |
| 102 | + } |
| 103 | + ] |
| 104 | + } |
| 105 | + ] |
| 106 | +} |
0 commit comments