Robotics is interdisciplinarity: whether you're into mechanics, electronics, machine learning, control theory, numerical optimization, raptor hunting, etc., you can contribute! The following notes connect the dots between bits of knowledge I found useful for locomotion in particular. I hope they help. Shoot me an e-mail if you find anything inaccurate or imprecise (yes, accuracy and precision are not the same thing).
Wondering where to start? The notes below are sorted from locomotion-specific to general. They assume you already know what a controller is. I imagine you've reached this page by searching for a particular topic, but if you're browsing out of curiosity that's also great :-) In that case, I'd advise you check out the How do biped robots walk? overview.
- Capture point
- Floating base estimation
- How do biped robots walk?
- Linear inverted pendulum model
- Open loop and closed loop model predictive control
- Prototyping a walking pattern generator
- Tuning the LIPM walking controller
Contact dynamics ¶
- Contact flexibility and force control
- Contact modes
- Contact stability
- Friction cones
- Wrench friction cones
- ZMP support area
- Computing torques to compensate gravity in humanoid robots
- Constrained equations of motion
- Equations of motion
- Forward dynamics
- Joint torques and Jacobian transpose
- Knee torque of a lumped mass model
- Newton-Euler equations
- Point de non-basculement
- Principle of virtual work
- Recursive Newton-Euler algorithm
- Revolute joints
- Screw theory
- Zero-tilting moment point
- Inverse kinematics
- Jacobian of a kinematic task and derivatives on manifolds
- Kinematics jargon
- Kinematics of a symmetric leg
- Position and coordinate systems
- Revolute joints
- Screw axes
- Screw theory
- Spatial vector algebra cheat sheet
Pinocchio is a C++/Python robotics software that implements rigid body dynamics algorithms (recursive Newton-Euler, articulated-body, ...) and their analytical derivatives. In recent years it has become a de facto standard used in optimal control (Crocoddyl, OCS2), motion planning (HPP) and physics simulators (Jiminy). I started using it full-time with whole-body inverse kinematics in Pink.
OpenRAVE is a C++/Python robotics software for forward kinematics and inverse dynamics of robot models. It provides other features not listed here such as symbolic inverse kinematics for serial manipulators. I used it in my PhD and developed the pymanoid library to add whole-body inverse kinematics and model predictive control to it for prototyping humanoid walking controllers.
- Computing the inertia matrix
- Converting robot models to OpenRAVE
- Getting started with OpenRAVE
- Installing OpenRAVE on Ubuntu 14.04
- Installing OpenRAVE on Ubuntu 16.04
- Troubleshooting OpenRAVE installation
See also ¶
An Introduction to Lagrange Multipliers
How Lagrange multipliers arise from optimization constraints.
Conversion from least squares to quadratic programming
How to go from least squares to QP, which is slightly more general.
Quadratic programming in Python
The most common class of convex problems used in optimal control.
Experiments on angular momentum and torque.
How to integrate the equations of motion.
Some comments on the structure of the dynamics of articulated motion
My go-to writeup on the equations of motion.
The Principle of Least Action
A special lecture by Richard Feynman.