Ideas and software for the locomotion of homemade robots

Talk given at the R4 robotics working group on 20 June 2022.

Abstract

Moving away from big expensive robots to light homemade things (that can bump, fall on or be lifted by us with no harm) is a great way to revisit past design decisions and explore alternatives. Being incented to make robots cheaper, reduce their number of actuators and complexity, we end up with new morphologies that don't fit exactly the bill of previous ideas. Interesting things lie in this not exactly! In this presentation, we take a look at two existing ideas that are important in legged locomotion, contact stability and whole-body control, and see how they fit Upkie, a wheeled biped with a low-cost onboard computer. Another idea comes to the rescue: the theoretical and empirical evidence that balance control is a low-frequency task. We build open source software upon it that allows us to prototype most of our robot's brain in Python, while achieving its goals of balancing, crouching and going places.

Content

pdf Slides
github Software

Discussion

You can subscribe to this  Discussion's atom feed to stay tuned.

  • Avatar

    Stéphane

    Posted on

    The yaw slippage condition is rarely a problem for robots with rubber soles (like HRP-4) walking on regular floors, where the coefficient of friction between the two surfaces is usually μ0.7\def\bfA{\boldsymbol{A}} \def\bfB{\boldsymbol{B}} \def\bfC{\boldsymbol{C}} \def\bfD{\boldsymbol{D}} \def\bfE{\boldsymbol{E}} \def\bfF{\boldsymbol{F}} \def\bfG{\boldsymbol{G}} \def\bfH{\boldsymbol{H}} \def\bfI{\boldsymbol{I}} \def\bfJ{\boldsymbol{J}} \def\bfK{\boldsymbol{K}} \def\bfL{\boldsymbol{L}} \def\bfM{\boldsymbol{M}} \def\bfN{\boldsymbol{N}} \def\bfO{\boldsymbol{O}} \def\bfP{\boldsymbol{P}} \def\bfQ{\boldsymbol{Q}} \def\bfR{\boldsymbol{R}} \def\bfS{\boldsymbol{S}} \def\bfT{\boldsymbol{T}} \def\bfU{\boldsymbol{U}} \def\bfV{\boldsymbol{V}} \def\bfW{\boldsymbol{W}} \def\bfX{\boldsymbol{X}} \def\bfY{\boldsymbol{Y}} \def\bfZ{\boldsymbol{Z}} \def\bfalpha{\boldsymbol{\alpha}} \def\bfa{\boldsymbol{a}} \def\bfbeta{\boldsymbol{\beta}} \def\bfb{\boldsymbol{b}} \def\bfcd{\dot{\bfc}} \def\bfchi{\boldsymbol{\chi}} \def\bfc{\boldsymbol{c}} \def\bfd{\boldsymbol{d}} \def\bfe{\boldsymbol{e}} \def\bff{\boldsymbol{f}} \def\bfgamma{\boldsymbol{\gamma}} \def\bfg{\boldsymbol{g}} \def\bfh{\boldsymbol{h}} \def\bfi{\boldsymbol{i}} \def\bfj{\boldsymbol{j}} \def\bfk{\boldsymbol{k}} \def\bflambda{\boldsymbol{\lambda}} \def\bfl{\boldsymbol{l}} \def\bfm{\boldsymbol{m}} \def\bfn{\boldsymbol{n}} \def\bfomega{\boldsymbol{\omega}} \def\bfone{\boldsymbol{1}} \def\bfo{\boldsymbol{o}} \def\bfpdd{\ddot{\bfp}} \def\bfpd{\dot{\bfp}} \def\bfphi{\boldsymbol{\phi}} \def\bfp{\boldsymbol{p}} \def\bfq{\boldsymbol{q}} \def\bfr{\boldsymbol{r}} \def\bfsigma{\boldsymbol{\sigma}} \def\bfs{\boldsymbol{s}} \def\bftau{\boldsymbol{\tau}} \def\bftheta{\boldsymbol{\theta}} \def\bft{\boldsymbol{t}} \def\bfu{\boldsymbol{u}} \def\bfv{\boldsymbol{v}} \def\bfw{\boldsymbol{w}} \def\bfxi{\boldsymbol{\xi}} \def\bfx{\boldsymbol{x}} \def\bfy{\boldsymbol{y}} \def\bfzero{\boldsymbol{0}} \def\bfz{\boldsymbol{z}} \def\defeq{\stackrel{\mathrm{def}}{=}} \def\p{\boldsymbol{p}} \def\qdd{\ddot{\bfq}} \def\qd{\dot{\bfq}} \def\q{\boldsymbol{q}} \def\xd{\dot{x}} \def\yd{\dot{y}} \def\zd{\dot{z}} \mu \geq 0.7. But perhaps you have observed yaw slippage in RoboCup situations?

    • Avatar

      Grégoire Passault

      Posted on

      I'm not sure what the coefficient μ\def\bfA{\boldsymbol{A}} \def\bfB{\boldsymbol{B}} \def\bfC{\boldsymbol{C}} \def\bfD{\boldsymbol{D}} \def\bfE{\boldsymbol{E}} \def\bfF{\boldsymbol{F}} \def\bfG{\boldsymbol{G}} \def\bfH{\boldsymbol{H}} \def\bfI{\boldsymbol{I}} \def\bfJ{\boldsymbol{J}} \def\bfK{\boldsymbol{K}} \def\bfL{\boldsymbol{L}} \def\bfM{\boldsymbol{M}} \def\bfN{\boldsymbol{N}} \def\bfO{\boldsymbol{O}} \def\bfP{\boldsymbol{P}} \def\bfQ{\boldsymbol{Q}} \def\bfR{\boldsymbol{R}} \def\bfS{\boldsymbol{S}} \def\bfT{\boldsymbol{T}} \def\bfU{\boldsymbol{U}} \def\bfV{\boldsymbol{V}} \def\bfW{\boldsymbol{W}} \def\bfX{\boldsymbol{X}} \def\bfY{\boldsymbol{Y}} \def\bfZ{\boldsymbol{Z}} \def\bfalpha{\boldsymbol{\alpha}} \def\bfa{\boldsymbol{a}} \def\bfbeta{\boldsymbol{\beta}} \def\bfb{\boldsymbol{b}} \def\bfcd{\dot{\bfc}} \def\bfchi{\boldsymbol{\chi}} \def\bfc{\boldsymbol{c}} \def\bfd{\boldsymbol{d}} \def\bfe{\boldsymbol{e}} \def\bff{\boldsymbol{f}} \def\bfgamma{\boldsymbol{\gamma}} \def\bfg{\boldsymbol{g}} \def\bfh{\boldsymbol{h}} \def\bfi{\boldsymbol{i}} \def\bfj{\boldsymbol{j}} \def\bfk{\boldsymbol{k}} \def\bflambda{\boldsymbol{\lambda}} \def\bfl{\boldsymbol{l}} \def\bfm{\boldsymbol{m}} \def\bfn{\boldsymbol{n}} \def\bfomega{\boldsymbol{\omega}} \def\bfone{\boldsymbol{1}} \def\bfo{\boldsymbol{o}} \def\bfpdd{\ddot{\bfp}} \def\bfpd{\dot{\bfp}} \def\bfphi{\boldsymbol{\phi}} \def\bfp{\boldsymbol{p}} \def\bfq{\boldsymbol{q}} \def\bfr{\boldsymbol{r}} \def\bfsigma{\boldsymbol{\sigma}} \def\bfs{\boldsymbol{s}} \def\bftau{\boldsymbol{\tau}} \def\bftheta{\boldsymbol{\theta}} \def\bft{\boldsymbol{t}} \def\bfu{\boldsymbol{u}} \def\bfv{\boldsymbol{v}} \def\bfw{\boldsymbol{w}} \def\bfxi{\boldsymbol{\xi}} \def\bfx{\boldsymbol{x}} \def\bfy{\boldsymbol{y}} \def\bfzero{\boldsymbol{0}} \def\bfz{\boldsymbol{z}} \def\defeq{\stackrel{\mathrm{def}}{=}} \def\p{\boldsymbol{p}} \def\qdd{\ddot{\bfq}} \def\qd{\dot{\bfq}} \def\q{\boldsymbol{q}} \def\xd{\dot{x}} \def\yd{\dot{y}} \def\zd{\dot{z}} \mu is, but we observe yaw rotations sometimes, particularly during kicking motions.

  • Avatar

    Vincent Padois

    Posted on

    You oppose position and torque control, but isn't the relevant difference rather the decoupling between a low-frequency controller (position here) and the higher-frequency one?

    • Avatar

      Stéphane

      Posted on

      I agree that frequency is the important feature here. [Note: slides have been updated to reflect this.] Here the higher-frequency controller is the moteus position controller (despite its name it is actually a combined position, velocity and torque controller) which is updated on Upkie at 1 kHz by a Vulp spine process. Since the 2022-04-07 release, this controller actually implements velocity and acceleration limited trajectories which allow us to update targets less frequently. Instead of sending a short-term target, we specify a mid-term trajectory profile that the actuator should follow. More generally this profile needs not be linear, if it can run it fast enough the higher-frequency process could also solve a small model predictive control problem, as tried out e.g. in the DDP actuator solver.

    • Avatar

      Stéphane

      Posted on

      To provide a more balanced answer, it is not clear to me whether decoupling is something to seek out necessarily. Decoupling means that between two steps of the lower-frequency loop, the higher-frequency loop is done regulating its target to the best of its ability. Yet, in the walking controller from slide 16, we don't have such a decoupling: force control and admittance control run at the same frequency. This choice elicited colorful feedback from some people with a control-theoretical background we showed it to, and yet this is how walking controllers of this family (since the Honda P2) have been operating.

      • Avatar

        Grégoire Passault

        Posted on

        In this controller, is the model predictive controller (MPC) also running in the same loop? Is it a closed-loop MPC?

        • Avatar

          Stéphane

          Posted on

          It is indeed running in the same loop, which cycles at 200 Hz on HRP-4. However this one is less of a theoretical question mark because it is an open loop rather than closed loop MPC (also called a walking pattern generator).

          • Avatar

            Grégoire Passault

            Posted on

            So it is in effect a planner?

            • Avatar

              Stéphane

              Posted on

              Absolutely, it is a planner that unrolls trajectory as it goes.

Feel free to post a comment by e-mail using the form below. Your e-mail address will not be disclosed.

📝 You can use Markdown with $\LaTeX$ formulas in your comment.

By clicking the button below, you agree to the publication of your comment on this page.

Opens your e-mail client.