-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Last point of trajectory skipped #16
Comments
I added the wireshare capture to the gist. I captured it using the following filter: |
Could you please attach it to this issue instead? If you ever delete the gist, we lose access to all of it. |
@marshallpowell97: if you'd like to take a look at the wireshark capture, be sure to install ros-industrial/packet-simplemessage. |
@gonzalocasas: where abouts in the capture should we see a problem / something different? And how do you feel that relates to the problem you are encountering? And which of the two robots is
as in: immediately? Or after some time? |
The capture is one single trajectory sent to the robot. It has 78 points and the robot executes the first 77 and stops (joint states updates until matching exactly the point 77 and then motion stops). |
Microphone robot is |
From the capture it would appear all points are successfully transmitted to the server application: first point in pkt All of those are also ACK-ed. That would seem to point to the execution side of things. @marshallpowell97: wireshark display filter:
|
About my previous comment of "Recently started seeing some trajectories appear to skip the last point", I meant that in the past months, prior the update that included the velocity smoothing fix, this didn't happen and the process was running almost 24 hours/day for months. After the update we notice this issue on some trajectories. This is the first trajectory on which we saw this larger deviation that caused another internal check to fail and stop our process. Perhaps it occurs on other trajectories, but if the last two points are very close by, maybe we didn't notice. |
Just making sure: the Because the sequence nrs are 0-based. |
Exactly. |
One additional detail I've noticed: when I send this very same trajectory in reverse order (literally calling python's |
Hm. The last point has
for trajectories where it doesn't work, does the UI show the last point being "popped", or is it stuck at |
I don't have physical access to the robots due to the corona virus lockdown, so I'm running all this remotely, so I don't see the UI unfortunately. I did check the logfiles to see if anything in there indicates an error but there's nothing unusual. |
Not sure what's going on exactly. The code you called out is:
It doesn't appear to be referencing previous points ( Only the velocity gets overwritten if I'm also slightly confused how that conditional is supposed to work, as
to contain a percentage (ie: int) and no longer the float we transmit in the simple message msg. The check in the Even if it were to become true, it would only overwrite the velocity, but not the point itself. If I understand the code correctly, we should see this for the trajectory you shared:
|
In #8 (comment) you write:
could you be specific as to which commit(s) you've actually cherry-picked? |
Whoops, looks like I forgot to change that when moving the interpolation out of the decode program. Which brings up another question of why this works at all? Would it make more sense to just remove this? The purpose of this was to get rid of the "jerk" at the last point which only happened because of incorrect vel and accel limits in joints.yaml per #2. |
It's unclear whether it works. It would be great if you could take a look. |
Attaching all gist files here as requested: |
Sorry, wrong choice of words: I did not literally cherry-picked in git terms, instead I backported the change picking lines I needed. However, I did this while it was still an open PR, in particular before the refactoring into the Concretely, my
|
Yes, I will do now.
Indeed, the code I used, still relied on the EDIT:
That one I realized, I pointed it out on the PR back then, so I also removed it from my side. |
Btw: not sure how you are transferring changes here to your fork of |
@gonzalocasas: is this still a problem after syncing with current |
@gavanderhoorn sorry, haven't been able to test so far. Tomorrow I will manage to do it most likely. |
I can confirm that after removing the velocity interpolation from my fork, the problem went away. I did not test to re-add it as in current |
As it would appear the current code in Having written that: there is certainly still an issue with the "velocity averaging" code introduced by @marshallpowell97 in #8. I'll post a new issue to track that. |
Recently started seeing some trajectories appear to skip the last point. It is not entirely clear to me where this comes from, but it seems to have appeared after I cherry picked the changes in the pull request #8 on my private fork of this driver.
When looking for causes of this problem, this pull request seemed like a potential source, and in particular, the code in
interpolateVel.pgx
that calculates new velocity asnVel[0] - (nVel[1] - nVel[0])
was spotted by @romanarust as potentially ending up in negative velocities. However, @marshallpowell97 indicated that this would trigger a runtime error, instead of skipping the point.The issue is 100% reproducible with some trajectories. I posted the trajectory in JSON format in this
Gist as well as a rosbag file of the execution. The robot that follows this trajectory is namespaced under
/microphone
, so the joint states are published to/microphone/joint_states
. The trajectory is executed via the Industrial Robot Client using the service interface, and sent initially viarosbridge
, which means it is not visible in the bag file.Testing the exact same trajectory posted in the gist is simple:
rosbridge
on the ROS instanceroslibpy
installed (pip install roslibpy
), this can be done on a different computer or in an isolated environment (Miniconda/virtualenv/etc)I will add lower-level captures soon.The text was updated successfully, but these errors were encountered: