Rocket-on-rail

Intro to Robot Simulation, Part 1: Point Masses

So, you want to write your own dynamic robot simulation from scratch. Let’s start with one of the simplest possible dynamical systems: a vertically constrained point mass. Think of it as a rocket locked to a linear rail. The rocket cannot rotate or translate laterally; it can only move up or down, and can it only control this by either exerting an upward force or letting gravity take its course....

February 18, 2024 · 7 min · Ben Bokser

Deriving the Manipulator Equations from the Euler-Lagrange Equation

The equations of motion for a robot manipulator and their relationship to the Euler-Lagrange equation are well known in the field of robotics, and yet I was unable to find a single source that provides the derivation. I suppose it’s one of those “the solution is trivial and is left as an exercise to the reader” situations. As such, I’m providing one here for dummies like me who need it spelled out step-by-step....

March 6, 2023 · 2 min · Ben Bokser

Stable Bipedal Walking in Simulation

In late 2019, I designed a custom QDD gearbox. Then I designed a bipedal robot with said gearing. By early 2020 I was spending about an hour per day after work coding a controller for the bipedal robot I had designed. In that time I learned a great deal of Python, and my controls proficiency skyrocketed. Then I started grad school and had to put this project on hold for about six months....

July 20, 2021 · 1 min · Ben Bokser

Model Predictive Control for a Legged Robot

I have recently implemented a model predictive controller (MPC) to calculate the necessary reaction forces for a legged robot. The work presented here is based on this paper by Kim et al. If you don’t know what model predictive control is, I recommend this excellent explanation by Steve Brunton. I also found this guide to model predictive control with CasADI to be extremely helpful. CasADi is an open source nonlinear optimization tool which I’m using for MPC....

October 12, 2020 · 13 min · Ben Bokser

Solving for the Jacobians of a Robot Leg

I’m currently working on the Python code to control a simulated version of my latest bipedal robot design in PyBullet. My focus over the past few weeks was getting the operational space control to work (many thanks to Travis DeWolf’s incredibly helpful blog). After finally getting it to work properly, I have decided to share my math in the hopes of providing a useful example for anyone else having trouble with this....

May 4, 2020 · 7 min · Ben Bokser