Nanomanipulator Challenge

From Drexel University NanoEnlightment

Jump to: navigation, search

This page provides a sample module for a Nanomanipulator Challenge. Extensions, modifications, and other implementation options can be found at: Nanomanipulator Extensions.



The nanomanipulator is a challenge inspired by a project of the same name at the University of North Carolina: Chapel Hill. (They can be found on the web at: UNC Nanomanipulator) The Chapel Hill project is a collaborative effort between a number of different disciplines to develop a tool which will enhance a scientist's ability to explore objects at the nanoscale. They accomplish this by using microscope data to create a digital representation of the sample being examined and presenting it to the user through a virtual reality interface. The usefulness of the device is further enhanced by a precise joystick control system, equipped with force feedback, which allows the user to interact with the sample in a more natural way. Their device, and others like it, will play a critical part in emerging nanoscience because of the bridge it provides between the abstract nature of nanoscale work and the more tangible knowledge provided by direct interaction with a sample. The goal of the Nanomanipualtor module is to demonstrate the usefulness of this class of devices by challenging you to implement such a system.


Your immediate goal is to design a working computer interface for the sample table provided by your instructor. (Instructors, please see the MFM module for table design.) This interface should be created with National Instrument's LabVIEW toolkit extension for the NXT unit. LabVIEW is a popular engineering tool allowing the creation of computer programs though the use of a graphical interface. Their toolkit for the NXT unit (available in the Materials section) allows 'direct commands' to be sent to the NXT unit provided that it is connected to the host computer through USB or Bluetooth. The direct LabVIEW interface allows for the creation of far more complex programs then the compiled NXT-G language because the processing horsepower, storage space, and human interface are all handled though a computer workstation. Only the resultant commands of the program are sent to the NXT unit as they are generated. Therefore, it is possible to use a computer keyboard, mouse, or joystick to act as an input while using the robust graphical displays of modern workstations as an output.


  • NXT Kit
  • Platform to Control (Provided by Instructor)
  • LabVIEW Software (Version 7.2, 8.0, or 8.2)
  • LabVIEW Toolkit for NXT (get it here)


Your tools for construction in this module are mostly virtual ones.

Some LabVIEW NXT interface features you will likely find useful:

  • All NXT Direct commands can be found on the Function Pallet when viewing the Block Diagram. (All Functions -> NXT Direct Commands)
  • Keyboard/Mouse/Joystick interface commands can also be found on the Function Pallet (All Functions -> Advanced -> Input Device Control)
  • It is also possible to use LabVIEW to download compiled programs to the NXT, you are welcome to experiment with this as well. (All Functions -> NXT Toolkit)

Learn to use the LabVIEW documentation, it is fairly thorough and at least moderately informative (in stark contrast with most complex computer programs). We suggest that you turn on Context Help if it is not already enabled. (From either the front or back panel select from the menu-bar: Help -> Context Help.)

Possible Features

  • Full control of each motor/axis should be available to the user. (This includes direction of motion as well as relative power.)
  • Feedback from sensors should be available to the user by looking at the Front Panel. Assume your user cannot see what is happening on the table, as this would be the case on the nano-scale. You may want to consider providing dynamic graphs through the interface as well.
  • Functions should be accessible to the user through both an input device (keyboard/mouse/joystick) as well as from the LabVIEW Front Panel.
  • The ability to 'panic stop' the program in the case of a mechanical failure in the device.


Your code should be fully commented to explain the concepts you have implemented in your design. However, take care not to over-document your code. Assume that your audience is at lease somewhat familiar with basic programming concepts (I.e. you do not need to explain what a while loop is, but you may want to explain how the program is making determinations about a particular sample.)

Goals and Grading

Features Full Control of both axes Sensor feedback to user Documentation Usability


We have compiled an example we designed to provide you with some basic ideas for how such a system could work. The program can be downloaded here. It can serve as a starting point for your design, as you should strive to implement at least all of its features (and probably more).


Operation of the Program

The three motors can be controlled by three pairs of keys on a standard keyboard. The giant knob on the front of the VI controls the power level of the motor (0-100). Pressing END at any time will stop the motors while pressing ESC will end the program. Please be sure that the NXT unit is powered on and connected to the computer before starting the program.

  • A-Port Motor: A & D keys
  • B-Port Motor: W & S keys
  • C-Port Motor: Q & E keys


Personal tools