Hey all, I am running some test to validate I am limiting the speed of my robot correctly.
I am using a KRC5 8.7.5 with a KR 20 R1810-2.
I have read through this post which was very helpful, but I still had some questions.
How to limt the speed of KUKA robot
I setup this simple program to make the robot Move at 200 mm, Twist 30 degrees, Swivel 30 degrees, then return to the starting position before I set any limits on the velocity.
I ran the program before and after setting a velocity limit at 20 mm.
I was doing this to check multiple things:
- make sure the velocity limit would slow down my tool after setting velocity limit
- I monitored $VEL_ACT while running to see the speed reduction
- Before limiting velocity, $VEL_ACT topped out at 180 mm/s
- After limiting velocity, $VEL_ACT topped out at 15mm/s
- I am not sure why I wasn't getting up to the set velocity. My LIN move seemed long enough to accelerate to 200 mm/s.
- I monitored $VEL_ACT while running to see the speed reduction
- see if any warnings or errors are thrown if I exceed my set limit
- No warnings or errors popped up when I commanded a most at 200mm when the limit was set to 20m
- I guess this is something I could check for in the submit and throw my own warnings
- No warnings or errors popped up when I commanded a most at 200mm when the limit was set to 20m
- confirm that swivel and twist would happen at the same speed after setting the velocity limit if the point of the positions were the same
- Swivel and Twist happened at the same speed with or without the velocity limit (as assumed)
- I changed $VEL.ORI1 and $VEL.ORI2 to control the rotations speeds
- This doesn't seem like a "safe" way to limit the robot
- I guess my only real option is to limit the degrees/s for the axis of the arm
Code
DECL E6POS startPos
DECL E6POS endPos
DECL E6POS twistPos
DECL E6POS swivPos
;make positions
startPos = $POS_Act
endPos = startPos
endPos.Y = endPos.Y + 200
twistPos = endPos
twistPos.c = twistPos.c - 30
swivPos = endPos : {x 0,y 0, z 0,a 30,b 0,c 0}
;set coordinates
BAS (#INITMOV, 0)
FDAT_ACT.TOOL_NO = 0
FDAT_ACT.BASE_NO = 0
BAS (#FRAMES)
;set speed
$APO.CDIS = 20
BAS(#VEL_CP, 200)
$vel.ori1 = 200
$vel.ori2 = 200
;move
PTP $AXIS_ACT
LIN startPos
LIN endPos
LIN twistPos
LIN endPos
LIN swivPos
LIN endPos
LIN startPos
Display More
I have a couple of questions ( sorry if I provided too much information up front ).
- Is there a reason why the robot went slower than my commanded velocity?
- I can understand why it didn't reach 200 mm/s before the set limit, but I don't understand why it couldn't get to 20 mm/s with the limit on the exact same move.
- Is there any other "safe" way to limit ORI1 and ORI2 directly other than limiting the degrees/s of the Axis?
- Is there a way to make the robot report warnings if the set velocity exceeds the Velocity limit
- Is there a way to make the robot report warnings if the joint speed is commanded to exceed rotation limits?
Thank you for the help in advance! I hope this post is informative and helpful for others as well.