Welcome to the second part of the Marleson ballet.
Part times.
In the first, we talked about how, in general, the disease meets on the territory of the Russian Federation, today we will discuss what happens when you climb very far under the skirt to Robert.
I will insert in the quote to highlight - my deepest apologies to the Khabravchanin who wrote a message under my previous post about kawasaki and universals in St. Petersburg. I am truly sorry, and my usability is not an excuse for poking the "complain" button instead of the "reply" button. This is exclusively my carelessness, and I did not even have time to remember your nickname to apologize. If it doesn't bother you, knock on the PM so I can apologize in person. I am sure that only virtuous modesty prevented you from taking this step, with the comment “What the hell!” Yesterday.Well, we haven't started yet - I have accumulated a lot of motley information. There will be a post about entering the profession, there will be programming of microcontrollers, there will be miracles in organizing and managing the development process, and so on. In this connection, the hubs in which the material will be published will float so as not to clog the thematic areas with irrelevant information.
Now let's go! (c) Yuri Gagarin.
What are we doing?
As we discussed in the first part, Roberts are ideal in situations of "digging from here to lunch", when the operations are standardized and he turns the same program in a loop.
But what if it isn't? What happens if we need to make a small batch, about 200 pieces? Load the complex for a week. And after a week - put another product in there. There is only one way out - to figure programs with handles, through the remote control. I highlighted the inconvenience of this sacred rite in the last article.
Let's aggravate. But what if - one product?
Take as an example the kindly providedvakhramovexample with milling the boat hull. Not strong in shipbuilding (well, except for welding micropanels, which in shipbuilding bear such a Gulliver name solely for mockery - these are fools for several meters and weighing hundreds of kg), but I can assume the following TK:
- We have in some CAD model of the boat hull.
- We have a non-figurative size cube made of something that is milled.
- We want to poke a button, and for the software to create magic, and the robot itself from a cube (or parallelepiped) milled something for us and verified.
Actually, the problem is straightforward typical for us (this was not specifically solved). There is a 3D model, there is a blank and a robert on the movement system. We need to create a program for it in the machine, control its implementation in real time, run the scanner and compare expectation and reality and polish something, well, voila.
We will talk about programming, the nuances of 3D parsing, the inverse problem of kinematics, the formation of control programs, about scanners and cameras much later. It is clear that this task is not trivial, and we, smearing tears of happiness with our sleeve, plunge into the process. But, like a foolish young lady, Robert proudly pulls up his proboscis and asks:
- Why all the attention to these your programs? Why are you only doing something there? And what about me? What, did they do me in vain?
Well, it throws out a bunch of features. Which we will talk about.
Singularity
The first thing that awaits us on the way of communication with Robert. The fact is that a program for a one-handed one can be written in two principal types of coordinates: Cartesian and joint. The first is the XYZ position and rotations around each of the axes. The second is an indication of the angles of installation of each of the axes at which the condition for the placement of the trunk in space is satisfied. The first are translated into the second and back quite correctly inside the controller itself. It's another matter if you, accidentally deciding that this is definitely the same story, decide to work in Cartesian. Hello
In general, a singularity is a state of mind of an iron friend, in which the speed of the motor along any of the axes will exceed the constructive one. It's not entirely clear, I'll try to explain.
When Robert moves his hand from point A to point B, he has two options. Or - set the speed for all motors evenly. In this case, the speed of each particular motor is equal to the required angle of rotation of a particular axis, divided by the time it takes to execute the movement. If this mode is selected, then the robot, moving between the points, writes beautiful arcs. It is a pity, but in the process of this movement, he does not drive in a straight line, but in the way that suits him. As a result, we have a non-illusory chance to come with a trunk to a product / walls / others like him.
The linear motion ensures that it drives in a straight line. But at the same time, the motors at different time intervals need to work at different speeds. And if this speed exceeds that which the motors can physically squeeze out of their winding soul, the robot writes "singularity." And that's all. The program stops.
The situation is slightly better in cases when coordinates are specified in joints instead of Cartesian ones. I don't quite understand why the controller reacts to points in joints a little differently than in Cartesian - maybe this is due to the logic of converting coordinates into corners. But in general, “maybe” is a magic phrase in robotics, it helps a lot in work and is used as a universal plantain.
Nevertheless, even linear movement between points, which are written in angles instead of coordinates, is not a guarantee that this will oblige the robot to follow them. Fanuk made a special instruction for this, and Yaskawa generally declares that their robots do not play the singularity. Both approaches don't work. With yaskava - if you think about the essence of this phenomenon - it looks like an attempt to bypass physics. The control panel does not really show the “singularity” inscription, but at the same time it informs about speeding on some axis. How is this different from a singularity? Nothing. Fanooks have a special team. WIRSJ, if my memory serves me (it was a very long time ago and did not work, so they forgot). Well yes. The robot continues to drive. Only in the process of movement does it "knead a stiff brush", making a movement with the end joints, so beloved by programmers when typing - to twist the wrist.The consequences of swinging, if Robert has a cutter or a laser head in his hand, is very funny, but scary. Therefore, the singular must be taken into account.
Ethernet
Let's say we figured out this story. Let's say we figured out the nuances of recording the UP in the corners of the joints in the funuk and model-dependent pulses in the Yaskawa. And now we need to push the program into the robot. You can, of course, take a flash drive and a worker who will proudly parade with it to Robert, but are we talking about automation in its purest form? Therefore, we need to send a program to an iron friend. Direct memory access is absent as a class, but we, restless, were left with such a thing as FTP. It seems that everything is cool, connect and go. But no. The robot can only be a client.
In fact, this function is used in order to pick up a UE from the file bin of the enterprise network, load it into the robot and execute it. A robot is a very modern thing, because the amount of memory in it is calculated in megabytes, and the Cuban barons swallow tears of despair, counting the cost of 1 byte and looking at their children's sandbox with white powder. In this connection - it will not work to store a thousand UPs on Robert - the memory will say "oh everything." And if we have a lot of programs, be so kind as to use the remote control to climb into the file looser and hurray: just a couple of minutes, and he, pumping the program on Dial-up, will report on readiness for work.
Well, well, if chaos cannot be defeated, it must be led. We will oblige Robert to upload the file via FTP. Why does he need to specify the file name (well, or always place a file with the same name in a folder), business. What is needed for this? Write a program for Robert, which in the background will wait for the command to load and load the program. And then do it. To do this, Yaskawa offers us to buy a development environment and deal with the internal sandbox that runs programs written in C. In terms of syntax, this is, of course, C, but with the constructions everything is not so obvious and very weak (because new, as much as 2 years) is documented. And technical support is in Deutschland, and there is no hurry to provide assistance.
Fanuc hasn't gone far here. You also need to buy a development environment, at the same time purchasing an option. In funook, every sneeze is an option. The list of this joy is truly impressive, and the cost can cause accounting allergies to yellow. But - everyone earns as he can.
Wrote, launched. It even works. Times 5. And then swears at the lack of memory, because your programs are long - it's fucking. Three times. Swearing, let's go to finish writing the deletion. Debazhim. And at some point, Robert stops responding over the network. And all why? And because he keeps the connection and does not know how to reconnect. Has the server slowed down? Please reboot food. Put a breakpoint? Dosviduli, food reboot. Over the course of our work, we never found a way to resurrect the connection from Robert's side, and the sonorous click of the switch was an obituary for every debugging session.
Debugged, finished and wiped away the labor sweat? Robert is in position, the cube is ready for filing, the cutter is running and sharpening teeth in anticipation? Hooray? Are you sure?
Accuracy
Point coordinates are specified with an accuracy of 1 thousandth mm. Robert can walk with an accuracy of one hundred square meters. Hypothetically. Plus minus. But still impressive! But what is this accuracy?
This accuracy is about repeatability. The recurrence of Robert's arrival at a point in space is 100 thousand times. But if suddenly you decide to move Robert by 1000 mm, then this will not be 1000 mm. Not in life. At least on Robert's normal, and not wing-aircraft value. Why?
The fact is that Robert has a virtual model inside him. He does not know how, like a terminator, to view his guts on the display inside the cranium, but he uses this set of numbers characterizing the dimensions of each joint to convert from Cartesian to joints. In fact, for Robert, Cartesian coordinates are just an unknown game, whose name is "pure abstraction." All that the driver inside the controller can do is turn each of Robert's 6 motors at a certain angle. And in order to convert from Cartesian to joints, the very constants are used that denote the sizes of the joints. And at the factory, where they pour, sharpen and saw the details of the future oppressors of the human race, there are also tolerances. Now imagine what kind of error the displacement of the size of one of the joints by, say, 0.5 mm can bring.
So it turns out that the controller considers everything correctly, but is based on inaccurate data. On the freewheel of a meter, we intended a spread of 1.5 mm for a completely new, never familiar with walls, fanook. There are even special guys who come and, through complex rides with measuring equipment in the entire accessibility zone, make either correction tables, or they correct these values in Robert's guts. Again, in the classical application this is not necessary - the operator brought the robot to several points, checked the accuracy and asked him to repeat this for the next 5 years. Errors do not play a role here - the robot loses its ability to grow, no matter how much you pour into it, immediately after leaving the factory. And in order to bend the geometry of a piece of iron, it needs to be soooo shaken ... I don't think that after such loads it will be able to work in principle. But we need itand this problem has to be solved.
Feedback
... is completely absent. If you want to ask Robert for his current coordinates, the position of the motors or the line of the executable program, the oblomingo bird arrives and happily begins to hint that it would be nice to continue smoking manuals and learn programming. It is necessary - write.
I don't mind - but I don't seem to want to receive a passport and apartment keys from Robert. It seems to be a standard thing. Although, in general, I may not be aware of the logic behind these restrictions, which turned Ethernet into a one-way bridge - it is quite possible that this is related to security.
I decided so
Another
Moreover, there is no clear pattern - sometimes from -185 to +180 it drives correctly, and sometimes from -165 to +175 it can take off in the wrong direction. Why this damn optimization is not clear, but the program has to be written by inserting a point at which the axis is set to zero. And if, according to the process technology, you turned it up for ± 180, then add ± 90, because otherwise it will explode again along the shortest path. Valid for 4th and 6th axes.
Shamanism
Do sysadmins have a tambourine? They are weaklings! The robotic driver does not appear in front of the face of the piece of iron without sprinkling it with holy water, without hanging himself on the legs of chickens and rabbits, without putting a buffalo skull on his head and without releasing yaki shurikens from a dozen horseshoes.
I have ceased to be surprised by the "seven troubles - one reset" rule. This switch has already become dear to me, a dog. I am not surprised at the “why” and “because” answers. But some things keep on delivering. For example, a calibration with a weld tracking system, after which Robert can begin to drive to the side. Or backups that don't expand. Or the comments "next% CrapName% has flown." Or absolutely randomly working native path fillets. This has become the norm.
Instead of a conclusion
I do not call to evaluate my words as whining. Like "oh, how difficult it is to live with them." Despite their quirks, these very funny animals bring a lot of joy. And breaking through the thorns of poorly documented functions and snatching miracles on seemingly standard things says only one thing - when developing the Roberts, these issues were not given due attention. And overall, what your daily use depends on works great.
The emergence of new technologies will inevitably lead to the fact that Roberts will become more friendly towards the developer, and the current dancing with a tambourine will gradually become a thing of the past. They change, however, not as fast as we would like. In terms of conservatism, they are galloping ahead of the evolution of sharks, but do not keep up with the speed of the reforms of the British parliament. You just need to wait, and today - learn to bypass these annoying restrictions and cute oddities.
Next time we will talk about the threshold of entering the profession, and then we will consider the features of the implementation on .NET of importing models from CAD. Or - the nuances of surface scanning. All - on the example of a boat from a cube. We have to cut it out.