Here are notes connecting bits of knowledge I found useful in robotics. Don't hesitate to chime in the discussions if you have questions.
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 flexibility and force control
- Linear inverted pendulum model
- Point mass model
- Wheeled inverted pendulum model
Contact dynamics ¶
- Contact flexibility and force control
- Contact modes
- Contact stability
- Friction cones
- Twisting friction at surface contacts
- Wrench friction cones
- ZMP support area
Dynamics ¶
- Constrained equations of motion
- Equations of motion
- Forward dynamics
- 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
Control theory ¶
Robots ¶
Upkie wheeled biped
Upkie is an open source, homemade, self-balancing wheeled biped robot. Its wheels allow it to balance continually. Its legs allow it to go off-road and negotiate uneven terrains. Upkie is designed to be made at home using tools and components ordered online (like mjbots actuators) and open source software maintained on GitHub. The robot motions are coordinated by a Raspberry Pi that interacts over Bluetooth with a remote controller.
-
Code
A single repository with all the code and instructions needed to build and run an Upkie.
-
Project page
Project log, model files and discussion on Hackaday.io.
-
Videos
Videos of the robots in action, or being built.
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.
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.