Robot doesnt pick up volumes

Hello all

Im just making a simple program with kuka sim 4.3.
now my robot doesn’t pick up the volumes on the conveyor.
I’ve searched on the internet but had no luck
I hope the video helps make my problem clear.

If i make the volume of the claws bigger it picks up the orange boxes but doesn’t pick up the volume.
any fixes are welcome!

2023-10-23 22-02-49.mkv (2.3 MB)

Hi, can i see your code? i think you didn’t set any $OUT[…] for an action.

Here it is in tekst and in picture, i’ve also included the document at the end

DEF MAIN()
;FOLD INI;%{PE}
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS == TRUE DO IR_STOPM()
INTERRUPT ON 3
BAS(#INITMOV, 0)
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
LOOP
;FOLD SPTP HOME Vel=100 % DEFAULT Tool[0] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=HOME; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=DEFAULT; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP; SimId=
;ENDFOLD
SPTP XHOME WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FHOME), $BASE = SBASE(FHOME.BASE_NO), $IPO_MODE = SIPO_MODE(FHOME.IPO_FRAME), $LOAD = SLOAD(FHOME.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PDEFAULT), $APO = SAPO_PTP(PDEFAULT), $GEAR_JERK[1] = SGEAR_JERK(PDEFAULT), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
$OUT[2] = TRUE
$OUT[1] = TRUE
$OUT[1] = FALSE
Cilinder_pakken()
IF TRUE THEN
Cilinder_Groen()
ELSE
Cilinder_Geel()
ENDIF
ENDLOOP
END

DEF Cilinder_pakken()
$OUT[100] = TRUE
$OUT[1] = TRUE
WAIT SEC 1.0
WAIT FOR ($IN[1] == FALSE)
;FOLD SLIN P1 Vel=2 m/s CPDAT3 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P1; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT3; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN; SimId=
;ENDFOLD
SLIN XP1 WITH $VEL = SVEL_CP(2.0, , LCPDAT3), $TOOL = STOOL2(FP1), $BASE = SBASE(FP1.BASE_NO), $IPO_MODE = SIPO_MODE(FP1.IPO_FRAME), $LOAD = SLOAD(FP1.TOOL_NO), $ACC = SACC_CP(LCPDAT3), $ORI_TYPE = SORI_TYP(LCPDAT3), $APO = SAPO(LCPDAT3), $JERK = SJERK(LCPDAT3), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
$OUT[100] = FALSE
WAIT FOR $IN[101] == TRUE
;FOLD SPTP P2 Vel=100 % PDAT2 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P2; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT2; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP; SimId=
;ENDFOLD
SPTP XP2 WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FP2), $BASE = SBASE(FP2.BASE_NO), $IPO_MODE = SIPO_MODE(FP2.IPO_FRAME), $LOAD = SLOAD(FP2.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PPDAT2), $APO = SAPO_PTP(PPDAT2), $GEAR_JERK[1] = SGEAR_JERK(PPDAT2), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
END

DEF Cilinder_Groen()
;FOLD SPTP P4 Vel=100 % PDAT4 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P4; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT4; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP; SimId=
;ENDFOLD
SPTP XP4 WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FP4), $BASE = SBASE(FP4.BASE_NO), $IPO_MODE = SIPO_MODE(FP4.IPO_FRAME), $LOAD = SLOAD(FP4.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PPDAT4), $APO = SAPO_PTP(PPDAT4), $GEAR_JERK[1] = SGEAR_JERK(PPDAT4), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P6 Vel=2 m/s CPDAT4 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P6; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT4; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN; SimId=
;ENDFOLD
SLIN XP6 WITH $VEL = SVEL_CP(2.0, , LCPDAT4), $TOOL = STOOL2(FP6), $BASE = SBASE(FP6.BASE_NO), $IPO_MODE = SIPO_MODE(FP6.IPO_FRAME), $LOAD = SLOAD(FP6.TOOL_NO), $ACC = SACC_CP(LCPDAT4), $ORI_TYPE = SORI_TYP(LCPDAT4), $APO = SAPO(LCPDAT4), $JERK = SJERK(LCPDAT4), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
$OUT[100] = TRUE
WAIT FOR $IN[102] == TRUE
;FOLD SLIN P8 Vel=2 m/s CPDAT6 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P8; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT6; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN; SimId=
;ENDFOLD
SLIN XP8 WITH $VEL = SVEL_CP(2.0, , LCPDAT6), $TOOL = STOOL2(FP8), $BASE = SBASE(FP8.BASE_NO), $IPO_MODE = SIPO_MODE(FP8.IPO_FRAME), $LOAD = SLOAD(FP8.TOOL_NO), $ACC = SACC_CP(LCPDAT6), $ORI_TYPE = SORI_TYP(LCPDAT6), $APO = SAPO(LCPDAT6), $JERK = SJERK(LCPDAT6), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
END

