I will work on IRB 140 in my thesis but I’m now have a little bit confuse that Does ABB robot support to real time control or not ?
Thank you in advance for anyone who gives me the useful information.
Paramin
I will work on IRB 140 in my thesis but I’m now have a little bit confuse that Does ABB robot support to real time control or not ?
Thank you in advance for anyone who gives me the useful information.
Paramin
Hi Aramin,
I am not sure I understand your question correctly. However, the virtual robot controller used by RobotStudio supports ‘virtual time’ which means that RobotStudio can control the time. During a simulation RobotStudio feeds the controller with time that the controller consumes during execution. By this way, several controllers and any SmartComponents present in the simulation can be synchronized time wise. Just ensure that you have selected ‘Time Slice Mode’ in the RobotStudio Options. The other virtual time option ‘Free Run’ allows the robot controllers to control the execution speed themselves. In both cases, the simulated robot program execution times will match the true robot exeuction time within a few percentages.
It is recommended to use ‘Time Slice mode’ which will be the best option for most cases. Time Slice mode will also ensure correctly recorded Station Viewers and Simulation Recordings (.avi, wmv).
Thank you for your useful response.
I will work on an ABB IRB 140 robot for transfering an object to a human while force sensors and 3D cameras are going to be used. It needs to be a quick response to accomplish the task. Someone told me It can not possible to control ABB robots in real time because the ABB robots can not support for the real time control mode.
Could you make me clear about this issue.
Thank you in advance and looking forward to hear from you.
Best regards,
Paramin
There is a RobotWare option for Force Control that may be of interest to you. Moved to RobotWare forum.
The Safe interaction between the Human and robot manipulator is accomplished through our SafeMove product. Go to the ABB web site http://www.abb.com/product/seitp327/ec6cfad87f69dd2dc12572d300775f5b.aspx?productLanguage=us&country=00
BR Jim Proulx
Thank you.
Paramin, if it is a simple real time position control you need, you can do it “indirectly”.
Let me explain: You can stabilish a communication wit the controller using RS232 or TCP/IP (I’ve never tried any CAN) and use this communication channel to update the position you want the robot to move to. I think the simplest way to do this is to put the folowing move instriction in a loop and update the offsets:
Move(L or J) Offs( InitialPosition, dX, dY, dZ)
With this you can update the x, y and z positions whenever you send a new value to the robot controller. The bad thing if that you can not reorient the tool. To do so, you will need to send the robot the target quaternions value and update it before.
I’m sorry if I was not clear and also if I misunderstood your needs. Feel free to ask for more information.
Leo
Hi,
the communication strategy that leonardolt is proposing would only reach up to 5 Hz. I suppose that with real time control we should be reach something like 100 Hz. With quicker speeds it would be possible to create a much better human robot interaction.
Paramin, did you find out if the ABB has any Real Time option? I am interested as well. Thanks
Enrique
We have an IRB 6650S robot, and I’m trying to do real-time control with it.
There is a latency of about 460ms between executing the MoveL command and the robot actually moving. Is this normal ?
I suspect it’s the path-finding / inverse kinematics algorithm of the ABB controller that causes the 460ms delay. Is it possible to replace / by-pass this with a custom IK solver ?
What is the minimum latency that I can expect ?
Could it be the flexpendant that slows things down ? It’s displaying the RAPID code all the time.
Thanks,
Jaco
Dear Jaco,
What version of controller do you have? IRC5 or SC4?
You can have a look to my post on ( http://forums.robotstudio.com/forum_posts.asp?TID=7833) where I explain my delay problems with several instructions. I am commanding joints values so I will do the IK but I still have problems if I want to execute this in real time continuously because the Stop Move and Clear Path commands take 300 ms more or less.
The MoveAbsJ (To command joint values directly) is very fast (several ms) but the rest of the necessary instructions are not. And if you wait the robot to finish the movement in order to command a new point you obviously have a longer delay.
How are you measuring the latency?
I do not think the FlexPendant is slowing the things. I have been told that the maximun frecuency with the most modern controller IRC5 with the software option of Robot Reference Interface can it manage a maximum of 250 Hz. Unfortunately I do not have either.
Regards
Enrique
Hi Enrique,
We have the IRC5 controller, with RW5.14
I measure the latency by sending the robot on a sinusoidal path based on time elapsed, so I know where the robot should be at a specific time. I then read back the position of the robot at each time step. Then I plot the input path and the actual robot position at each time step and compare the 2 graphs. The offset between the 2 graphs gives me the latency.
I’m sending and receiving commands between the PC and IRC5 at a rate of 250Hz. But only perform a MoveL command at a rate of 25Hz. With the MoveL command I tell the robot to move to a location and take 40ms to get to the target location in order to match the 25Hz. The robot freaks out when I try to go faster.
Do you really need to call StopMove and ClearPath ? Can’t you just update with joints with small increments at a high speed ?
I haven’t tested the MoveAbsJ command yet, it might be a good idea to test the latency in the same way.
Regards,
Jaco
TMS angle 1&2 are the actual positions at each time step.
The measure latency is 0.46 seconds.
Hi Jaco,
that is a very interesting method. Why are you sending a sinusoidal path instead of a linear one? What I was doing is to set digital outputs on and off and measure the frequency with an oscilloscope.
I think 25 Hz is not too bad taking into account that the robot should move itself. I suppose that you wait for the robot to reach the target position before it accepts a new one. With the time that the robot invest in moving itself I think it is not too bad. When I do the same with the SC4 controller and old serial communication I get at most 5 Hz. Yo should take into account that the maximum speed that the robot moves is only in automatic movement.
I was using StopMove and ClearPath in order to send continuous commands at high frequency even if the robot has not reached them but it did not work well for the time in executing them.
I will try your method of measuring latency at some point.
Regards
Enrique
The sinusoidal path was for test purposes, we have another mechanical (non ABB) rotating platform that must be alligned with the ABB robot. When putting this device and the ABB robot on the same sinusoidal path “should” keep them alligned, but we noticed the huge delay when trying out the generated paths.
25Hz is not bad, BUT with a 460ms delay its sort of useless for our application.
I don’t wait for the robot to reach the target position. I keep a circular buffer that collects the messages (target positions every 4ms) and only process the last one every 40ms.
Hi people.
I also faced some problems regarding to execution time of some commands. In my application I have some target points programmed to be followed by the robot. Those are control points whis known position and orientation. I perform an interpolation of the robot’s position in between the control points. I know that the robot has reached the point using a TriggL command and sending me a message by TCP/IP.
The first time I figured out that I was having some timing problem I blamed the TCP/IP connection, cause it is not time deterministic. Further I noticed that some of those problems were caused in two different situations:
So I found it would demmand a lot of work to get maybe poor improvement and thus I decided to let is as it is. Now my approach is to use an inertial naviagation system to determine in real time the position of the robot. Unfortunatly this solution is not implemented yet, because this project is stand by for a while.
By the way Enrique, could you tell me more why the method I used would reach up to 5Hz?
Best regards
Leo
I got a delay of 600ms by using the MoveAbsJ command to just rotate one of the joints (J6) continuously… it does not make sense
Hello all,
In my case, I have finished establishing my system (as recomended by leonardolt ). It collects ATI F/T sensor over RS-232 prior to processing, after that the output delta (x,y,z) is sent to IRC5 over TCP/IP. Linux has been used as an external computer.
I’ve just measured the cycle time taken during TCP/IP communication of around 300 ms (by sending a set of data and receving an acknowledge from the robot).
Could anyone tell me how to program the robot to complete a task, where a robot is required move to delta (x1,y1,z1) and if the command MOVE delta (x2,y2,z2) is suddenly fetched, the robot has to move second point automatically (eventhough the first point is whether reached or not !)
Thank you very much.
Regards,
Paramin
Dear Paramin,
I think the way you could do that is creating another task that will only treat your system’s requests. So, whenever you need, send this task a message and it should execute a StopMove (to effectively stop the actual movement of the robot) and a ClearPath (to flush the move buffer and let it ready to receive your next position).
I suggest you to create another task only to avoid that your changing target position request would get delayed by the execution of any move instruction, but the best practice will depend on how you are fetching the commands.
Any doubts on StopMove or ClearPath can be checked in the instruction set documentation: 3HAC16581-1_REVH_EN
Hope this helps you a bit.
Best regards
Leo
Thank you very much again, Leo
I will try to do it but I’ve never tried to create two tasks in a one program before (I’m a very new learner). Have you got any document about how to make it ? I will be greately appriciated if you can recommend me again.
PS. Do I have to upgrate my Robotware in IRC5 to support the multi-task programing or It’s already installed ?
Thanks again for your all support.
Best regards,
Paramin
Paramin, unfortunatly I don’t know if any upgrade is necessary, but I don’t believe so. Creating a new task from teach pendant is as easy as creating a new module. The only issue is that the new task will not be a moving task, once it will only be used to manage the system.
I found some information you may be interested in the followinng documet: 3HAC16580-1_REVH_EN
Feel free to feed back whenever you have some results.
Best regards,
Leo