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

Targets don't update their joints when the targets move

#11
This issue should now fixed with the latest version published a few minutes ago (Windows only).
#12
I just downloaded the ubuntu release, and it shows up as 5.5.3-23011 release date 2022-12-22. Does that mean the linux fix hasn't dropped yet? Any ETA on that?
#13
We should have an update ready for Ubuntu no later than next week. We are finalizing some minor issues we have building the Add-in manager for Ubuntu.
#14
We've done a bunch of testing and gotten some weird results where we'd swear we got different results on different days.  But attached is our most complete test so far and what it's doing today.  It creates a station from scratch, but you need to point it at a UR10e.robot file.

It seems like with the latest version, it's not safe to assume some_target.Joints() will be accurate unless we've done some_target.setParam("Recalculate") right before calling Joints().

But we get different results on different linux robodk versions.  Summary:

5.4.3: seems to update automatically in the way that seems most natural, EXCEPT when running the post, where it uses wrong values.

5.5.2 and 5.5.3: program.setParam('RecalculateTargets') seems to be broken

5.5.4: doesn't update like 5.4.3, but target.setParam('Recalculate') and program.setParam('RecalculateTargets') do seem to trigger updates, and the "Recalculate targets before generation" checkbox does seem to cause it to output the right joints in the post.

Full output:


Code:
$ ./test.py
RoboDK version: 5.4.3.22250
Target PoseAbs: [687.885, -174.1500000000001, 913.15]
Target joints: [[ -0.000 ],
 [ -90.000 ],
 [ -90.000 ],
 [ 0.000 ],
 [ 90.000 ],
 [ -0.000 ]]


Moving target's parent reference frame
Good: Interesting, joints updated automatically.  Version 5.5.4 doesn't do that for me.
Good: target joints are correct after target.setParam('Recalculate')

Moving reference frame back to its original pose
Good: Interesting, joints updated automatically again.  Version 5.5.4 doesn't do that for me.
Good: after another recalculate the target is back to its original joints

Moving target's parent reference frame again
Good: joints automatically updated
Trying program.setParam('RecalculateTargets')
Good: joints updated

Moving reference frame back to its original pose
Good: Joints updated automatically again.

Moving target's parent reference frame again
Good: joints automatically updated
Please right click 'program' in the RoboDK GUI and select 'Recalculate targets', then hit enter
Good: joints updated

Moving reference frame back to its original pose and recalculating to ensure update

Moving target's parent reference frame again
Good: joints automatically updated
Good: joints are correct after running the postprocessor
Joints in /tmp/program.csv are expected to be very close to: [0.0, -99.40054503189285, -79.77440517824634, -0.8250497898608222, 90.0, -7.016709298534877e-15]
Here are the contents.  Do they match?
Instruction,X (mm),Y (mm),Z (mm),Rx (deg),Ry (deg),Rz (deg),J1 (deg),J2 (deg),J3 (deg),J4 (deg),J5 (deg),J6 (deg)
Program Start,program
Comment,Program generated by RoboDK v5.4.3 for UR10e on 16/02/2023 19:33:47
Comment,Using nominal kinematics.
Move Joints,687.885,-1174.150,913.150,0.000,90.000,-90.000,0.000000,-90.000000,-90.000000,0.000000,90.000000,-0.000000
Program Finish,program

Moving reference frame back to its original pose


$ ./test.py
RoboDK version: 5.5.3.23011
Target PoseAbs: [687.885, -174.1500000000001, 913.15]
Target joints: [[ -0.000 ],
 [ -90.000 ],
 [ -90.000 ],
 [ 0.000 ],
 [ 90.000 ],
 [ -0.000 ]]


Moving target's parent reference frame
Bug: target joints remained the same even though target PoseAbs changed: [787.885, -174.1500000000001, 913.15]
Good: target joints are correct after target.setParam('Recalculate')

Moving reference frame back to its original pose
target joints didn't update, so setParam('Recalculate') seems to be a command rather than a persistent setting
Good: after another recalculate the target is back to its original joints

Moving target's parent reference frame again
Bug: once again joints haven't updated, no surprise there.
Trying program.setParam('RecalculateTargets')
Bug: Joints didn't change even after program.setParam('RecalculateTargets')
Traceback (most recent call last):
  File "./test.py", line 100, in <module>
    assert False, "Aborting so we don't confuse ourselves"
AssertionError: Aborting so we don't confuse ourselves


$ ./test.py
RoboDK version: 5.5.4.23074
Target PoseAbs: [687.885, -174.1500000000001, 913.15]
Target joints: [[ -0.000 ],
 [ -90.000 ],
 [ -90.000 ],
 [ 0.000 ],
 [ 90.000 ],
 [ -0.000 ]]


Moving target's parent reference frame
Bug: target joints remained the same even though target PoseAbs changed: [787.885, -174.1500000000001, 913.15]
Good: target joints are correct after target.setParam('Recalculate')

Moving reference frame back to its original pose
target joints didn't update, so setParam('Recalculate') seems to be a command rather than a persistent setting
Good: after another recalculate the target is back to its original joints

Moving target's parent reference frame again
Bug: once again joints haven't updated, no surprise there.
Trying program.setParam('RecalculateTargets')
Good: joints updated

Moving reference frame back to its original pose
target joints didn't update, so program.setParam('RecalculateTargets') seems to be a command rather than a persistent setting
Recalculating again to update the joints

Moving target's parent reference frame again
Bug: once again joints haven't updated, no surprise there.
Please right click 'program' in the RoboDK GUI and select 'Recalculate targets', then hit enter
Good: joints updated

Moving reference frame back to its original pose and recalculating to ensure update

Moving target's parent reference frame again
Bug: once again joints haven't updated, no surprise there.
Good: joints are correct after running the postprocessor
Joints in /tmp/program.csv are expected to be very close to: [0.0, -99.40054503189285, -79.77440517824634, -0.8250497898608222, 90.0, -7.016709298534877e-15]
Here are the contents.  Do they match?
Instruction,X (mm),Y (mm),Z (mm),Rx (deg),Ry (deg),Rz (deg),J1 (deg),J2 (deg),J3 (deg),J4 (deg),J5 (deg),J6 (deg)
Program Start,program
Comment,Program generated by RoboDK v5.5.4 for UR10e on 16/02/2023 19:35:42
Comment,Using nominal kinematics.
Move Joints,687.885,-1174.150,913.150,0.000,90.000,-90.000,0.000000,-99.400500,-79.774400,-0.825050,90.000000,-0.000000
Program Finish,program

Moving reference frame back to its original pose


Attached Files
.py   test-shared.py (Size: 6.06 KB / Downloads: 152)
#15
I believe 5.5.4 is the intended behaviour.
If you are not using the API, you should simply enable Tools->Options->Program->Recalculate Targets before generation.
If you are using the API and your programs has joint movements on targets that are cartesian, you need to call program.setParam('RecalculateTargets') if any of the parent frames has changed.
Please read the Forum Guidelines before posting!
Find useful information about RoboDK by visiting our Online Documentation.
  




Users browsing this thread:
1 Guest(s)