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

Inconsistent positioning between Run Program and previewing targets

I'm going through some of the tutorials, but I'm getting some odd simulated behavior.

Some examples:
- The GIF is the program running if I use Ctrl+R. No collisions.

- Screencaps "positions-side" and "positions-iso" show what happens if I press F5.

- "Paint4 single/double-click": If I single-click a target location and let the simulated robot do its animated motion, the joint configuration is one way. But if I double-click on the same target, it is not the same, and part of the robot interferes with the workpiece.

I've seen this a few times so far while practicing - running the program results in one set of joint configurations, but clicking the Targets one by one gives something different.

Attached Files Thumbnail(s)
This is because when using "Teach on Surface" you recorded the wrong robot configuration. This is a common mistake and it can be fixed easily.

Clicking on a target once will trigger a Move Linear from the current position to the target. The target configuration won't be respected if the target is reachable using a linear movement. However, if the target is not reachable by performing a linear movement, it will move to the target using a Joint movement.

Double clicking a target in your station tree will trigger an immediate Joint movement to the selected target. The target configuration (joints) will be respected.

  1. Double click the first target in your program.
  2. If the configuration is fine, jump to step 5. If not, proceed with step 3.
  3. To select the right configuration, double click the robot to open the robot panel and select the proper orientation for the target under "Other configurations".
  4. Right-click the target in your station tree and select "Teach Current position", that will record the new configuration
  5. Click on the next target. The configuration should be kept from one point to the other IF it's physically possible.
  6. Right click the target in your station tree and select "Teach Current position", that will record the new configuration
  7. Repeat for all point in your sequence.
For your information, robot movements behave the following way:
  1. Move Joint to a joint target always respects target configuration
  2. Move Linear to a Cartesian target never respects target configuration (only the cartesian position). Therefore, the robot configuration at the starting point of the movement will be kept during the motion.
When I use a multi-tool head to go to the same targets and perform the same simple motion, using the same procedure listed above to teach the correct configuration for each tool/target, only the last tool configured will remember the correct configuration. Previously configured tools will go back to the same default configurations, which are always really bad and result in ether collisions or joints that don't have the range to complete the movement.
When you teach a new Cartesian targets, RoboDK remembers the joint values used when the target was first taught. This works like this by design so you can always remember the desired configuration when the target was first created.

When you create a robot program with movements, in general you perform one or more joint movements, then, linear movements. You can't change the robot configuration while performing a linear movement. Therefore, this is why by design RoboDK will keep the configuration.

I updated Jeremy's response to clarify this better.

Maybe you are concerned about the joint values not being updated properly via the post processor? In that case, you can right click a program and select Recalculate Targets to update the joint values that will make the program feasible. If you want this to happen automatically every time you generate a program you can follow these steps to change RoboDK's default behavior:
  1. Select Tools-Options
  2. Select the Program tab
  3. Check the option Recalculate targets before generation

Users browsing this thread:
1 Guest(s)