Open schluis opened 1 year ago
As suggested by @schluis my thoughts for a next gen walking:
Learned walk/motion like in https://arxiv.org/pdf/2304.13653.pdf
Learning simple predictions
Classical compensation. Disclaimer: I did NOT test this idea yet
Torso orientation estimation
Reducing the yaw direction rotation speed
Another idea:
Preprocessing the FSR Sensor Data. Deciding when to switch the swing and support foot is a hard problem!
I am currently writing this down for our (B-Human) Wiki and noticed, that in your current implementation you do:
let left_foot_pressure = context.sensor_data.force_sensitive_resistors.left.sum();
let right_foot_pressure = context.sensor_data.force_sensitive_resistors.right.sum();
let has_support_changed = match self.swing_side {
Side::Left => left_foot_pressure > context.config.foot_pressure_threshold,
Side::Right => right_foot_pressure > context.config.foot_pressure_threshold,
};
if has_support_changed && self.t > context.config.minimal_step_duration { ...
This check ignores that the swing foot could have like 200g pressure while the current support foot has 5000g pressure. The current code would initiate a support foot switch which might be too early. This could also explains why your robots very rapidly start new walking steps when falling backwards and occasionally fall randomly to the side/diagonal (but this is just a blind guess from my side).
Compare the pressures of both soles
For a detected change, the swing sole must have more pressure than the support foot (so kind of similar to what you did before I think)
The swing sole must have a minimum pressure. You are using 200g for that. When I evaluated that 1.5 years ago I think 300g was a better fit.
Test around if the sensor weights from rUNSWift (0.8 factor for outer sensors, 0.3 factor for inner sensors) improve the detection. We never did that.
If the support foot switches occure to slow now, you might want to add some kind of prediction. HTWK Robots version did not work for us (but predicts 2-3 frames earlier) and ours needs some more overhead (and predicts about 1 frame earlier).
As an extra you could add an automatic calibration for the FSRs (so min and max pressures). I don't know if this improves the detection, but could make it more robust.
Walking by inverted pendulum
Walking with staightend knees
Regarding Stabilization