DEF Cilinder_Geel()
;FOLD SPTP P5 Vel=100 % PDAT5 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P5; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT5; Kuka.VelocityPtp=100; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SPTP; SimId=
;ENDFOLD
SPTP XP5 WITH $VEL_AXIS[1] = SVEL_JOINT(100.0), $TOOL = STOOL2(FP5), $BASE = SBASE(FP5.BASE_NO), $IPO_MODE = SIPO_MODE(FP5.IPO_FRAME), $LOAD = SLOAD(FP5.TOOL_NO), $ACC_AXIS[1] = SACC_JOINT(PPDAT5), $APO = SAPO_PTP(PPDAT5), $GEAR_JERK[1] = SGEAR_JERK(PPDAT5), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
;FOLD SLIN P7 Vel=2 m/s CPDAT5 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P7; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT5; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN; SimId=
;ENDFOLD
SLIN XP7 WITH $VEL = SVEL_CP(2.0, , LCPDAT5), $TOOL = STOOL2(FP7), $BASE = SBASE(FP7.BASE_NO), $IPO_MODE = SIPO_MODE(FP7.IPO_FRAME), $LOAD = SLOAD(FP7.TOOL_NO), $ACC = SACC_CP(LCPDAT5), $ORI_TYPE = SORI_TYP(LCPDAT5), $APO = SAPO(LCPDAT5), $JERK = SJERK(LCPDAT5), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
$OUT[100] = TRUE
WAIT FOR $IN[102] == TRUE
;FOLD SLIN P9 Vel=2 m/s CPDAT7 Tool[1]:TOOL_DATA[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.spline; Kuka.IsGlobalPoint=False; Kuka.PointName=P9; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT7; Kuka.VelocityPath=2; Kuka.VelocityFieldEnabled=True; Kuka.ColDetectFieldEnabled=True; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=SLIN; SimId=
;ENDFOLD
SLIN XP9 WITH $VEL = SVEL_CP(2.0, , LCPDAT7), $TOOL = STOOL2(FP9), $BASE = SBASE(FP9.BASE_NO), $IPO_MODE = SIPO_MODE(FP9.IPO_FRAME), $LOAD = SLOAD(FP9.TOOL_NO), $ACC = SACC_CP(LCPDAT7), $ORI_TYPE = SORI_TYP(LCPDAT7), $APO = SAPO(LCPDAT7), $JERK = SJERK(LCPDAT7), $COLLMON_TOL_PRO[1] = USE_CM_PRO_VALUES(0)
;ENDFOLD
END

case robotica.vcmx (3.1 MB)

1 Like

Ok, its as i said. you didn’t have an Output, which you set if you arrived at the grab point. and you don’t set this output to false if you want to release it. Please look for a tutorial in academy.

Try Output 1000 or what you want. Add Out[1000] =true at grab point and Out[1000]= false at release point. take this default settings.
image
it worked

Thanks for your help its working now!

Dear all
Now I am starting using kuka sim 4.1 with a very simple task: pick up and place an object.
My robot does not pick up the object. I followed the procedure shown in the video adding instructions like $out[101]=FALSE to close the gripper and pick up but it seems not working.
Any help would be very appreciated. In attachment you can find my file
project_template_modificato.vcmx (2.2 MB)

the task is picking object without stopping the conveyor. Is there some “tricks” to do this?
Thanks

hi,

you wait for input signal from sensorSignal, than you can set Engine signal from conveyor to False (in robot program) , connect signal between robot output and conveyor engine signal:

If your focus is on not stopping the conveyor and gripping the material on it, then this example may help.
trace.vcmx (869.9 KB)

thanks for your fast reply.
Sorry for my question but I’m an absolute beginner with kuka. I tried but it still does not pick.

I connected output 1 of robot to conveyor engine and in the main program (as you can see from attached file)

  • wait for input signal (from vertical sensor)
  • set out[1] = false
  • move robot near to the moving object
  • close gripper
  • move robot to final destination
  • open gripper

Is this the right sequence? Do I have to add somewhere a command like “set out[1] = true” ? where?
The command out[1] = false has an associated “command action” equal to “None”, is it right?
What actually does such command? It does not stop the conveyor

Some considerations: Ihave 3 robots and each oif them has to pick a different object so I should add the command (out[1] = false) for each robot, right?
Many thanks for your help

project_template_modificato.vcmx (2.1 MB)

The robot’s output [1] is represented in Visual Components as the robot using TOOL [0] to grab the material attached to the TCP. When it is True, the robot will query for a grabbable material based on the settings and grab it, and release it otherwise.

Thanks for your help!