How to create a smooth movement by feeding a series of the target points on YuMi?
I have a question about how to create a smooth movement by feeding a series of the target points on YuMi. I’m trying to move the TCP based on 3D mouse input. For IRB, it was easy because I could use EGM.
Currently, I’m sending the targets via TCP/IP communication by mostly using open_abb like code. Every PC running cycle, I send the following instruction to the robot. Params{1} - {7} is the position and the pose of the next target. I can change the frequency to send, and I tried 0.02, 0.1 and 0.2 sec (= 50Hz, 10Hz, 5Hz).
cartesianTarget :=[[params{1},params{2},params{3}],
[params{4},params{5},params{6},params{7}],
initialCartesianPose.robconf,
externalAxis];
MoveJ cartesianTarget, v100, z0, currentTool \WObj:=currentWobj ;
However, the movement created wasn’t what I wanted. The robot repeated small movement and stopped around every 0.2 - 0.5 sec and didn’t move smoothly (and had a lot of “50024 Corner path failure” warnings). I observed that the robot executed around 3 - 5 MoveJ intrusions and then stopped for every small movement cycle. The length between each target was around 10-20 mm in the most of the case, it was sometimes around 5mm, but still bigger than the size of zone area for fly-by point setting.
To understand how PP works and how close I can set each target point, I also conducted the following experiment. Based on a given number, the following code created many targets and moved the robot as it drew a circle. Of course, if I feed too big number like 1000, the robot won’t move smoothly because of the corner path failure or “50124 zone converted to fine point”. When I used 600 points, the robot still moved very smoothly. 600 points mean 0.6 degree per one movement from point to point (= around 1mm in this setting, which is bigger than z0 zoning setting) and each single movement takes around 0.01sec to complete.
FOR i FROM 1 TO (params{1}) DO
cartesianTarget :=[[300+100*Sin(360*i/params{1}),-300+100*Cos(360*i/params{1}),250],
[0,0,1,0],
initialCartesianPose.robconf,
externalAxis];
MoveJ cartesianTarget, v100, z0, currentTool \WObj:=currentWobj ;
ENDFOR
To me, the conditions such as a number of points, the length between the points were much strict in the second implementation, but it did work.
Then, here is my question; Why the first implementation didn’t make a smooth movement? How can I make a smooth movement based on it?
0
Categories
- All Categories
- 5.5K RobotStudio
- 396 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 250 ScreenMaker
- 2.8K Robot Controller
- 316 IRC5
- 61 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 800 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 5 Job listings