Video wird geladen...
Video konnte nicht geladen werden
much smoother after applying a low pass Butterworth filter with a 3hz cutoff. this filters out high frequency small movements (aka noise) in the trajectory, it also naturally attenuates the signal so makes the robot move slower, I’ve added a bit of gain back to compensate and speed it... show more
71,900 Aufrufe • vor 8 Monaten •via X (Twitter)
32 Kommentare

I'm using the scipy Butterworth filter These kinds of filters are implemented as 1d convolutions in the time domain and can easily run at robot control rates. I find it more intuitive to think about filters in the Fourier domain, so if you take the discrete Fourier transform of the robot trajectory, then a low pass filter is just multiplying anything above the cutoff frequency by zero (convolution theorem)

trajectories before and after apply the low pass filtering you can very clearly see one is smoother than the other

Nice work!

Thank you!

Nice improvement. Stability first, responsiveness second.

this is awesome!! if i wanted to recreate this, do you have your work in a repo? also do you think that upgrading to better servos with less backlash would help with smoothing the motion out even more?

thank you! I will make the code public soon along with a detailed technical blog. yes I think upgrading the shoulder pan and lift to STS3250s would help smooth things out even more. The STS3250 has a CNC'd aluminum housing, higher quality steel gears so has less backlash and more also has more torque. They are plug and play with the so101, but they are slightly larger and have a harder material so ideally need modify the so101 joints to be a little bigger so they fit nicely without too much force

so smooth, good job!

Thank you!

NOTED

Interesting. I had tried smoothing, but a cutoff is a great idea

worth a try, it’s simple to implement, you can manually try cutoffs or you can look at the Fourier transform of the trajectories and base it on the power spectrum distribution

Nice!

wow. This is so much harder than it seems. Woww

Excellent smoothing

Thank you!

Love this. Filtering the jitter is the difference between “cool demo” and something people actually trust watching in a room. The slower move is often a feature too, humans read it as more intentional.

Have you ever tried median filtering? I used that once to get rid of transients in an oscilloscope signal.

I haven’t but that I want to try it now, sounds like has favorable characteristics. The Butterworth is somewhat heavy handed for sure

This is awesome. Timeline needs more of this.

Very smooth.

Nice, it is looking really smooth. Doesn't have any of that servo jitter I am used to seeing in the even simpler 3d printed robot arms

butterworth filters are so satisfying when they click. clean trajectory = happy robot

so you filtered out the noise but forgot to filter out the incompetence. smooth moves don’t fix dumb code.

are the servos digital or analog?

Ya. Smoothing is important until you get to a certain data scale. You may also want to implement an immutable region that takes care of prediction latency. Pin the first portion of the trajectory and treat it like an infill or sentence completion problem. If your model latency is longer than execution latency, you’re not where your model thinks it was when it starts planing.

Well, its obvious you're not working with a "blue chip" robot controller.(Yaskawa, Denso, ABB....) You're battling open loop. closed loop or positioned based encoder motion profiles with sub par motor, amps, control mechatronics. Keep up the good work when exploring motion control of decades past but know the good stuff is up next.

this is low cost so101 robot with LeRobot open source framework that is focused on physical AI. Here I’m running SmolVLA model (a neural net), stereo images and current motor positions are input to model and the output is a sequence of motor positions. So in some ways it’s quite different from traditional control but methods like signal processing and PID control that have been around for the better part of a century are still useful

Might want to try a One Euro filter. It has adaptive cutoff frequencies so you can move faster and then apply more aggressive filtering only when moving slowly. It's also super fast to compute.

Interesting

Very nice? Now can you speed it up?

@grok where can I buy this robot?
