Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement adaptive walk speed transition #1801

Open
schluis opened this issue Mar 16, 2025 · 2 comments
Open

Implement adaptive walk speed transition #1801

schluis opened this issue Mar 16, 2025 · 2 comments

Comments

@schluis
Copy link
Contributor

schluis commented Mar 16, 2025

When switching form WalkSpeed::Normal to WalkSpeed::Fast, we often fall if we were instable before.

  • Idea: Do continuous transition, interpolating between Normal and Fast
  • Only transition if we're currently leaning forwards and not backwards
@philipniklas-r
Copy link
Contributor

Judging from the parameters for the fast walk https://github.com/HULKs/hulk/blob/main/etc/parameters/default.json#L379, which is 0.01 faster than the normal walk in the forward direction, combined with the acceleration of 0.01 (https://github.com/HULKs/hulk/blob/main/etc/parameters/default.json#L379), I doubt that any transition between Normal and Fast would help with stabilization. The number of falls would only reduce, because the robots would walk at a lower walking speed on average if a lower acceleration was applied or the transition would only start when leaning forwards.

Otherwise one could argue, that a robot that is walking already fast for a few seconds and will keep walking fast is less or equally likely to fall as a robot walking slow and keeping to walk slow. The problem is more the faster walking speed itself, which distabilizes the robot more instead of the transition itself.

Therefore I recommend to either do one of the following, depending on your time:

  • Add the walk step adjustment (but as a correctly working version😉). Even a soft version which only does some slight forward/backward adjustments could be sufficient enough and could help with your In-Walk-Kicks.
    • Here I don't know whether you have an own torso rotation estimation or still using the one from the IMU. Should still work, but might result is some less strict thresholds, e.g. the adjustment can not be too aggressiv. Which should be fine, considering the first version a few years ago was actually too agressiv.
  • Use your torso_tilt_base and torso_tilt to tilt the robot more forward when walking faster forward. This could be more of a quick bandaid fix. Also I dont know whether the robots will fall more often when stopping as a result. Also this will effect your In-Walk-Kicks.

Apart from that, I am currently working on some statistics of the German Open last week. Once I am finished with that, it might be easier to identify whether walking is actually a problem, because the first impression is that it was better than in previous years.

@philipniklas-r
Copy link
Contributor

Just as an example from this GO25:
https://github.com/user-attachments/assets/a01dc908-8e0a-4299-8e2b-09d3a60b4029

Robot was tilted forward, because he previously was walking forward and stopped.
Starting with this clip, he starts walking forward again, but starts tilting backwards. The robot ignores that and keeps moving the legs more and more forward with each walking step. The (I think) fourth and last forward step with the right foot then destabilizes enough, because the robot is already tilted too much backwards.

Therefore the underlying problem is not the speed transition. Adjusting the step if necessary to prevent the robot, as I like to say, from doing stupid stuff should give the better results. Also if done correctly, there should be a lot less walk calibration to be done, as the robots can just adjust themself once every few walking steps. This in turn should free up a lot of time to programm cool stuff, instead of adjusting parameters for every robot :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Open
Development

No branches or pull requests

2 participants