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

Refinement of Turnkick Parameters and Behavior #1524

Open
schluis opened this issue Nov 28, 2024 · 1 comment
Open

Refinement of Turnkick Parameters and Behavior #1524

schluis opened this issue Nov 28, 2024 · 1 comment

Comments

@schluis
Copy link
Contributor

schluis commented Nov 28, 2024

The Turnkick implementation has several parameter and behavior inconsistencies that need to be addressed for improved performance and stability. Below is a detailed analysis and proposed solutions:


1. Turnkick Rotation Behavior

  • Prestep Rotation: The robot rotates by "turn": -0.8.
  • KickStep Rotation: The robot rotates by "turn": -0.2.

This creates the following scenarios depending on whether the sign changes with the foot switch:

  • If the sign changes, the total rotation sums to ~1 radian (approx. 54 degrees).
  • If the sign does not change, the total rotation is -0.6 radians (approx. 34 degrees).

2. Configured Kick Direction

The configured kick direction is set to 0.9 radians. This seems inconsistent with the actual behavior, suggesting calibration or parameter alignment issues.

  • Observed behavior during RoboCup (RC) and RoHOW testing:
    • The robot appeared to expect a larger shot angle, but the actual kick had a smaller angle. This aligns with the cumulative rotation (-0.6 radians) versus the configured direction (0.9 radians).

3. Proposed Adjustments

Forward Speed Adjustment
  • Current "forward": 0.06 corresponds to a movement speed of approximately 240 mm/s, which is very fast for a single walking step.
  • Suggestion: Reduce "forward" to 0.03. This would likely:
    • Improve stability and reduce fall risks.
    • Maintain reasonable shot range.
Timing Adjustment for Shot Step
  • Consider extending the walking height interpolation during the kick step. This allows:
    • The kicking foot to stay in the air longer.
    • Joint offsets (e.g., HipPitch) to recover closer to zero before foot contact, mitigating lagging issues.
Directional Calibration
  • Verify if the Turnkick aligns with the intended shot direction:
    • Determine if parameter changes affect accuracy positively or negatively.
    • Ensure the behavior matches expectations for shot angles.

Summary

  • Evaluate and align Turnkick rotation (Prestep and KickStep) with the intended kick direction.
  • Adjust forward movement speed and timing to improve stability and performance.
  • Verify calibration and behavior consistency during testing.

Best regards,
Philip

@philipniklas-r
Copy link

Comments

This creates the following scenarios depending on whether the sign changes with the foot switch:

  • If the sign changes, the total rotation sums to ~1 radian (approx. 54 degrees).
  • If the sign does not change, the total rotation is -0.6 radians (approx. 34 degrees).

Observed behavior during RoboCup (RC) and RoHOW testing:

  • The robot appeared to expect a larger shot angle, but the actual kick had a smaller angle. This aligns with the cumulative rotation (-0.6 radians) versus the configured direction (0.9 radians).

Judging from the final day of the RoboCup, I think If the sign changes, the total rotation sums to ~1 radian (approx. 54 degrees). is true. I observe that the feet will sometimes turn a bit inwards for the kicking step. Therefore the the configured direction (0.9 radians) is probably a calibrated value (done on 20. April).

The underlining problem here is that the complete kick step will evenly interpolate from the starting rotation to the end rotation. Therefore the full rotation finishes at the end of the step. But the ball is not kicked at the end of the step but during the step. Therefore the turn rotation is still in progress to being interpolated.

Now you "could" assume that the ball will always be kicked approx. at the same time, lets say 80% of the step duration. But here the NAO likes to say "hold my beer" and behaves differently depending on the previous walk step (the prestep). As seen below, in my master thesis I tested our turn kick and noticed, that the execution part of the rotation can differ, because the Hip Yaw Pitch joint (which executes the turn) can lag behind. In the example the lag occured because the robot was walking previously forward, while when stopping before the lag is smaller (instead of about 5 motion frames just the typical 3 motion frames).

image

Also the robot might slip during the kick step. Those errors will add deviations to the kick direction. (And atleast the slipping is still a huge problem for us at B-Human 🥲).

Recommendation

Handle the stability problem in this issue and calibrate the kick direction value. In a separate issue tackle the deviation problems, as those are harder to solve.

If the kick ranges become shorter, use the joint offsets to add some strength back.

Deviations

Our ideas to reduce the deviations consists of the following:

  • Interpolate to the target turn rotation before the step ends. This could mean something like reaching the target rotation after 80% of the step duration. The translation part is interpolated as normal.
  • Shift the feet inwards during the prestep. This means that in the prestep (the one before actual touching the ball) the swing leg is slightly moved to the support foot. Afterwards the robots center of mass will be deeper inside the supporting foot during the kick step (which was previously the swing foot we just moved inwards). This reduces the slipping and also reduces the risk of the kick step ending too early (e.g. instead of your planned step duration 260 ms, the step could otherwise end early after about 200 ms)
  • Increase the duration used for the step height interpolation (but just for the kick). This also ensure the step can finish without an early support foot switch, but also giving the joint offsets some more time go back to 0.

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