DO NOT ENTER! TESTING IN PROGRESS! (continued)
This is a continuation from my previous post.?I have spent this past week testing and gathering more information concerning the drift issue while also reviewing the math behind the kinematics.?Since my background is controls engineering, I had to revisit the math and get a better understanding of how everything relates but it is a subject I have interest in knowing and I believe it helps me to direct my guys in discussions regarding our options.??
In theory, there are several ways to control or adjust for thermal drift.
Quality Control?-?Use only robots meeting a thermal drift standard. (Not likely.)
Physical Control?- Maintain the thermal dynamics of the mechanicals through software and temperature control devices on each relative joint.
Software Control -?PC based changes
·????????Add thermal variables to the kinematic model of the robot that can adjust coordinate positioning based on the thermal state of the robot joints. (too involved but doable)
·????????Add machine learning algorithm adjustments based on a model that reflects the effects of thermal drift and apply adjustments to program prior to execution. (most accurate)
·????????Add a basic linear algorithm program adjustment based on the thermal feedback to correct the effects of thermal drift and apply adjustments prior to program execution. (Easiest but crude and less accurate)
I decided to explore option 1 and continue building data for the other options.
NEW TEST - AXIS ISOLATION TEST
DAY 1
Today I ran a test to isolate the L/U axis and evaluate the thermal drift created by the robot.?To do this, I created a new test part by drilling and reamed 10 holes spaced about 100 mm apart along the seam of a piece of 2”x 2” steel tubing.
I then created a 3D model of the part for use in our VisionSoft3D software.
Since our robotic cell is designed with the flexibility to match any CMM by coordinate mapping, the purpose of this model was just to allow us to quickly program the robot for various orientations of the test part on subsequent tests.
Hole location accuracy was not important since I was only interested in repeatability during thermal drift.?The 10 holes spaced 100mm apart allowed me to examine how reach is relative to thermal drift.
I then placed the test part along the robot X1 frame.?(Surface plane running through the L(Z1) axis parallel to the base.?I then selected the hole inspections in VisionSoft3D arranging them (1-10) from closed to furthest reach.
Initial calibration was performed while the robot was relatively warm.?I wasn’t too concerned with this since the final calibration would be done after the robot had reached stable motor temperatures based on continuous running.
After running for four hours and recording the motor temperatures, I then performed a final calibration to bring all the hole measurements as close to nominal as possible.?A final inspection was ran to make sure all measurements were within .020mm in X,Y, and Z.
I powered the cell down at that time so I could start cold the next day.
DAY 2
The robot encoders have thermal transducers and can easily be read from the OIT under Current Servo status screen.?At the time of final calibration and shutdown, the motor temperatures were as follows:?S = 39C, L = 41C, U = 41C, R = 37C, B = 37C, T = 38C
Upon Power ON the next day, I immediately recorded and documented the cold temperatures as follows: S = 25C, L = 26C, U = 27C, R = 27C, B = 26C, T = 25C
I then let the cell idle (servos OFF) for about an hour to allow the motor temperatures to rise to a stable circuit temperature state.?This would be the typical temperature of the motors in a morning resting state with ambient temperature of 22.2C (72F).??I then recorded the new temperatures:
S = 31C, L = 31C, U =31C, R = 30C, B = 30C, T = 31C
领英推荐
I then ran the same program continuously for 2.5 hours and produced this chart.?The temperatures of the motors at the end of this test were as follows:
S = 38C, L = 41C, U =42C, R = 40C, B = 41C, T = 40C
As you can see, the results indicated there was about 0.180mm of drift in the Y axis from cold to warm.?Also considering the load used was only 3kg and the speed was consistently set to 500mm/s for all moves, this is all well below the maximum specification for the robot and indicates the amount of drift could have been substantially more.?On the flip side, the amount of time required to bring the motors up to their maximum stable heat would probably have been less. (Another test for another day.)
I evaluated the chart results for drift vs reach and concluded the amount of deviation from hole 1 to hole 10 relative to reach was only about 20% of the thermal drift error. This could be offset in a software solution that evaluates in the kinematic model to make minor adjustments based on reach but for now, I consider this to be insignificant to thermal control via temperature feedback.?This probably has more to do with temperature change/time than the effect of drift.
The chart results for the amount of thermal drift as the reach decreased were inconsistent but did indicate a small amount of error directly relative to reach.?Still, with point 1 being 0.150mm at 400mm and point 10 being .185mm at 1400mm the thermal drift error was still noticeable.
NEW TEST – THERMAL CONTROL
Does preheating the motors change the thermal drift?
Note:?I had tried this test earlier (just after my first post) but the test localized the heat to the L/U link.?The results of this test did not prove much since the heat conduction was very poor to the joints and I didn’t realize how big of a heatsink the link was.
Today, I came back in to perform the test again but revised my game plan to only heat the Y Motor and gearbox.?The opening picture for this post represents the thermal image right before testing.?The heat tape used was controlled but not very accurate, so I had to watch the amount of heat being applied.?In this case, I monitored the motor contact areas, the overall heat buildup at the casing, and the encoder temperatures reported by the robot.?The specification for operating temperature of the robot was 45C max. so I under heated the motor out of extreme caution. (Casing never reached over 30C but it did trap enough heat in the heatsink and allowed the motors temps to rise). The final heated temperature prior to testing was as follows: S = 37C, L = 40C, U =36C, R = 34C, B = 33C, T = 35C
*NOTE (R, B, T are for orientation only and were not evaluated in our testing.)
Prior to running, I removed the heat being generated by my thermal tape. I then ran the cell program for only one hour since the results indicated thermal drift was no longer significant.
Ending temps. were as follows: S = 38C, L = 41C, U =42C, R = 40C, B = 41C, T = 40C
I then stopped testing to see how a lunch break would affect the results.?
The after break results almost reasonable. The Y axis deviation was only about .040. I think this could have been less if the motor temperature had been maintained. In fact, the final temperatures from this last run went even higher. S = 40C,?L = 44C, U =43C, R = 40C, B = 41C, T = 41C but the effect was much less than 31C to 41C seen in the previous test.
Conclusion
This preliminary test result indicates drift can be controlled by joint preheat or by maintaining the thermal state of the robot after calibration so I believe this option is viable. I actually think .020mm is doable in controlling thermal drift. That would still leave the overall repeatability at .030mm best case for this robot.
ONE MORE OBSERVATION
This chart represents the cool down of the motors after servos were turned OFF. This new data requires me to reconsider what the Servo OFF resting temperature would actually be during a long duration with Power ON. I'll look into this tomorrow.
MORE TESTS COMING SOON...