Auto-Calibration - $100 Bounty and Bragging Rights

User-Generated tips and tricks for the Rostock Max, Orion, H1.1, or H1 Printers
User avatar
JohnStack
Printmaster!
Posts: 852
Joined: Thu Jan 03, 2013 7:07 pm
Location: Carlsbad, CA
Contact:

Auto-Calibration - $100 Bounty and Bragging Rights

Post by JohnStack »

I'm offering this personally since I think it needs to be solved... [edited]

Looking at this (other) machine's blog, I'm thinking auto-calibration is overdue and I can't do anything about it. http://www.blueeaglelabs.com/blogs/news ... structions

I'm putting out $100 (and hoping SeeMeCNC will match me) for the following:

1. An auto-calibration system that requires a minimum amount of configuration and changes by the user. This can be with a needle dial adapter and a strong set of instructions, a clip on hall effect sensor, frickin' laser beams on sharks, resistor sensors (http://www.phidgets.com/products.php?product_id=3104" onclick="window.open(this.href);return false;) etc.

2. Documentation with pictures - a word doc that is worthy of Geneb's (or better, sorry Gene) standard. Documentation should include a BOM with links to suppliers, links to thingiverse files if it's a clip on thingy, and a very good description of what the script/process does.

3. A complete cost for less than $100 to the end user - including devices they might be required to purchase.

4. An aerospace machinist's level of quality and thoroughness applied to both the device, script, and/or process.

Preferred Behaviors of System (in my order...)
1. Firmware that includes the script to calibrate. (G29?)
2. A script to be pasted into Repetier G-code.

Other Caveat's/Requirements:
1. This must work for a variety of head configurations on a base Rostock platform.
2. The user must be able to get the proper settings for their head / bed from this system to provide optimal printing results.
3. This process must not take the user more than 10 minutes after they have walked through it once.

I'll let Steve W and John O be judges...bwahahahahah.
Last edited by JohnStack on Mon Mar 03, 2014 4:49 pm, edited 1 time in total.
Technologist, Maker, Willing to question conventional logic
http://dropc.am/p/KhiI1a" onclick="window.open(this.href);return false;
User avatar
Jimustanguitar
ULTIMATE 3D JEDI
Posts: 2631
Joined: Sun Mar 31, 2013 1:35 am
Location: Notre Dame area
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Jimustanguitar »

JohnStack wrote:This can be with a needle dial adapter and a strong set of instructions, a clip on hall effect sensor, frickin' laser beams on sharks, etc.
+$100 from me if it actually includes a shark!
User avatar
Eaglezsoar
ULTIMATE 3D JEDI
Posts: 7185
Joined: Sun Apr 01, 2012 5:26 pm

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Eaglezsoar »

I think being in Vietnam effected you more than you know! :lol:
Chrissi
Printmaster!
Posts: 159
Joined: Sat Feb 15, 2014 9:20 pm
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Chrissi »

I will say it gain, spray wet glass, squeegee some HD alum foil to the glass, clip lead to hot end, clip lead to foil, plug one into Arduino digital inputs other to ground (are we hosed on the Rambo or does it have inputs?) ... do rough manual calibration to determine about where glass is so it can rapid to the neighborhood then creep down to the surface and probe it's little heart out. That's the easy part, code warrior(s) needs to do rest.
No need for fussy probe :geek:
...Chrissi

Rostock MAX
http://www.CozyGirrrl.com" onclick="window.open(this.href);return false;
User avatar
JohnStack
Printmaster!
Posts: 852
Joined: Thu Jan 03, 2013 7:07 pm
Location: Carlsbad, CA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by JohnStack »

:D If the mini kossel can do it, the MAX can!!!

http://reprap.org/wiki/Kossel#Automatic ... ling_probe" onclick="window.open(this.href);return false;

or with a single force resistor gadget.

I'm going to try this on a mini...sometime.
Technologist, Maker, Willing to question conventional logic
http://dropc.am/p/KhiI1a" onclick="window.open(this.href);return false;
wildideas1
Printmaster!
Posts: 99
Joined: Wed Jun 06, 2012 3:59 pm

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by wildideas1 »

