Sunday, March 19, 2017

Building robots with dynamic walking abilities

It’s often thought that Computer Science is only related to personal computers and learning how to code. However, computer science is a broader field than that. Computer science plays a key role in all our lives. From security, to algorithms, to networks etc. Computer science, even extends its effect to our future through the study of robotics, artificial intelligence and motion planning. I, personally, am passionate about motion planning and robotics.
To begin with, let me start by explaining the theoretical side of designing a robotics system that’s bounded by a set of variables. The process is based on trajectory optimization and randomized motion planning. Theoretically, we should be able to solve any complex systems using that process. However, in reality complex systems don’t behave as nicely and trajectory optimization doesn’t work as it's hoped.
Complex systems are the ones that involve limited control authority and non-linear, making them tough to discretize well. So, simple dynamic programming methods such as evaluating variables with a couple of equations and proofs fail to deal with the robustness of a system. It also can’t deal with the large discretization errors that are difficult to bound.
What’s the alternative?
The alternative starts from our experience with robust control on motion planning. For instance, fighter jets managed to manipulate linear systems for great results in stability. Furthermore, the lecturer argues that we could benefit from that experience, and build on it to deal with multidimensional systems.
Many approaches try to address multidimensional systems. Main approach, and the one the lecturer argues for, is based on lyapunov function.
Lyapunov function based approach
Lyapunov functions behave as better methods for calculating functions with complex uncertainties. Instead of trying to tackle complex systems with just differential equations. Since, lyapunov functions are based on the generalization of energy and finding a positive scalar function to relate the variables to. To illustrate all of that, let's think of a really simple machine, the pendulum. We can't just usea physical equation for the motion because it won’t be able to account for the uncertainty nicely. So, we could  use lyapunov function to picture the graph of the pendulum’s motion. Then we look for the fixed points and the recurring patterns for a more accurate local analysis.
What made lyapunov functions more appealing approach nowadays is how simple it has become to find one using bilinear optimization.
The Lyapunov-function approach in practice
Lyapunov functions are not alternative for mathematical equations in our system. The whole idea behind lyapunov functions is to make the equations simpler to understand, and to reduce the effect of the uncertainty. Furthermore, lyapunov function approach is applied in practice using funnels with calculated values for the differentiating variables, and with motion the properties of the funnels are edited accordingly.
The lyapunov approach still requires a lot of planning and is still difficult to implement for runtime constraints. That being said, the lyapunov approach was able to combine the combinatorial complexity from motion planning to the dynamic complexity from lyapunov, which eased dealing with complex real-life systems, and enabled practical feedback design.

Lastly, Lyapunov approach also paved the way for many new ideas to be tried out such as rational polynomial approximation and many more to come.