Discussion

Left ArrowBack to discussions page
Etienne_SamsonEtienne_Samson Posts: 376 Handy
edited August 2016 in Robotiq Products
This challenge consists of an advanced assembly of a Robotiq Universal Controller

Provided material:
  • Control box with panel

  • Panel screws (black)
  • Din rails with screws
  • PCB with screws

  • 12V Spur Gearmotor with hex-shank bit holder
  • Complete bit set
Goal: Use vision to pick the PCB, the panel and the DIN rails. Assemble the control box.

Hint 1: You can control the motor with IO's.

Hint 2: You can insert the PCB in place using force signals.

Good luck!
Etienne Samson
Technical Support Director
+01 418-380-2788 ext. 207
esamson@robotiq.com

Comments

  • Catherine_BernierCatherine_Bernier Posts: 133 Crew
    edited August 2016
    Team 3

    Part 1: PCB Insertion using force sensor



    Part 2: Lid Placement



    Here is the code
    Loop
           'Write robot program here.'
           Call Task_4
           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()
       Task_4
         MoveJ
           Waypoint_1
         Gripper Move 65%
         'Camera Locate'
         Gripper Open
         Camera Locate
           MoveL
             Waypoint_14
             Waypoint_16
             Gripper Close
             Waypoint_14
           MoveJ
             Waypoint_17
             Waypoint_18
             Gripper Open
             Waypoint_17
             Waypoint_19
             Gripper Close
             Wait: 1.0
             Loop Fy<5
               MoveL
                 Waypoint_20
             Waypoint_23
             Waypoint_21
             Wait: 1.0
             Loop Fx>-5
               MoveL
                 Waypoint_22
             Waypoint_21
    



    Catherine Bernier, Jr. Eng. 
    Application Engineer at Robotiq
    c.bernier@robotiq.com
    https://www.linkedin.com/in/catherinebernier
  • EnricEnric Posts: 81Founding Pro, Partner, Beta Tester VIsion 1.1 Program, Beta Tester Multi Gripper, Beta Tester Camera URCap 1.2.0-beta Handy
    edited August 2016
    Team 4



    With Force torque and Path recording

    Code
     Program
       BeforeStart
         Folder
           Script: accessor_capt.script
           socket_close("stream")
           socket_open("127.0.0.1",63351,"stream")
           rq_set_zero()
           Gripper Open
       Robot Program
         Gripper Open
         MoveJ
           Waypoint_1
         'Camera Locate'
         'MoveJ'
         'Camera Locate'
         Tornillo1
           MoveJ
             Waypoint_16
             Waypoint_18
             MoveL
               Set TO[0]=On
               Waypoint_17
               Wait: 1.0
               Set TO[0]=Off
               Waypoint_18
             Waypoint_20
             Set TO[0]=On
             MoveL
               Waypoint_19
               Loop get_tool_current()<.200
                 var_2≔pose_trans(Tool,p[-0.000,-0.000,0.001,0,0,0])
                 var_2
               Set TO[0]=Off
               Waypoint_20
       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
         sync()

    Enric Vila Avila
    Vicosystems S.L.L.
    Industrial Collaborative Systems

    evila@vicosystems.com

    twitter  linkedIn  YouTube  Google
  • Annick_MottardAnnick_Mottard Posts: 128 Handy
    edited August 2016
    Here is the code Team 1 developed for this challenge! We made it to the first screw!

    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 56%
           Waypoint_1
         Camera Locate
           MoveL
             app
             pick
             Gripper Close
             app
           MoveJ
             App_Fixture
             Waypoint_16
           MoveL
             Waypoint_17
             Waypoint_18
             Waypoint_19
             Wait: 1.0
             Gripper Move 68%
             Waypoint_2
             Gripper Close
             Waypoint_4
             Waypoint_5
             Waypoint_6
             Waypoint_7
             Gripper Open
           MoveL
             Waypoint_8
             Waypoint_3
             Waypoint_9
             Gripper Close
             Waypoint_10
             Waypoint_11
             Waypoint_12
             Gripper Open
             Waypoint_13
             Waypoint_14
             Waypoint_15
             Waypoint_13
           MoveL
             Waypoint_20
             Waypoint_21
             Gripper Close
             Set
             Loop 4 times
               Pallet
                 Pattern: Line
                   StartPos_1
                   EndPos_1
                 PalletSequence
                   Approach_1
                   Set TO[0]=On
                   PatternPoint_1
                   Wait: 1.0
                   Set TO[0]=Off
                   Exit_1
               Waypoint_22
               Pallet
                 Pattern: Square
                   a1st_Corner_1
                   a2nd_Corner_1
                   a3rd_Corner_1
                   a4th_Corner_1
                 PalletSequence
                   Approach_2
                   PatternPoint_2
                   set_tool_voltage(12)
                   Set TO[0]=On
                   Wait: 0.5
                   'set_tool_voltage(24)'
                   Force
                     Wait get_tool_current()≟0.35
                     Set TO[0]=Off
                   Exit_2
               Waypoint_22
       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()
    


    Annick Mottard
    Product Expert
    Robotiq
    a.mottard@robotiq.com 
  • Tyler_BerrymanTyler_Berryman Posts: 117 Handy
    edited August 2016
    We did not use the vision system, but we managed to build "fairly" rigid positioning jigs. We made it to the first screw.

    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 56%
           Waypoint_1
         Camera Locate
           MoveL
             app
             pick
             Gripper Close
             app
           MoveJ
             App_Fixture
             Waypoint_16
           MoveL
             Waypoint_17
             Waypoint_18
             Waypoint_19
             Wait: 1.0
             Gripper Move 68%
             Waypoint_2
             Gripper Close
             Waypoint_4
             Waypoint_5
             Waypoint_6
             Waypoint_7
             Gripper Open
           MoveL
             Waypoint_8
             Waypoint_3
             Waypoint_9
             Gripper Close
             Waypoint_10
             Waypoint_11
             Waypoint_12
             Gripper Open
             Waypoint_13
             Waypoint_14
             Waypoint_15
             Waypoint_13
           MoveL
             Waypoint_20
             Waypoint_21
             Gripper Close
             Set
             Loop 4 times
               Pallet
                 Pattern: Line
                   StartPos_1
                   EndPos_1
                 PalletSequence
                   Approach_1
                   Set TO[0]=On
                   PatternPoint_1
                   Wait: 1.0
                   Set TO[0]=Off
                   Exit_1
               Waypoint_22
               Pallet
                 Pattern: Square
                   a1st_Corner_1
                   a2nd_Corner_1
                   a3rd_Corner_1
                   a4th_Corner_1
                 PalletSequence
                   Approach_2
                   PatternPoint_2
                   set_tool_voltage(12)
                   Set TO[0]=On
                   Wait: 0.5
                   'set_tool_voltage(24)'
                   Force
                     Wait get_tool_current()≟0.35
                     Set TO[0]=Off
                   Exit_2
               Waypoint_22
       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()

  • Alexandre_PareAlexandre_Pare Posts: 56 Crew
    Here is what were able to do for team 5, we weren't able to complete the challenge.

     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
           snap
         Camera Locate
           Gripper Move 54%
           MoveL
             prepick2
             pick2
             Gripper Close
             prepick2
           MoveJ
             preplace2
           MoveL
             Path
             Gripper Move 67%
             preplace2
             Gripper Open
         MoveJ
           snap
         Camera Locate
           MoveL
             prepick1
             pick1
             Gripper Close
             prepick1
           MoveJ
             preplace1
           MoveL
             place1
             Gripper Open
             preplace1
         MoveJ
           pickpin1
         MoveL
           pin1
           Set TO[0]=On
           rel
           Set TO[0]=Off
           pickpin1
         MoveJ
           pin1top
         MoveL
           prescrew
           Set TO[0]=On
           If Fz≤50
             Waypoint_1
           Set TO[0]=Off
       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()

    Alexandre Pare, Eng.
    Application Engineer
    Robotiq
    alexandre.pare@robotiq.com
  • Etienne_SamsonEtienne_Samson Posts: 376 Handy
    Here is what we did.
    We used the camera to located the PCB and programmed waypoints for the rest of the application. 


    Program
       Robot Program
         MoveJ
           Waypoint_1
           Gripper Open
         Camera Locate
           MoveL
             Waypoint_12
             Gripper Move 56%
             Waypoint_13
             Gripper Close
             Waypoint_14
           MoveJ
             Waypoint_15
             Waypoint_16
             Waypoint_17
             Waypoint_18
             Waypoint_19
             Waypoint_20
             Gripper Move 67%
             Waypoint_21
             Waypoint_22
             Waypoint_23
             Waypoint_24
             Waypoint_25
             Waypoint_26
             Waypoint_27
             Waypoint_28
             Waypoint_29
         MoveJ
           Waypoint_1
           Gripper Open
         Halt
    


    Etienne Samson
    Technical Support Director
    +01 418-380-2788 ext. 207
    esamson@robotiq.com
Sign In or Register to comment.
Left ArrowBack to discussions page