i was wondering if the kossel delta can auto cali bed what is issue that rostock cannot ??
User avatar
JohnStack
Printmaster!
Posts: 852
Joined: Thu Jan 03, 2013 7:07 pm
Location: Carlsbad, CA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by JohnStack »

I wish I knew!!!
Technologist, Maker, Willing to question conventional logic
http://dropc.am/p/KhiI1a" onclick="window.open(this.href);return false;
bubbasnow
ULTIMATE 3D JEDI
Posts: 1064
Joined: Fri Aug 02, 2013 4:24 pm
Location: Dayton, WA

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by bubbasnow »

this is for pla only

http://youtu.be/HcnhCNh2Ln4

but this only will align the bed plane...it doesnt account for warping due to heating bed
User avatar
DavidF
Printmaster!
Posts: 779
Joined: Thu Aug 29, 2013 12:12 pm
Location: Delaware

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by DavidF »

Chrissi wrote:I will say it gain, spray wet glass, squeegee some HD alum foil to the glass, clip lead to hot end, clip lead to foil, plug one into Arduino digital inputs other to ground (are we hosed on the Rambo or does it have inputs?) ... do rough manual calibration to determine about where glass is so it can rapid to the neighborhood then creep down to the surface and probe it's little heart out. That's the easy part, code warrior(s) needs to do rest.
No need for fussy probe :geek:
Or conductive glue stick of hairspray....
http://www.youtube.com/user/aonemarine" onclick="window.open(this.href);return false;
Lost pla castings? see me
neurascenic
Printmaster!
Posts: 217
Joined: Fri Nov 15, 2013 10:05 pm
Location: Denver Colorado
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by neurascenic »

To do this right, wouldn't one need steppers connected to the end stop screws to adjust them automatically?

the motors could get a real nice fine tune step/TPI pretty fine control.

To even consider this on the cheap, you could bank switch the controller so that it can control multiple motors at different times.
Might exceed the $100 Brick wall though.


Would that be multiplexing? gosh, it has been a long time since College.
I am a fool entrapped within my own wisdom.
User avatar
Jimustanguitar
ULTIMATE 3D JEDI
Posts: 2631
Joined: Sun Mar 31, 2013 1:35 am
Location: Notre Dame area
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Jimustanguitar »

neurascenic wrote:To do this right, wouldn't one need steppers connected to the end stop screws to adjust them automatically?
The limit switches would become 'physical limit' switches, and not calibration or leveling adjustments. The idea is to make the software know where X0,Y0,ZMax is from the ZProbe and adjust everything else accordingly with special programming in the firmware.
User avatar
lordbinky
Printmaster!
Posts: 755
Joined: Sat May 18, 2013 3:53 am
Location: Tri Cities Washington

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by lordbinky »

Just from a design standpoint I'm not coming up with a method that doesn't use 12 points and multiple runs with a z-probe without leaving things uncorrected.

Ideally I'd want my dial indicator to have a potentiometer in it so we could have an analog readout of the height to calibrate from instead of hit/miss zprobe triggers.
User avatar
Captain Starfish
Printmaster!
Posts: 962
Joined: Tue Dec 10, 2013 5:24 am

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Captain Starfish »

Depends on the problem you're trying to solve with this autocalibration.

Accounting for a non-planar bed (warped, curved, whatever) is pointless because what we're trying to print is flat. So a non-planar bed could only be corrected for by printing a raft which fits the bed on the bottom and is flat on the top. But then again, printing two or three or four layers of flat raft will have much the same effect.

Correcting for spherical errors (concave/convex) in the delta geometry as we do with horiz-radius now, or a planar bed which is not orthogonal to the Z travel of the delta (bed rotated in X/Y, what we do manually with the end-stop adjustments now) only requires centre point and three perimeters but this would have to assume that the bed is planar. I like the way MatterControl does this inline, I guess it's measuring the offsets and applying them as an inline filter to the G-Code coordinates passing through.

