Discussion

Left ArrowBack to discussions page
Etienne_SamsonEtienne_Samson Posts: 416Beta Tester Beetle, Wrist Camera URCap 1.3.0, Vacuum Beta tester Handy
edited August 2016 in Robotiq Products
Challenge with increased difficulty: Pick & Place with insertion in jig

Provided material :
  • Multiple PCBs

  • PCB test jig

Goal: Locate the PCB using vision, pick and insert inside the test jig.

Hint: Use the sensor signal to guide the jig insertion.

Good luck!
Etienne Samson
Technical Support Director
+1 418-380-2788 ext. 207
[email protected]

Comments

  • Ryan_WeaverRyan_Weaver Posts: 46Founding Pro, Partner, Beta Tester VIsion 1.1 Program, Wrist Camera URCap 1.3.0 Handy
    edited August 2016
    Team 3 

    After a million iterations, Task 2 complete!


    Code
    Program
       Init Variables
       BeforeStart
         Script: accessor_capt.script
         socket_close("stream")
         socket_open("127.0.0.1",63351,"stream")
         var_2≔get_actual_tcp_pose()
         MoveJ
           var_2
       Robot Program
         Loop
           'Write robot program here.'
           Call SubP_team_3_x_t
           Wait: 0.01
       Thread_1
         sensor_data≔socket_read_ascii_float(6,"stream")
         If sensor_data[0] ≥6
           Fx≔sensor_data[1]
           Fy≔sensor_data[2]
           Fz≔sensor_data[3]
           Mx≔sensor_data[4]
           My≔sensor_data[5]
           Mz≔sensor_data[6]
         Else
           Fx≔0.0
           Fy≔0.0
           Fz≔0.0
           Mx≔0.0
           My≔0.0
           Mz≔0.0
       SubP_rq_set_zero
         rq_set_zero()
       SubP_rq_print_firmware_version
         rq_print_firmware_version()
       SubP_rq_print_prod_year
         rq_print_prod_year()
       SubP_rq_print_serial_number
         rq_print_serial_number()
       SubP_rq_print_version
         rq_get_version()
       SubP_team_3_x_t
         MoveJ
           Waypoint_1
           Gripper Open
         Camera Locate
           MoveL
             Waypoint_2
             Waypoint_3
             Gripper Close
             Waypoint_2
           MoveJ
             Waypoint_5
           Pallet
             Pattern: Line
               StartPos_1
               EndPos_1
             PalletSequence
               Approach_1
               PatternPoint_1
               Wait: 1.0
               Loop Fz>-3
                 Waypoint_4
               Waypoint_7
               'Waypoint_6'
               'If My>10'
               Loop Mx>-.5
                 Waypoint_6
                 sync()
               'Waypoint_7'
               'Waypoint_8'
               Gripper Open
           MoveJ
             Waypoint_9
    



    Ryan Weaver   |   Automation Engineer   |   Axis New England
    [email protected]
    https://www.youtube.com/user/AxisNewEngland
    https://twitter.com/axis_newengland

  • Cody_JamesCody_James Posts: 5Partner, Beta Tester Beetle, Wrist Camera URCap 1.3.0
    edited August 2016
    Team 1

    Challenge 2 complete:



    Code
    Program
       Init Variables
       BeforeStart
         Script: accessor_capt.script
         socket_close("stream")
         socket_open("127.0.0.1",63351,"stream")
       Robot Program
         MoveJ
           Gripper Move 52%
           Waypoint_1
         Camera Locate
           MoveL
             app
             pick
             Gripper Move 72%
             app
           MoveL
             Waypoint_3
           Pallet
             Pattern: Line
               StartPos_1
               EndPos_1
             PalletSequence
               Waypoint_4
               Approach_1
               'PatternPoint_1'
               Loop norm(Mx)<0.5
                 var_1≔get_actual_tcp_pose()
                 var_2≔pose_add(var_1,p[-0.0005,0,0,0,0,0])
                 var_2
               Loop norm(Fz)<10
                 var_3≔pose_trans(get_actual_tcp_pose(),p[0,0,0,0.01,0,0])
                 var_3
               Gripper Move 52%
               Exit_1
           MoveJ
             Waypoint_3
       Thread_1
         sensor_data≔socket_read_ascii_float(6,"stream")
         If sensor_data[0] ≥6
           Fx≔sensor_data[1]
           Fy≔sensor_data[2]
           Fz≔sensor_data[3]
           Mx≔sensor_data[4]
           My≔sensor_data[5]
           Mz≔sensor_data[6]
         Else
           Fx≔0.0
           Fy≔0.0
           Fz≔0.0
           Mx≔0.0
           My≔0.0
           Mz≔0.0
       SubP_rq_set_zero
         rq_set_zero()
       SubP_rq_print_firmware_version
         rq_print_firmware_version()
       SubP_rq_print_prod_year
         rq_print_prod_year()
       SubP_rq_print_serial_number
         rq_print_serial_number()
       SubP_rq_print_version
         rq_get_version()
    



  • EnricEnric Posts: 112Founding Pro, Partner, Beta Tester Multi Gripper, Vacuum Beta tester Handy
    edited August 2016


    Code 
    Program
       Init Variables
       BeforeStart
         Script: accessor_capt.script
         socket_close("stream")
         socket_open("127.0.0.1",63351,"stream")
         Gripper Open
         Maxim≔0.5
       Robot Program
         Loop 5 times
           'Write robot program here.'
           Wait: 0.01
           Call SubP_chalenge2
           'Switch Loop_1'
           'var_1≔...'
       SubP_chalenge2
         Folder
           MoveJ
             Gripper Open
             Waypoint_2
           Camera Locate
             MoveL
               Waypoint_3
               Waypoint_1
               Gripper Close
               Waypoint_4
             Switch Loop_1
               Case 0
                 MoveJ
                   pos_1
                   If norm([Mx])<Maxim
                     MoveL
                       approach_1
                   Gripper Open
                   Exit_1
               Case 1
                 MoveJ
                   pos_2
                   If norm([Mx])<Maxim
                     MoveL
                       approach_2
                   Gripper Open
                   Exit_2
               Case 2
                 MoveJ
                   pos_3
                   approach_3
                   If norm([Mx])<Maxim
                     MoveL
                       'approach_3'
                       Waypoint_5
                   Gripper Open
                   Exit_3
               Case 3
                 MoveJ
                   pos_4
                   If norm([Mx])<Maxim
                     MoveL
                       approach_4
                   Gripper Open
                   Exit_4
       Thread_1
         sensor_data≔socket_read_ascii_float(6,"stream")
         Loop_1≔Loop_1
         If sensor_data[0] ≥6
           Fx≔sensor_data[1]
           Fy≔sensor_data[2]
           Fz≔sensor_data[3]
           Mx≔sensor_data[4]
           My≔sensor_data[5]
           Mz≔sensor_data[6]
         Else
           Fx≔0.0
           Fy≔0.0
           Fz≔0.0
           Mx≔0.0
           My≔0.0
           Mz≔0.0
         sync()
       SubP_rq_set_zero
         rq_set_zero()
       SubP_rq_print_firmware_version
         rq_print_firmware_version()
       SubP_rq_print_prod_year
         rq_print_prod_year()
       SubP_rq_print_serial_number
         rq_print_serial_number()
       SubP_rq_print_version
         rq_get_version()
    


    Team4 @Juanjo @Enric @Adam529dp
    Enric Vila Avila
    Vicosystems S.L.L.
    Industrial Collaborative Systems

    [email protected]
  • Johnson_LiuJohnson_Liu Posts: 11Founding Pro Handy
    edited August 2016
    Here is the video from our team 5.



    Code
    Program
       Init Variables
       BeforeStart
         cp≔get_target_tcp_pose()
         MoveJ
           cp
         rq_activate_and_wait()
         Script: accessor_capt.script
         socket_close("stream")
         socket_open("127.0.0.1",63351,"stream")
       Robot Program
         Gripper Open
         MoveJ
           Waypoint_3
         Camera Locate
           MoveL
             Waypoint_1
             Waypoint_2
             Gripper Close
             Waypoint_1
           MoveJ
             Waypoint_4
           Pallet
             Pattern: Line
               StartPos_1
               EndPos_1
             PalletSequence
               Approach_1
               PatternPoint_1
               Call SubP_rq_set_zero
               Wait: 1.0
               If Mx≥-1.0
                 MoveL
                   Waypoint_5
               Waypoint_7
               Gripper Open
               Exit_1
       Thread_2
         cp≔get_target_tcp_pose()
         sync()
       Thread_1
         sensor_data≔socket_read_ascii_float(6,"stream")
         If sensor_data[0] ≥6
           Fx≔sensor_data[1]
           Fy≔sensor_data[2]
           Fz≔sensor_data[3]
           Mx≔sensor_data[4]
           My≔sensor_data[5]
           Mz≔sensor_data[6]
         Else
           Fx≔0.0
           Fy≔0.0
           Fz≔0.0
           Mx≔0.0
           My≔0.0
           Mz≔0.0
       SubP_rq_set_zero
         rq_set_zero()
       SubP_rq_print_firmware_version
         rq_print_firmware_version()
       SubP_rq_print_prod_year
         rq_print_prod_year()
       SubP_rq_print_serial_number
         rq_print_serial_number()
       SubP_rq_print_version
         rq_get_version()
    



  • Tyler_BerrymanTyler_Berryman Posts: 122Beta Tester Beetle, Wrist Camera URCap 1.3.0 Handy
    edited August 2016
    Better late, than never. Here is the video for team 2!



    Code
    Program
       Init Variables
       BeforeStart
         Script: accessor_capt.script
         socket_close("stream")
         socket_open("127.0.0.1",63351,"stream")
       Robot Program
         MoveJ
           Gripper Move 52%
           Waypoint_1
         Camera Locate
           MoveL
             app
             pick
             Gripper Move 72%
             app
           MoveL
             Waypoint_3
           Pallet
             Pattern: Line
               StartPos_1
               EndPos_1
             PalletSequence
               Waypoint_4
               Approach_1
               'PatternPoint_1'
               Loop norm(Mx)<0.5
                 var_1≔get_actual_tcp_pose()
                 var_2≔pose_add(var_1,p[-0.0005,0,0,0,0,0])
                 var_2
               Loop norm(Fz)<10
                 var_3≔pose_trans(get_actual_tcp_pose(),p[0,0,0,0.01,0,0])
                 var_3
               Gripper Move 52%
               Exit_1
           MoveJ
             Waypoint_3
       Thread_1
         sensor_data≔socket_read_ascii_float(6,"stream")
         If sensor_data[0] ≥6
           Fx≔sensor_data[1]
           Fy≔sensor_data[2]
           Fz≔sensor_data[3]
           Mx≔sensor_data[4]
           My≔sensor_data[5]
           Mz≔sensor_data[6]
         Else
           Fx≔0.0
           Fy≔0.0
           Fz≔0.0
           Mx≔0.0
           My≔0.0
           Mz≔0.0
       SubP_rq_set_zero
         rq_set_zero()
       SubP_rq_print_firmware_version
         rq_print_firmware_version()
       SubP_rq_print_prod_year
         rq_print_prod_year()
       SubP_rq_print_serial_number
         rq_print_serial_number()
       SubP_rq_print_version
         rq_get_version()
    


    Tyler Berryman
    Robotiq Integration Coach
    [email protected]
    1-418-380-2788, option 3
  • Tyler_BerrymanTyler_Berryman Posts: 122Beta Tester Beetle, Wrist Camera URCap 1.3.0 Handy
    Hey guys! This is how we did challenge 2 at Robotiq:



    For this challenge, we used the vision system to identify the PCB. Then, we used the object detection feature to verify that our pick was successful. Upon a successful pick, we move the PCB towards the insertion jig with a slight angle. This angle will give clearance to the pins underneath the PCB. The next step in the program is to slowly move the PCB towards the end of the insertion jig. While the robot is moving the PCB, we are constantly monitoring the force to see when the PCB has encountered the edge of the insertion jig. Once the force has reached the threshold that we set previously, the robot will lay the PCB flat against the insertion jig. This will avoid any possible "Sticky Finger" Problems when releasing the part. We have also used popups to show when you could use an I/O to empty your tray or to activate a feeder. 

    Enjoy!
    Tyler Berryman
    Robotiq Integration Coach
    [email protected]
    1-418-380-2788, option 3
  • Tyler_BerrymanTyler_Berryman Posts: 122Beta Tester Beetle, Wrist Camera URCap 1.3.0 Handy
    edited September 2016
    Program
       Init Variables
       BeforeStart
         Script: accessor_capt.script
         socket_close("stream")
         socket_open("127.0.0.1",63351,"stream")
       Robot Program
         MoveJ
           Waypoint_1
           Camera Locate
             MoveL
               Gripper Move 52%
               Approach_Pos
               Pick_Pos
               Gripper Close
               find≔0
               If rq_is_object_detected()
                 MoveJ
                   Retreat_Pos
                   Set Count=Count+1
                   Approach_Tray
                 Pallet
                   Pattern: Line
                     StartPos_1
                     EndPos_1
                   PalletSequence
                     Tray_Pos
                     Loop norm(Mx)<0.5
                       var_1≔get_actual_tcp_pose()
                       var_2≔pose_add(var_1,p[-0.0005,0,0,0,0,0])
                       var_2
                     No_Sticky_Finge
                     Gripper Move 52%
                     Place_Retreat
                     If Count≟4
                       Popup
                       Count≔0
               Else
                 Popup
           Set find=find+1
           If find≟5
             Popup
             find≔0
       Thread_1
         sensor_data≔socket_read_ascii_float(6,"stream")
         If sensor_data[0] ≥6
           Fx≔sensor_data[1]
           Fy≔sensor_data[2]
           Fz≔sensor_data[3]
           Mx≔sensor_data[4]
           My≔sensor_data[5]
           Mz≔sensor_data[6]
         Else
           Fx≔0.0
           Fy≔0.0
           Fz≔0.0
           Mx≔0.0
           My≔0.0
           Mz≔0.0
       SubP_rq_set_zero
         rq_set_zero()
       SubP_rq_print_firmware_version
         rq_print_firmware_version()
       SubP_rq_print_prod_year
         rq_print_prod_year()
       SubP_rq_print_serial_number
         rq_print_serial_number()
       SubP_rq_print_version
         rq_get_version()
     

    Tyler Berryman
    Robotiq Integration Coach
    [email protected]
    1-418-380-2788, option 3
Sign In or Register to comment.
Left ArrowBack to discussions page