TEM vision software

From MMVLWiki

Prototype using Distributed Ruby (https://www.ruby-doc.org/core/classes/DRb.html) for vision-based closed-loop control
Enlarge
Prototype using Distributed Ruby (https://www.ruby-doc.org/core/classes/DRb.html) for vision-based closed-loop control
Moving the tip using "drag-and-drop" without vision feedback. The circle marks the initial position of the mouse-cursor
Enlarge
Moving the tip using "drag-and-drop" without vision feedback. The circle marks the initial position of the mouse-cursor
Here vision-based closed-loop control is used to control the position of the tip. The cross-and-circle marks the last known position of the nano-indenter. The cross marks the current nominal position
Enlarge
Here vision-based closed-loop control is used to control the position of the tip. The cross-and-circle marks the last known position of the nano-indenter. The cross marks the current nominal position

As part of the Nanorobotics project a TEM vision software was developed. The software makes use of a JEOL 3010 (https://www.jeolusa.com/PRODUCTS/ElectronOptics/TransmissionElectronMicroscopesTEM/300kV/JEM3010/tabid/213/Default.aspx) transmission electron microscope with a TVIPS FastScan-F114 camera (https://tvips.com/Prod_F114.php) which is an IIDC/DCAM-compatible firewire camera. The nano-indenter is controlled by a Nanomagnetics SPM controller (https://web.nanomagnetics-inst.com/product_detail.php?product_link=SPM) (the old version of the controller can be accessed with a PCI-DIO24 card (https://www.mccdaq.com/pci-data-acquisition/PCI-DIO24.aspx)).

The software runs under GNU/Linux and it makes use of Damien Douxchamps' libdc1394 (https://damien.douxchamps.net/ieee1394/libdc1394/) to access the camera and Warren Jasper's PCI-DIO24 driver (ftp://lx10.tx.ncsu.edu/pub/Linux/drivers/) to access the PCI-card which interfaces with the SPM controller.

The software was implemented in Ruby (https://www.ruby-lang.org/) using Qt4-QtRuby (https://rubyforge.org/projects/korundum/), HornetsEye, libJIT (https://dotgnu.org/libjit-doc/libjit.html), and a custom Ruby-extension to access the SPM controller via the PCI-DIO24 card. Distributed Ruby (https://www.ruby-doc.org/core/classes/DRb.html) and multiple processes were used to work around the problem that Ruby-1.8 does not offer native threads.

The vision algorithms are configured using a separate program and the configuration is saved in a file using Ruby marshalling (https://www.ruby-doc.org/core/classes/Marshal.html). A plugin-based architecture, which accepts plugins for recognition and tracking, was implemented which allows one to select and configure Normalised Cross-Correlation, Lucas-Kanade tracking, or Connected Component Analysis.

Table of contents

1 See Also
2 External Links

Demonstration

Videos

Demonstration of TEM vision software including telemanipulation as well as closed-loop control using machine-vision feedback (also available as DivX3 videos configuration.avi (64 MByte), closed-loop.avi (44 MByte), and interaction.avi (19 MByte))

Setup procedure

1. The vision algorithms are configured
Enlarge
1. The vision algorithms are configured
2. The SPM axes are calibrated against the camera image. A fourth step compensates for linear drift occurring during calibration
Enlarge
2. The SPM axes are calibrated against the camera image. A fourth step compensates for linear drift occurring during calibration
3. Using closed-loop control the nano-indenter is moved along a linear path
Enlarge
3. Using closed-loop control the nano-indenter is moved along a linear path

Download

The software can be downloaded here: visiongui-0.2.tar.bz2 (https://vision.eng.shu.ac.uk/jan/visiongui-0.2.tar.bz2)

The software is implemented in Ruby (https://www.ruby-lang.org/). It uses HornetsEye (current development of version 0.32) and Qt4-QtRuby (https://rubyforge.org/projects/korundum/).

Future Work

Possible future work is

  • port to Ruby-1.9 which has native threads
  • integrate serial-port interface of JEOL TEM
  • access USB-controls for shutter and gain of the TVIPS camera
  • feature-based recognition and tracking (less sensitive to brightness changes)
  • offset- and gain-compensation for camera image

See Also

External Links

Bookmark and Share

Personal tools