Skip to content

Probe Camera Alignment

flaplante edited this page Apr 3, 2016 · 14 revisions

Probe Camera Alignment

The Camera alignment system permits the user to align in X/Y with accuracies of the order of tens of micrometer using a web camera mounted on the Z-axis next to the spindle.

Configuration

  • The camera alignment system requires the presence of python-opencv module
  • Select the camera from "Tools -> Config -> Camera".
  • Select the appropriate rotation.
  • Note: for the moment v0.9.2 the configuration is disabled, you have to manually edit the .bCNC file

note: Be sure you have also installed PIL, OpenCv, ImageTk for your Python.

Hardware

Any USB camera that can be recognized by opencv will work with bCNC. In my machine

  • I've bought a cheap web camera, with a clip that mounts on top of the laptop screen. The resolution is a bit crapy 352x288, despite that it gives very nice results.
  • I removed the plastic cover and milled a plexiglass base.
  • I've inserted the camera PCB using a double sided adhesive tape.
  • On the side I've added 2 high power leds connected to the USB 5V via a 100Ohm resistor. The resistors are used to reduce a bit the light from the high power leds otherwise the camera is blinded.
  • I've adjust the lens of the camera to focus to the appropriate distance.
  • Note: Focusing at small distances the camera distorts a lot the image like a fish eye lens

My web camera

  • The plastic base is mounted on an aluminium angle with 3 screws and a spring in between to align the camera perpendicular to the X-Y plate.

Mounting bracket

  • I've mounted the camera with an aluminium bar that I've drilled a few holes to adjust the height. I can go from 1cm up to 4cm height with respect to the spindle. At 1cm I have a spatial resolution of about 20um and at 4cm around 80um. Most of the time I keep it at 4cm to have bigger clearance with respect to the spindle.

Calibration

  • Turn on the camera visualization from the tool bar on top of the Canvas.
  • First jog the spindle to some location on top of a scrap material. Drilling marker hole
  • Turn on the spindle and jog inside the scrap to drill a small hole 1-2mm is enough.
  • Move upwards the spindle to a safe height.
  • Note: All calibration and motion of the camera will be performed with this height.

Mark Spindle position

  • Go to 'Probe->Camera' and click on 'Register' 1.Spindle

Aligning Camera to hole

  • Jog the camera to center the hole.
  • At this point you can set the Diameter of the tool used in the Camera dialog
  • Experiment with the Scale so that the cross hair circle fits exactly the hole. Note: this step is not important but gives nicer visual results.

Mark Camera

  • With the hole fitting exactly on the cross hair, click on 'Register' 2.Camera
  • The offset of the camera with respect to the spindle should be displayed in the input fields.
  • Calibration is complete.

Orientation of gcode

  • This is an example on how to orientate the g-code to fit the object present in the machine.
  • For testing I've placed at a random position and orientation a PCB that I've made some time ago.

Switch to Camera system

  • Switch to the camera system, by clicking the "Switch" button on the ribbon. The button is creating a virtual offset with G92 on the present workspace so as the center is moved to the camera location.
  • By switching back to the spindle, the offset is canceled with a G92.1 command

Add 1st Orientation marker

  • Change to the "Probe -> Probe" tab
  • In the PCB the holes are 0.6mm, so I set the Diameter to 0.6mm
  • Jog the camera to a known location. In this example I've used a couple of drilled holes.
  • Click on the Orient -> Add button
  • Click with the mouse to the line on the center of the hole. Note: there is a snapping mechanism in bCNC, that will snap to the closest gcode control point

Jog to 2nd marker

  • Jog to the 2nd marker

Zoom on 2nd marker

  • Zoom and align the camera on the second marker
  • In this quick example I had to make steps of 20um to align the holes

Add 2nd Marker

  • Click on Orient->Add
  • Click on the second marker gcode point on the canvas

Jog to 3rd marker

  • Repeat with a 3rd marker

Add 3rd Marker

  • Add the 3rd marker
  • Note: 2 markers are sufficient, but the more you provide the more accurate the system is going to be determined. bCNC is solving an overdetermined system to find the best match.
  • Note: observe always the error for each marker. If too high you can move the marker with the mouse or delete and add again.

Orientation gcode

  • At this point clicking on the Orient -> Orient button the gcode will be transformed to match the markers.

Change to gantry view

  • I've changed the location of the Camera display from Bottom Right to Gantry so that the camera image follows the gantry location when displayed in X-Y

Inspect #1

  • Inspect some points and see the camera image with the gcode overlay.
  • Note: The image distortion from the macro focusing is visible. The gcode is matching close to the center but at larger distances is distorted.

Inspect #2 Inspect #3

Clone this wiki locally