Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Teach Position is Forgetting Configurations

I have a frustrating problem that I am unable to solve.  I have a rotary tool head with multiple TCPs on it that I switch between for different operations.  Each tool has three different targets that in a vertical line that must be stopped at.  The default joint configuration that the robot chooses is always the worst possible one, so I have to go through and select the correct configuration and use the "Teach current position" option on each target to tell the robot this is how it should position itself at the start of each move.  The problem is that when I get the sequence working for one tool and then move to the next tool, teaching the next tool breaks the first one about 50% of the time.  For example, when I configure tool 5, it breaks tool one and it goes back to selecting the worst robot position and proceeds to crash into stuff or get itself twisted to where it can't even make the desired move.  What kills me is that when I use the options button in the robot panel to pick the desired configuration, the recommended options are always the one that are the best.  So the software KNOWS what the best configurations are and yet routinely selects the WORST ones when running a program.  It's like the default behavior is the opposite of what it recommends, and it loves to return to this default behavior even after being taught to do it the right way.  I feel like the robot is just taunting me at this point!  It seams as though you can only set configurations on a single tool/target pair, and multiple tool/target pairs are not supported so only the last one configured will work correctly while the previous ones just get dropped.
Here is an example video of what is happening.  The first tool works with the correct configuration, but then the second tool ignores the previously teached position and uses a very bad configuration.  If I re-teach the second tool, then the first tool will break and use a bad configuration similar to what the 2nd tool is using in this video.  I can't get both to work because fixing one breaks the other one.  And that is with only trying to get two tools to work-- there are eleven on this model and the others will all have similar problems.

.mp4   2023-08-15 08-12-54.mp4 (Size: 2.09 MB / Downloads: 26)

Also posted on youtube for faster viewing:
Here is the station tree.  The video shows two separate programs being run back to back by a third program.  So each move sequence is in its own program, yet one effects the other.  If I use teach points to get LongBrushArm1 program working, it breaks LongBrushArm2 program.  If I then go fix LongBrushArm2 using teach points, it breaks LongBrushArm1.  I don't understand why doing something in one program effects how a completely separate program runs.


I found a work-around to solve this problem. It is messy, but it works. Basically each tool has to have its own set of targets, they can't all share the same target points. So for a part like this that has 11 different tools, there would have to be 11 different sets of target points even though the targets would all have identical coordinates. Apparently teach point configurations are stored at the target level, so different tools will overwrite each other if they share the same targets.
Thank you for such a detailed explanation and I'm sorry if you feel like RoboDK is not consistent. Hopefully we can help you solve this issue with better fixes or workarounds that do not involve re-teaching all targets.

By taking a look at the tree I noticed that you are not using any joint targets (green targets). Joint targets will be very helpful here as they establish the configuration that will follow with Linear movements. Just one joint movement to a joint target is enough to establish the configuration you want to use.

Therefore, you should be able to create one main program for all tools which does not specify a tool. 


Program FollowCurve
  1. Set the Reference frame
  2. MoveL: Linear Movement to Target 1
  3. MoveL: Linear Movement to Target 2
  4. ...
  5. MoveL: Linear Movement to Target N
Program FollowCurveTool1
  1. Set the Tool (Tool 1)
  2. MoveJ: Joint movement to a Joint Target that is an approach point establishing your configuration with Tool 1
  3. Call Program FollowCurve
Then, copy/paste the Program FollowCurveTool1 for as many tools as you need. You should update the Set tool instruction and create a new approach point 

Important: You should not have any Joint movements in the FollowCurve subprogram because it can override the preferred configuration of your approach target.

Users browsing this thread:
1 Guest(s)