-
Notifications
You must be signed in to change notification settings - Fork 5
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
Making a test joint to validate control loop improvement #9
Comments
Just a nit pick: |
Ideas for test hardware:
|
"Crossed Roller Bearings are /crazy/ expensive."
Is this due to current supply chain issues or that's always been true?
If the former, not so bad for a few to experiment with but
long term, you know I like low cost.
…On Sat, Dec 21, 2024 at 1:55 PM JamesNewton ***@***.***> wrote:
Ideas for test hardware:
- "Cheese plates" are basically cheap, little optical breadboards for
camera gear. An easy and portable platform for building.
- Plumbing "faucet extension adapters" are available with threads on
the outside and about a 1/2 inch hole in the middle. They also have
flange(ish) nuts which should work to hold the encoder disk and perhaps
pack the cross roller bearings into the sides. I also found these generic
parts <https://www.ebay.com/itm/186674139277>, but only from the one
source. Not sure how to keep them centered in the bearings; a "ramp" on the
ID of a nut which drives into the center of the bearing? I can't seem to
find an industrial source for a tube (not a rod) threaded on the outside.
McMaster has "Hollow Threaded Stud" but the threads stop in the middle.
- Crossed Roller Bearings are /crazy/ expensive. It might be worth
starting with bushings, but I really want to avoid stiction as it messes up
the graphs. Perhaps the best option is combining a standard roller bearing
with a flat thrust bearing as these are not terribly expensive.
—
Reply to this email directly, view it on GitHub
<#9 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAJBG7NNQNQ3SQBKZ6VOCUT2GW2QVAVCNFSM6AAAAABTU4AGWOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJYGIYDIMRSGA>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Thanks to the promise of a kind donation, I've ordered the bearings listed above. I'm looking for a local supplier of the ebay threaded tubing and flange nuts, but I'll probably just order those as they are not expensive and /sometimes/ stuff from China comes quickly, but if I order it now, it will get here before the end of time. I'm still looking into components for the box. Some of these "cheese plates" have holes on the /edges/ which means they could be attached as the /sides/ of a box made with a cheese plate bottom. Here is another, larger, one, which could be the base plate, but with holes on the side where a smaller regular plate could attach to make the sides. And then maybe just a sheet steel or clear plastic cover on top. For the final product, it should be a closed up box to avoid light pollution and dust, but for a demo / development version, it's fine if it has holes and lets some light / dust in. The holes won't admit electrical noise (faraday cages are often just metal screens). |
The "Generic Pipe Adapter" has an OD slightly larger than the ID of the bearings, so to grind down those threads, the old trick of spinning it with a drill while grinding with a dremel is used. Chucking the pipe isn't possible in a simple drill, or drill press (it would need a lathe chuck) so a 3D printed spindle adapter can be used: Note that the fn parameter is reduced on the outer diameter to provide high points which can be mashed down, and set to 6 on the inner diameter to mate with a hex drive. Then a philips or star bit can be inserted with the hex drive in the plastic, and the (round) bit shaft in the drill chuck.
I ended up using a wood bit with a round shaft and a hex end which chucked nicely and allowed me to support the cylinder at both ends with the bit in the workbench. That combined with the dremel to get it close and a flat file to finish. Video in the photo album: Next is to get some cheese plates and figure out how to drill out the larger holes for the tube / shaft. |
I've realized that finding a cheese plate with a hole large enough to support this tube is not going to be possible, so I'm switching to using pillow bearings. These have a nice set screw and are the same size ID. I really wish there was a competent fabricator in the area who could work with metals. I don't want to use plastics because plastic is plastic, and I want something stiff to ensure I'm really reading the position of whatever link I connect and not the deformation of the joint mount. |
The encoder provides a capability that I believe is not well understood in control systems. First some background:
Good Tracking w/o Complex Control
Why don't the joints on the Dexter robot oscillate over a wide range of loads? Good question. I've spent years trying to understand it. I think there are two answers:
Rate vs Force output The output goes to a rate generator which steps a stepper motor. Most PID systems send a voltage to a DC motor. This represents a force based control vs a velocity based control. This makes the I term in the PID control redundant. The output as a velocity just regulates the speed of the correction; faster when the error is large, slower as the error decreases, but never going to zero until the position is perfect. Compare that to a force based output, where there is no force unless there is some positional error. This allowed lower PID_P settings, while still providing complete reduction of positional error.
Encoder sensitivity The need for a D term (derivative, prediction of the future) or other "thinking ahead" type compensations increases as the time required for the control loop to react increases. If your control loop is slow, you need better predictions to avoid under or over compensation. But the converse is also true: If your control loop is fast, you don't need to rely on those predictions as much. You can compensate for an error quickly, before it gets out of control. I was told for years that the FPGA is what made that speed of correction possible, but recently, I've had a revelation: The time it takes for a change in position on the joint to be reported by a low CPR encoder absolutely swamps any other time delays in the system. It's the
encoder
having a stunning CPR (over 100,000 CPR) that speeds up the loop!To validate (or disprove) this idea, I need a better physical rig for testing: One that has not only an encoder operated by hand, but a full joint with links to attach loads, a transmission, gearbox, motor, and motor driver. And if that's going to happen, there are some features I think it should have:
Mechanical Design
These design requirements seem clear to me, and are based on many years of experience in the field; watching what goes wrong, and wondering why the obvious issues aren't addressed. Usually, a lack of time was blamed.
Having said that, these mechanical goals are (likely) beyond my ability. I am not an ME, and my fabrication skills are minimal. To that end, I would deeply appreciate any offers of collaboration. Either to help me understand why my goals are wrong, or to design and fabricate a working system. Coupled with the (now) working Ras Pi Pico based encoder design, I firmly believe this could be a game changer in robotics in general, and open source hardware specifically.
The text was updated successfully, but these errors were encountered: