Pick and place using labview and Ni vision acquisitio​n

Hi everyone,
I am doing a student project  on Vision guided pick and place of an industrial robot(abb) . I would like to know the steps involved in creating the block.
I have to locate the object , get its cooordinates through webcam. Then does a pattern matching.. and would send the cooordinates to microcontroller . then from microcontroller to robot controller.. then the industrial robot should pick the object and place it in a predefined place..
I would be extremely grateful if you guys can help me since  I am new to LabView. 
Thanks,
Pradeep.M
( [email protected])
Solved!
Go to Solution.

What you are describing is fairly involved, but here's are some tips.  The key is to correlate the robot's coordinate system to the camera's coordinate system.  I assume the camera is statically located above the pick-up area?  I would move the robot to each corner of the frame to its pick position vertically, and note the robot's position at those locations.  These 4 points in space will be correlated to the X,Y coordinates of the camera frame's pixels.  You basically need to write a sub-VI with the inputs being pixel X and Y coordinates, and the output being the robot coordinates.
Write a test application telling the robot to go to any X,Y pixel location in the frame to test your sub-VI.  If that is working, then you need to set up a pattern match.  You will likely want to do a geometric pattern match.  Have a look at this example:  http://zone.ni.com/devzone/cda/epd/p/id/5555
You will need your pattern match algorithm to return both the coordinates for your robot, and the orientation of the tool required to properly pick up the object (if the pick and place robot tool requires that it be in a specific orientation).  So its basically up to you to convert the object's X,Y,and rotation angle in the frame that you get from the pattern match to whatever coordinate system the robot uses.  
The placing algorithm could just be a orientation adjustment to put the object into placement orentation, and then the placement positions could be an array of robot coordinates that you iterate through after each pick.
Make sure to implement some safety mechanisms in your algorithms so that the robot can never move somewhere outside a safe range of coordinates.
www.movimed.com - Custom Imaging Solutions

