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.
Locomotion ¶
- 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
Models ¶
Contact dynamics ¶
- Contact flexibility and force control
- Contact modes
- Contact stability
- Friction cones
- Wrench friction cones
- ZMP support area
Dynamics ¶
- 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
Kinematics ¶
- 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
Software ¶
Pinocchio
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
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 ¶
Optimization
-
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.
Physics
-
Gyroscopic precession
Experiments on angular momentum and torque.
-
Integration Basics
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.