A scanner grayly

Werner Almesberger werner at openmoko.org
Mon Jul 26 14:20:42 EDT 2010

I made a few more scans and changed the rendering of the screenshots
of new ones:

- the keyboard top series ben-kbd-top-*, up to 100 um.

  There are some artefacts, caused by the softness of the rubber sheet
  under the keyboard. The rubber is soft enough that the scanner can
  sometimes push it away. When that happens, it will sample the
  position at which it finally notices the rubber. This yields a
  ragged edge, mainly on the left side. (The scanner scans along the
  x axis from left to right.)

  Elastic materials can confuse the scanner even more. E.g., I once
  caught it completely blocked for a hour at the FPC when processing
  the display (see below), because it had pushed the cable so far that
  it no move would relieve the pressure below the detection threshold.
  This kind of effect may be at play with the disappearance of part of
  the metal bridge leading to the power button, and also the overly
  large power LED hole in the whole device scans (ben-bottom-*)

  I will later do a scan in a different direction.

- the LCD module with PCB assembly ben-lcm-asmbly-*, up to 100 um.

  After the above mishap I taped the FPC down, and out of harm's way.
  Things went smoothly after that.

- the outside of the battery cover ben-batcvr-outside-*, up to 500 um,
  with 100 um to follow in a few hours.

  Instead of the closed source Windows/Wine-only Dr.PICZA3, I used
  HeeksCAD for the screenshots. The battery cover doesn't have a lot
  of details, so the screenshots don't look overly interesting, but I
  found HeeksCAD's rendering to look clearer than Dr.PICZA's when
  viewing more complex parts.

  I may later also give MeshLab a try, which is written specifically
  for turning 3D scans into something more useful:

Here is an example of a complex part, at 500 um:

The red lines show the bottom surface of the counterweight. I
generated them with the following Python script:

When the script is run from the HeeksPython console inside HeeksCAD,
it generates the lines (function rect_cad). It also calculates the
mass and torque of the counterweight.

When run from a shell, the script outputs coordinates suitable for
viewing with gnuplot's plot and splot commands. It's quite nice to
be able to combine three types of output (CAD model, quick and dirty
plot, and calculation of complex properties) in a single script.

Note that HeeksPython is quite ugly and only supports a few of
HeeksCAD's operations - that's why I haven't added the top surface
of the counterweight and then made a 3D solid, but it's a very
promising basis for more powerful scripting.

I added the scanned surface to the lines simply by importing the STL
file. (My counterweight model was based on the same scan, so the
coordinates are the same. Note that the scan's X/Y plane is slightly
tilted while the model's isn't. This is why some lines in the front
disappear into the bottom shell.)

- Werner

More information about the discussion mailing list