Similar Messages

  • I am trying to use Labview and RP1210 compliant hardware to connect to a truck J1939 bus and receive messages.

    I am trying to use Labview and RP1210 compliant hardware to connect to a truck J1939 bus and receive messages. 
    Specifically I am attempting  to read data frames using the RP1210_READMESSAGE .   am able to configure the hardware and send a message to the J1939 bus. .    I think I have not configured something correctly.  I can use the RP1210_SENDMESSAGE and see the message I have sent on the bus using CANalyzer   When I use the RP1210_READMESSAGE   I get the timestamp from a message and the return from the function sends back the correct number of bytes (the number matches the number of bytes I sent out plus four bytes from the timestamp).  What I am having trouble with is actually receiving the data. I have had the same type of behavior from two different hardware (Vector CANcase XL and Nexiq USB Link), so I don't think the issue is vendor specific.
    Has anyone been able to make the RP1210_RECIEVEMESSAGE function work correctly?
    Thanks for any help

    Thanks
    I have already tried that.  The links are the NI RP1210 wraper. The problem I am having is using labview to interface with the RP1210 layer.  The RecieveMessage char*fpchAPIMessage this is the output which is a pointer to a cahracter array.  In this variable I can receive the timestamp of the message but not the message.  The retun showns the correct amount of bytes are aviaable (18 for a 8 byte message) but I can only get the 4 byte timestamp  I think I have to dereference this pointer to view the data.  I am not sure how to fix this. 

  • Please help me with my electrical engineering homework : temperature control and watering system for greenhouse using labview and arduino

    temperature control and watering system for greenhouse using labview and arduino
    spesification :
    1. max temp : 28 celcius (when temperature is more than 28 celcius, fan ON)
    2. min temp : 20 celcius (when temperature is under 20 celcius, heater ON)
    3. watering system : aquaponic (grow plant and fish in separate tank but connect each other). Plant roots help filter water for fish. Fish poop for plants fertilizer. So I need a pump to distribute water.
    Please help me create VI file simulation.. I'm sorry I'm not fluent in English. May God bless you all
    Attachments:
    YOOOSHH.vi ‏88 KB

    Duplicate thread.   Please keep the discussion in that thread where you already have a response. It is also the more appropriate thread for your question.
    Lynn

  • How to recognize certain word or voice (like cry) using labview and kinect?

    By using labview and kinect, how to recognize some sample world like 'ok', 'help', and voice like crying and screaming?

    This is not really a LabVIEW question, but a signal processing question. Do you have a set of crying sounds in order to be able to calibrate whatever algorthm you are trying to implement?
    LabVIEW Champion . Do more with less code and in less time .

  • I have Microsoft Office 2008 and only use Word and Excel. It takes 980 mb. I am considering replacing it with Apple iWorks 2013. If I do, can I delete Office, and still access and modify my Word and Excel documents?

    I have Microsoft Office 2008 and only use Word and Excel. It takes 980 mb. I am considering replacing it with Apple iWorks 2013. If I do, can I delete Office, and still access and modify my Word and Excel documents?
    I have a MacBook Air and OS 10.9.4

    Ron
    Just adding to what CSound has said.
    Pages and Numbers will change Word and Excel documents when they open and close them.
    Sometimes the change is subtle and sometimes not. With the latest versions of Pages and Numbers, more likely not.
    So don't think you are going to work with MsOffice files without problems. You will always have something not right and in some cases really annoyingly not right. Like having all the text from Pages appear bold in MsWord, or page breaks in the wrong place or some objects and graphics not appearing in one or the other.
    If working between different Operating Systems and MsOffice files, I also recommend LibreOffice. It opens and saves nearly all file formats. Unfortunately not .pages or numbers. Yet. The folks at LibreOffice are busy adding to it all the time, and making sure it works in all Operating systems, Mac, Windows and Linux and they are promising iOS as well soon.
    Peter

  • HT204053 I had Snow Leopard and was using iWeb and Filezilla for my website (not MobileMe). Wanting to move to single-click publishing, I now find it is not supported by iCloud and Mountain Lion. I feel cheated, having bought it mainly for this purpose!

    I had Snow Leopard and was using iWeb and Filezilla for my website (not MobileMe). Wanting to move to single-click publishing (supported by MobileMe), I now find it is not supported by iCloud and Mountain Lion. I feel cheated, having bought it mainly for this purpose! The other thing they don't tell you is that Mountain Lion disables OfficeMac, and I am considering uninstalling it for that reason - do I get my money back?!

    You stated; "Mountain Lion disables OfficeMac"
    That is not true.
    Mountain Lion does not have Rosetta so it is not capable of executing PowerPC code. If you have MS Office 2004 that is coded in PowerPC code and will not run in Mountain Lion. What you need to do is upgrade to an Intel version of Office.
    Allan

  • Turn off phone capability of iPhone and continue using cps and cellular data?

    Can I turn off phone capability of any iPhone and continue using cps and cellular data, practically using the device as iPad? Is this going to be possible with iOS8 or iPhone 6 Plus?

    This could be what you are looking for:
    Using an iPhone without a wireless service plan

  • Example of WAIT and CONTINUE using checkBox and thread and getTreeLock()

    I had so much trouble with this that I descided to
    post if incase it helps someone else
    // Swing Applet example of WAIT and CONTINUE using checkBox and thread and getTreeLock()
    // Runs form dos window
    // When START button is pressed program increments x and displys it as a JLabel
    // When checkBox WAIT is ticked program waits.
    // When checkBox WAIT is unticked program continues.
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.io.*;
    public class Wc extends JApplet {
    Display canvas;//drawing surface is displayed.
    Box buttonPanel;
    Box msgArea;
    public static JButton button[] = new JButton [2];
    public static JCheckBox checkBox[] = new JCheckBox[2];
    public static JLabel msg[] = new JLabel [2];
    String[] buttonDesc ={"Start","Quit"};
    public static final int buttonStart = 0;
    public static final int buttonQuit = 1;
    String[] checkBoxDesc ={"Wait"};     
    public static final int checkBoxWait = 0;
    public boolean wait;
    public Graphics g;
    //================================================================
    public static void main(String[] args){
    Frame f = new Frame();
    JApplet a = new Wc();
    f.add(a, "Center"); // Add applet to window
    a.init(); // Initialize the applet
    f.setSize(300,100); // Set the size of the window
    f.show(); // Make the window visible
    f.addWindowListener(
    new WindowAdapter(){
    public void windowClosing(WindowEvent e){System.exit(0);}
    }// end main
    //===================================================
    public void init() {
    canvas = new Display();
    setBackground(Color.black);
    getContentPane().setLayout(new BorderLayout(3,3));
    getContentPane().add(canvas, BorderLayout.CENTER);
    buttonPanel = Box.createHorizontalBox();
    getContentPane().add(buttonPanel, BorderLayout.NORTH);
    int sbZ;
    // add button
    button[0] = new JButton(buttonDesc[0]);
    button[0].addActionListener(canvas);
    buttonPanel.add(button[0]);
    button[1] = new JButton(buttonDesc[1]);
    button[1].addActionListener(canvas);
    buttonPanel.add(button[1]);
    // add checkBox
    sbZ=0;
    checkBox[sbZ]=new JCheckBox(checkBoxDesc[sbZ]);
    checkBox[sbZ].setBackground(Color.white);
    checkBox[sbZ].setOpaque(true);
    checkBox[sbZ].addActionListener(canvas);
    buttonPanel.add(checkBox[sbZ]);
    msgArea = Box.createVerticalBox(); // add message
    sbZ=0;
    msg[sbZ]=new JLabel("1",JLabel.LEFT);
    msg[sbZ].setOpaque(true);
    msg[sbZ].setBackground(Color.black);
    msg[sbZ].setForeground(Color.red);
    msgArea.add(msg[sbZ]);
    getContentPane().add(msgArea, BorderLayout.SOUTH);
    } // end init();
    //===================================================
    public void stop(){canvas.stopRunning();}
    //===================================================
    // The following nested class represents the drawing surface
    // of the applet and also does all the work.
    class Display extends JPanel implements ActionListener, Runnable {
    Image OSI;
    Graphics OSG; // A graphics context for drawing on OSI.
    Thread runner; // A thread to do the computation.
    boolean running; // Set to true when the thread is running.
    public void paintComponent(Graphics g) {
    if (OSI == null) {
    g.setColor(Color.black);
    g.fillRect(0,0,getWidth(),getHeight());
    else {g.drawImage(OSI,0,0,null);}
    }//paintComponent
    public void actionPerformed(ActionEvent evt) {
    String command = evt.getActionCommand();
    if (command.equals(buttonDesc[buttonStart])) {
    startRunning();
    if (command.equals(buttonDesc[buttonQuit])) {
    stopRunning();
    if (command.equals(checkBoxDesc[checkBoxWait])){
    System.out.println("cb");
    if (checkBox[checkBoxWait].isSelected() ) {
    wait = true;
    System.out.println("cb selected twait "+wait);
    return;
    wait = false;
    synchronized(getTreeLock()) {getTreeLock().notifyAll();}
    System.out.println("cb selected fwait "+wait);
    } // end command.equal cb wait
    } //end action performed
    // A method that starts the thread unless it is already running.
    void startRunning() {
    if (running)return;
    // Create a thread that will execute run() in this Display class.
    runner = new Thread(this);
    running = true;
    runner.start();
    } //end startRunning
    void stopRunning() {running = false;System.exit(0);}
    public void run() {
    button[buttonStart].setEnabled(false);
    int x;
    x=1;
    while(x>0 && running){
    x = x + 1;
    msg[0].setText(""+x);
    try{SwingUtilities.invokeAndWait(painter);}catch(Exception e){}
    //importand dont put this in actionPerformed
    if (wait) {
    System.out.println("run "+wait);
    synchronized(getTreeLock()) {
    while(wait) {
    System.out.println("while "+wait);
    try {getTreeLock().wait();} catch(Exception e){break;}
    } //end while(wait)
    } // end sync
    } // end if(wait)
    } // endwhile(x>0)
    stopRunning();
    } // end run()
    Runnable painter = new Runnable() {
    public void run() {
    Dimension dim = msg[0].getSize();
    msg[0].paintImmediately(0,0,dim.width,dim.height);
    Thread.yield();
    }//end run in painter
    } ; //end painter
    } //end nested class Display
    } //end class Wc

    I just encountered a similar issue.  I bought a new iPhone5s and sent my iPhone4s for recycling as it was in great shape, no scratches, no breaks, perfect condition.  I expected $200 and received an email that I would only receive $24.12.  The explanation was as follows:  Phone does not power on - Power Supply Error.   Attempts to discuss don't seem to get past a customer service rep that can only "escalate" my concern.  They said I would receive a response, but by email.  After 4 days no response.  There is something seriously wrong with the technical ability of those in the recycling center.

  • I have the latest itunes and I use Windows and suddenly after working fine for years, itunes will not synch with OUtlook anymore. Any ideas?

    I have the latest itunes and I use Windows and suddenly, after working fine for years, itunes will not synch with Outlook anymore. Any ideas?

    Contact NIK for updated/upgraded versions of their plug-ins.  They have been having a lot of issues with their plug-ins.

  • Video grab and save using labview

    Dear All
    I am trying to grab and save a video from ni smart camera (NI 1744). I
    am using Grab and save vi which is attached. I open a new project in
    labview 10. To this project I add the smart camera as a RT target and
    then add the attached grab and save vi under the smart camera in the
    project. I right click the smart camera and select " Deploy all".
    Deployment starts but it terminates displaying the following error
    message:
    " LabVIEW:  Failed to load shared library
    nivissvc.*:LV_AviMovieOpen:C. Ensure that the library is present on
    the RT target. Use MAX to install NI software or FTP to transfer
    custom libraries to the RT target.
    Deployment completed with errors  "
    Kindly note that I am able to grab a video using  MAX (Measurement and
    Automation) without any problem. I have also re installed IMAQ RT,
    Vision RT, IMAQdx RT and Labview RT on the smart camera several times
    but that has not solved the problem. I shall be really grateful if
    anyone can provide any guidance regarding how to carry out successful
    deployment of the attached vi or if anyone can suggest an alternative
    way of grabbing and saving a video from NI smart Camera (NI 1744).
    System Specifications: Toshiba Satellite Laptop, Windows 7 home
    premium. Labview 10.
    Attachments:
    Grab and Save to AVI IMAQdx 8_6.vi ‏54 KB

    AVI is still not supported for the 1744, which uses a VxWorks Operating System (as compared with the newer series of smart cameras the 177x which use pharlap OS and support the new AVI functions).
    Attached is a sample LV project and code to illustrate how to acquire images on your smart camera and write those to a network image variable. I also made a host side VI to read the image variable where you can use your AVI function to save to your local host machine images acquired from the smart camera.
    Hopes thishelps,
    Brad
    Attachments:
    Smart Camera Acq Example.zip ‏35 KB

  • Looking for full time position using Labview and/or PLC's in Long Island NY area

    I have 13 years experience using Labview for user interface/daq applications.  I also have 20 years experience with Programmable Logic Controllers (PLC) programming for industrial machine controls.  My resume follows:
    Adam Wechsler
    111 Holbrook Rd.,Holbrook,NY 11741,(631) 981-1013 [email protected]
    Objective
    Labview programming, virtual instrumentation, industrial machine controls,
    automation, PLC, HMI, GUI, data acquisition
    Education:
    B.S. Mechanical Engineering 5/89
    Polytechnic University, Brooklyn, NY
    A.S. Engineering Science 5/86
    Suffolk Community College, Selden, NY
    (GPA 4.0 Dean's List Spring 1986)
    Experience:
    Controls Engineer 5/1994-3/2009
    Vacuum Instrument Corp., Ronkonkoma, NY
    *Program, troubleshoot, and upgrade automated Vacuum Chamber Industrial Leak Detection systems controlled by Allen Bradley PLCs in an OEM environment.
    *Debug equipment functions and programs prior to shipping, at customer's site, and by phone.
    *Integrate and install various types of peripheral equipment, barcode scanners and printers,
    *Design and develop Labview graphical user interfaces and HMI applications including recipe management and data collection for industrial machinery.
    *Write and review user manuals and installation instructions.
    Production Engineer 10/1989-5/1994
    Izumi Corporation, Yaphank, NY
    *Program, maintain, troubleshoot, and repair PLC controlled hydraulic, pneumatic, and control systems for automation in a hands-on environment.
    *Improve design for manufacturability of new products and prototypes to be urethane/injection molded.
    *Program, maintain, troubleshoot, and repair six axis hydraulic paint spraying robots.
    *Create interface between multiple PLC’s and central computer system.
    *Improved design and productivity of high volume, computer controlled, robotic molding machine by 150%.
    Consulting Projects:
    *Created Labview user interface components, and recipe management system for the testing of motion control servos.
    *Programmed Allen Bradley PLC machine logic for packaging machine for a food service supplier.
    *Created Labview to Allen Bradley PLC setpoint and monitoring interface for electric motor-starter test stand.
    *Programmed Allen Bradley PLC and PanelView operator interface terminal for cosmetic packaging assembly machine.
    *Developed Labview application for Fourier and statistical analysis of myogram biomedical data for researching the efficacy of acupuncture treatment.
    Other:
    *Attended National Instruments Labview training courses, and regularly attend local Labview Users Group meetings as a long standing member.
    *Member IEEE
    *13 years experience with Labview
    *15 years experience with vacuum chamber, mass spectrometer, and related technologies
    *20 years experience with PLC's and automated systems
    *Attended Autocad training course.
    *Willing to travel

    Will also consider contract, part time, or consultant work.

  • How to create an exe file using labview and arduino?

    I bought Arduino Mega 2560. I have installed Arduino IDE 1.7.3. I am using Windows 7 64bit version and Labview 2012. I started working after the compilation of LIFA_Base File with Arduino IDE and with labview.
    My application is: I have connected my arduino to my PC via USB for read input/output pins. I have to read all the time an analogue input from arduino and I have to draw the graphical representation of the input. I would like to know if I can create an exe file of this application. I would like to use the created exe file to another PC without labview installation. 
    Please help me to resolve the problem.
    Regards

    Yup you sure can.  With Application Builder, that is bundled with several LabVIEW packages you can make an EXE, and then make an installer that can include the LabVIEW Run-Time engine (free) and you'll also need the VISA run-time for talking to serial devices like your Arduino.
    Then you should be able to run that installer on any normal Windows PC and without the development environment be able to run your program.
    Note that currently Student, and Home versions of LabVIEW do not have the application builder since it is intended for learning, and hobbyist, not for distributions.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • How to detect baby crying using labview and webcam?

    Hi, I am new to labVIEW. I have a project that it requires me to develope a application to detect various types of  baby crying using labVIEW.The hardware we use will be webcam or kinect xbox 360. The system for my computer is windows 7. I used to try to create a threshold frequency to detect baby crying,but it not work well. So  I want to ask what else method should I use to develop this application that can differentiate baby crying with other kind of sound( like normal talk, music...) correctly? As I just start learning labVIEW, hope the method to be easy to understand. Thanks.

    This is not really a LabVIEW question, but a signal processing question. Do you have a set of crying sounds in order to be able to calibrate whatever algorthm you are trying to implement?
    LabVIEW Champion . Do more with less code and in less time .

  • Plot different data set depending of some conditions using labview and veristand

    Hi Community,
    i have a couple of points saved as XY data points on my desktop.  The files are save as csv.  the idea is to read the file utilizing the Read From Spreadsheet File vi when some conditions are met and then plot the XY data wiht XY Graph Addon of the veristand workspace.
    for instance:
    if case 1 is true read the corresponding file and then plot the first set of data
    if case 2 is true read the corresponding file and then plot the second set of data
    if case n is true read the corresponding file and then plot the n set of data.
    Could you give some advices how to implement it (Labview and Veristand)?
    I'm using LV and NIVS 2012
    Thx
    Mich
    Attachments:
    vide.vi ‏35 KB

    Hi Michel,
    I believe the easiest method will be to use the VeriStand .NET API to call into VeriStand and utilize LabVIEW for creating the decision making cases that you have.  I have attached some examples of using the VeriStand API in LabVIEW.
    Using the NI VeriStand .NET API in LabVIEW to Control a VeriStand System
    https://decibel.ni.com/content/docs/DOC-32268
    Where Can I Find LabVIEW Examples Using the NI VeriStand API?
    http://digital.ni.com/public.nsf/allkb/E1066949FA67B6CE862578A7005988D5?OpenDocument
    Please let me know if this helps.
    Matt S.
    Industrial Communications Product Support Engineer
    National Instruments

  • Using LabView and Modbus to Communicat​e with AKD Servo Drive

    I’m working on a project to control a Kollmorgen AKD servo application using Modbus directly from LabVIEW.  I’m new to both LabVIEW and servo drives so forgive me if this seems simple.  I have established communications to the drive through Modbus and have been successful at some rudimentary control of the servo.  I know the drive only supports "Write Multiple Registers” and “Read Holding Registers” functions and there are scaling factors that need to be applied.  What I need is some help with taking the Modbus information supplied by Kollmorgen for each command and formatting it for communication to the servo and vice versa.  I need to understand how to take the supplied 8, 16, 32, and 64 bit information for commands, scale it, and format it into the two or four registers required for the drive to read the parameters.  In turn, I also need to understand how to take the same information and read it and scale it from the drive.  I’ve attached a spreadsheet with the particular commands I’m interested in and a sample VI that seems to work for speed control but to be honest, I'm not sure how/why.
    Attachments:
    KM Modbus Cross Reference.xlsx ‏57 KB
    VEL.CMDU.vi ‏10 KB

    OK, I've got the ability to read values from the AKD drive pretty well sorted out.  I'm now having trouble with the ability to write.  I want to use Labview to program Motion Tasks in the AKD drive.  To do this I need to perform three commands: MT.NUM (specify the motion number), MT.P (specify the angular position), and MT.SET to set the parameters for the task.  MT.P requires sending a 64 bit signed float or a 32 bit signed float (requiring four or two registers respectively).  I used ModPoll to see what values the drive held in the MT.P registers after entering the desired angular position using the AKD Workbench software.  For example: using Workbench I entered 234.567 for the angular position and read 208 and -32506 from registers 2060 & 2061 (the 32 bit registers for MT.P).  After scouring the forum I put together the attached VI to try to write to the same registers but I can not seem to get the translation of the input (angular position) to the register values correct (entering 234.567 does not produce 208 and -32506 in registers 2060 & 2061).  Anyone have any ideas?
    Attachments:
    Motion Task Definition Rev H.vi ‏21 KB

Maybe you are looking for

  • Help with determining next Saturday of the week in GMT

    Hi All, Here's a quick newbie question: What's a quick way to determine the next Saturday of the week in GMT? Thanks!

  • How do you use PORTAL .WWCTX_API.GET_USER

    Hi. I'm a newbie at Portal and Oracle and am having a problem extracting the userID for the logged user. I have a form that needs to be populated with the login ID for that session. What exactly do I need so that the field will auto-populate with the

  • Open AR Invoice-Drafts via UI-Api

    Hy All! Im loocking for a way to open the window of a AR Invoice-DRAFT using the UI. I need to open a specific Draft that i added bevore via DI, so i know the DocEntry aso. of my Drafts. I can't open the invoice-form, set it to "Search" mode and sear

  • Multi use of same VO instance

    Using Jdeveloper 10.1.3.3., ADF BC application. Here is the problem... I have created master view and 4 detail views. In application module, I've created instances of this master and it's details. Now...I've created panel's for detail views and panel

  • Yosemite Safari - bookmark add button is in the wrong place !

    Dear Apple just FYI. The 'add book mark' The small 'plus' symbol at the far lefthand edge of Safari browser window, its in the wrong position. So many errors/mistakes (wrong add book mark) for just going to type in window, one accidentally hits this