Limit switches on the top make sense, on the bottom surely that'd be what your z-probe is for?
0rionN00b
Printmaster!
Posts: 71
Joined: Sun Feb 23, 2014 4:21 pm

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by 0rionN00b »

Captain Starfish wrote:Depends on the problem you're trying to solve with this autocalibration.

Accounting for a non-planar bed (warped, curved, whatever) is pointless because what we're trying to print is flat. So a non-planar bed could only be corrected for by printing a raft which fits the bed on the bottom and is flat on the top. But then again, printing two or three or four layers of flat raft will have much the same effect.

Correcting for spherical errors (concave/convex) in the delta geometry as we do with horiz-radius now, or a planar bed which is not orthogonal to the Z travel of the delta (bed rotated in X/Y, what we do manually with the end-stop adjustments now) only requires centre point and three perimeters but this would have to assume that the bed is planar. I like the way MatterControl does this inline, I guess it's measuring the offsets and applying them as an inline filter to the G-Code coordinates passing through.

I would say the opposite - the probe needs to be able to do multiple point measurements - because NO bed is perfectly flat for long (even if you can buy one that's originally flat).

I haven't looked 'under the hood' - so i dunno if there's more than one '0' setting for Z or not. it seems to me that the need for 10-20 points of Z0 measurement would be the answer - because that's what's going to fix the issue of a non-planar bed.....
dtgriscom
Printmaster!
Posts: 210
Joined: Sun Feb 09, 2014 10:15 pm
Location: Wakefield, MA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by dtgriscom »

As an intermediate solution (that may not earn JohnStack's bounty), what about a software-only tool with no added probe? The tool would place the nozzle over a point on the bed, and then give the user a smooth, easy control to bring the nozzle down to the surface of the bed (minus a sheet of paper). When the height was adjusted, the user would click "OK", and the tool would move the nozzle to a new spot to probe, and repeat. After probing in front of each tower and at the center of the bed, the tool would calculate offsets for each of the end stop points and the horiz-radius value and then write it all to the EEPROM.

Let's say 30 seconds to move the nozzle down until it's just touching the bed, plus ten seconds to click "OK" and watch it move to the next point. That's 40 seconds per calibration point, or a total of three minutes for the four points I mention above. Add a couple of minutes to remember how to use the tool, and that's five minutes to do it all.

How much better would a solution with an automatic probe be? You'd save the time to manually calibrate each point, or three minutes per calibration. Do a hundred calibrations, and that's five hours saved. But, just about any calibration probe you'll find is going to take at least five hours of investment to assemble, install, wire and configure.


Just a thought,
Dan
geneb
ULTIMATE 3D JEDI
Posts: 5362
Joined: Mon Oct 15, 2012 12:47 pm
Location: Graham, WA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by geneb »

An auto-calibration system has to perform a LOT of repeated probes. On the deltabots list a machine took about an hour to finally solve out. The best solution I've seen yet involves FSRs (force sensing resistors) under the build surface, but there's been some issue with their temperature ratings. Mhackney has been playing around with this a bit.

I'm not going to get anywhere near it until they've got the code ported to Repetier (it's in Marlin now). I'm not taking 100 steps back just to get something I can do by hand. :)

g.
Delta Power!
Defeat the Cartesian Agenda!
http://www.f15sim.com - 80-0007, The only one of its kind.
http://geneb.simpits.org - Technical and Simulator Projects
0rionN00b
Printmaster!
Posts: 71
Joined: Sun Feb 23, 2014 4:21 pm

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by 0rionN00b »

geneb wrote: I'm not going to get anywhere near it until they've got the code ported to Repetier (it's in Marlin now). I'm not taking 100 steps back just to get something I can do by hand. :)
g.
I'm a bit with you, although (it seems to me)this really needs to become soemthing that's integrated into the controller (not requiring a Repetier or other software to run)...

IMHO, bed leveling really MUST become an integral part of any 3d printer, if it's going to become "mainstream" anytime soon.

A side benefit of figuring this out could lead directly to a decent 6 axis printing platform - because when you "know" precisely where the head is at all times, a LOT of new avenues are opened up..
Polygonhell
ULTIMATE 3D JEDI
Posts: 2430
Joined: Mon Mar 26, 2012 1:44 pm
Location: Redmond WA

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Polygonhell »

You really need to specify what you are trying to solve with auto calibration.
Setting the Z height is easy enough, requires 1 sample.
Calibrating for bed skew (i.e. Z height at each tower) requires 4 samples.
Fixing Delta Radius, requires 4 samples, but only if other than that value every other measurement is perfect, and the numbers involved are small enough that you might have to do it repeatedly to converge.
Correcting for arbitrarily bad geometry is a lot harder. All the values interact, Trying to do it piece meal, fix A then B then C would minimally require an iterative process, and the equations are probably too complex to solve directly. You could probably take a plate of samples and come up with a possible solution using iterative methods, but there is always the chance of a local minima.

It's a lot easier on a cartesian machine because in general you're just solving for Z of the bed vs the head position, if the beds flat then that's 3 sample points.
User avatar
JohnStack
Printmaster!
Posts: 852
Joined: Thu Jan 03, 2013 7:07 pm
Location: Carlsbad, CA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by JohnStack »

Let's say we set a standard that's fit for aeronautics:

More points on the plane = better geometry or map of the bed surface. Having the ability to set the number of points during what I would call Bed Surface Geometry or a "Bed Surface Map" would be great! (This is based on the assumption that there would be a number of high and low spots.)

Different temps may affect a bed's surface. How would that be accommodated?

Other points:

The firmware would have to accommodate a "Bed Surface Map". This would likely have to be configurable in the firmware.

And I want to take this time to say thanks. I didn't throw it out there just to see if someone could do it. I put out the reward because I think someone might take on the challenge and get it done. In no way does the bounty match up to the amount of effort this would take. /jws
Technologist, Maker, Willing to question conventional logic
http://dropc.am/p/KhiI1a" onclick="window.open(this.href);return false;
User avatar
Jimustanguitar
ULTIMATE 3D JEDI
Posts: 2631
Joined: Sun Mar 31, 2013 1:35 am
Location: Notre Dame area
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by Jimustanguitar »

I think that both a quick spot check and a full calibration map are necessary. You'd want to do the full calibration with a dozen or more points the first time to set your diagonal rod length, horizontal radius, carriage and platform offsets, and z height/leveling; and you'd want to do a quick check with only 3 or 4 points periodically afterwards (or after transporting your machine) to check for leveling and heat expansion.

Several of the things that the full blown bed leveling process would calculate are not variables that should change under normal circumstances.




This is starting to get exciting. I really hope that smarter people than me are making progress on this!
dtgriscom
Printmaster!
Posts: 210
Joined: Sun Feb 09, 2014 10:15 pm
Location: Wakefield, MA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by dtgriscom »

Polygonhell wrote:You really need to specify what you are trying to solve with auto calibration.
Setting the Z height is easy enough, requires 1 sample.
Calibrating for bed skew (i.e. Z height at each tower) requires 4 samples.
Fixing Delta Radius, requires 4 samples, but only if other than that value every other measurement is perfect, and the numbers involved are small enough that you might have to do it repeatedly to converge.
Correcting for arbitrarily bad geometry is a lot harder.
I can't see putting lots of effort into fixing a bed that isn't flat, as none of the choices are all that good. I'd prefer to buy what I need to have a flat bed, and then correct for any offsets/skew.

If you are going to try to compensate for a non-flat bed, I see a few options (in increasing order of complexity):
  • Find the closest plane to the surface of the bed, and have the head move across that plane. You might have adhesion issues at some points, but the resulting object would be straight.
  • Warp the model's Z positions to match the warp in the bed. You'd get good adhesion, but you'd end up with a warped object.
  • Warp the model to match the warp in the bed, but reduce this warping gradually over the first few layers. You'd get good adhesion and a fairly straight object.
  • Do a "fill in" process before the first official layer of the model, adding material to fill in the bed's low points. You'd end up with no adhesion issues and a straight object. You could also do this with a removable raft.
Except for when using a raft, the bed surface of the model would always be warped.
Jimustanguitar wrote:I think that both a quick spot check and a full calibration map are necessary. You'd want to do the full calibration with a dozen or more points the first time to set your diagonal rod length, horizontal radius, carriage and platform offsets, and z height/leveling; and you'd want to do a quick check with only 3 or 4 points periodically afterwards (or after transporting your machine) to check for leveling and heat expansion.
I don't think you can correct for arbitrary geometry problems by only measuring the Z offset. You'd need to measure where on the bed the head was contacting, which would be tough to measure with any precision unless we did something like print a calibration pattern on the bed and then use a fixed camera to evaluate it. Let's say you have a 12MP camera that covered the bed; that would be about 3k pixels across a 280mm diameter bed, or about 10 pixels/mm. You'd lose some of this because of fuzziness, but could recover some more by taking lots of images and stacking them. 'Twould be an entertaining machine vision problem, but solvable. (It's fun thinking about the effector motions you'd program to get it and the arms out of the way of the camera.)

Assuming you're dealing with a flat bed, and assuming you're only measuring the Z offset, what could you measure and correct for? And of that, what is likely to change over time, or even be wrong in the first place? For example, being able to detect and compensate for differences between the three towers in steps/mm wouldn't be useful, because the timing belts are pretty darn standard and stable.
User avatar
lordbinky
Printmaster!
Posts: 755
Joined: Sat May 18, 2013 3:53 am
Location: Tri Cities Washington

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by lordbinky »

With the Z probe, a printer can get it's four point calibration spot on with it's geometry off which can cause some headaches when you try to print over the whole bed.

To identify geometry errors (with a flat bed) it is as simple as test the points opposite the tower (which is the point between the other two towers), you can tell if the geometry is off if you do not trigger the probe where you predict you should ( Z=0). I believe with the 6 perimiter points (3 towers and their opposites), and another 6 at half that distance from the center, you would have enough information for an iterative correction process you can run though to get geometry correction values. Not a big deal if it only needs to be done one time. I also think that it might be possible that with a 12 point (13 if you want the center but I see this as unnecessary, if it's z=0 at the 12 points it would be at center) check to be unique enough to determine the geometry errors in one shot with a (yet to be developed) algorithm.

You can also identify other issues with some simple routines. If you have the printer home between each four point check, and then perform the same four point check but have the printer lift the probe 20mm(arbitrary distance) and then z-probe the points. (check the points without returning to home) If they are different, you have definitive problems in the movement whether it's arms, motors, belts, or the effector. With a set of routines you could have the printer point you in the most likely direction.

With just the Z probe still, you could also determine the maximum value of movement settings such as Jerk and Acceleration. It would be a similar routine to the last one I mentioned with maybe a set of appropriate motions to test the setting would allow you a routine to increase the setting (or bouncing it around with a binary search) and provide the value of that setting. If you wanted it to do multiple settings at a time, order of the settings would be important since their maximum is typically dependent on each other. You could even go crazy and let it manipulate settings such as motor current (within a set safe bounds) to optimize that.

Well, there's my thought process on auto-routines with just the z-probe (or equivalent). I wanted to try coding this up,but my friend has me tied up with side project (Damn did I want those bragging rights 8-) ). Hopefully this post will help more than hurt anyones chances of success though.

edited: clarity
Last edited by lordbinky on Sat Apr 05, 2014 9:19 am, edited 1 time in total.
User avatar
JohnStack
Printmaster!
Posts: 852
Joined: Thu Jan 03, 2013 7:07 pm
Location: Carlsbad, CA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by JohnStack »

This article was good. Does it help anyone? Our own 626Pilot has also built a hallo...and says it doesn't work with Repetier.

http://www.openbeamusa.com/blog/2014/1/ ... ling-probe" onclick="window.open(this.href);return false;

Love this concept. Truly wish there wasn't just a basic way to ease it down and report it - and then go to EEProm and go.

Unfortunately, it appears that many of the Z-probe settings are resident memory only. Hmmmm....wonder why...
Technologist, Maker, Willing to question conventional logic
http://dropc.am/p/KhiI1a" onclick="window.open(this.href);return false;
greglee101
Noob
Posts: 2
Joined: Tue Apr 22, 2014 9:42 pm

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by greglee101 »

I am new to this but my normal job involves solving complex machinery problems. It seems to me you are mixing two issues. The first question is how flat the build plate is relative to itself? The second question is how much is the build plate tilted from perpendicular to the z axis? Why not replace the glass build plate with an aluminum build plate. Then attach a simple wire to the print extruder and a second clip on wire to the aluminum build plate. Program the system so that the print head slowly approaches the aluminum build plate. When they touch your circuit goes to from infinite ohms to near zero ohms. Now the system knows exactly the z height. With a little special programming the system could collect a grid of measurements and account for tilt of the plate and correct for this. As far as plate flatness the system could calculate the average from the grid minus the tilt. If the plate is to irregular then have the aluminum build plate resurfaced.
User avatar
mhackney
ULTIMATE 3D JEDI
Posts: 5412
Joined: Mon Mar 26, 2012 4:15 pm
Location: MA, USA
Contact:

Re: Auto-Calibration - $100 Bounty and Bragging Rights

Post by mhackney »

greglee101,

I use a variation of this technique to set the datum on my CNC mill. Here are some other considerations you may not be aware of:

Very few folks print directly on aluminum, they usually print on glass or something adhered to glass.

The issue is almost never the glass plate. For our purposes we can consider it to be a good reference surface. It's also fairly easy to check it with a good straight edge

Here's the killer - plate tilt from Z is actually not that difficult to fix, the problem is the delta geometry is based on trigonometry, unlike the simple math in a Cartesian printer. There are a couple of constants that must either be measured (ideal) or determined empirically. These include the delta arm length and the delta radius. If the towers are absolutely perfectly plumb and oriented 120° from each other and you know these 2 constants, you can accurately calculate the X, Y and Z coordinates of the nozzle tip. That's the ideal scenario, the reality though is a little less elegant - the towers may be tilted in or out (or combinations), may not be positioned accurately at 120°, may lean left or right. There may be slight variations in delta rod length, pairs of delta arms may not be perfectly parallel to each other, their length may not be known or may have some slight variations. And the delta radius is affected by the effector delta arm mount position, carriage delta arm mount positions, etc. In other words, there are lots of places where variations can creep in. When this happens, the issue/s present themselves as non-planar movements in Z. So, instead of staying in a plane, the nozzle tip travels in a curved path. Many people observe this phenomenon and mistakingly say or think that "the bed is not level or flat" when in fact it might be dead flat and level!

"Delta" mechanical calibration is a bit more difficult than "Cartesian" calibration. Unless the linear guides are themselves bent, you are reasonably guaranteed that the travel along a given axis will be linear. Combine two of these (say X and Y) and you are relatively guaranteed that the travel will be planar. "Tilt" is the primary calibration consideration in a Cartesian printer.

So, calibration as described in the link John posted above attempts to compensate for the observed non-planar travel due to mechanical issues or the incorrect values for the required constants. The basic concept is to create a Z map of the bed surface - and assume it is indeed flat if it's a borosilicate glass plate. Then, with this Z map, the calculation of Z can be adjusted at a particular X-Y location - thus forcing planar travel in Z.

Shew...! That's a lot of typing!

cheers,
Michael

Sublime Layers - my blog on Musings and Experiments in 3D Printing Technology and Art

Start Here:
A Strategy for Successful (and Great) Prints

Strategies for Resolving Print Artifacts

The Eclectic Angler
Post Reply

Return to “General Tips 'N Tricks”