-
Notifications
You must be signed in to change notification settings - Fork 10
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
Reenable "python_orocos_kdl" for ros2 #19
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR, it is appreciated. This is going to need some changes to actually work.
In particular, we are going to have to revamp the Python parts of this (starting around line 22). First of all, we can't depend on ENV{ROS_PYTHON_VERSION}
being defined. In the case where we are building everything from source, that won't be set. Second, we should just remove all of the Python 2 support; we will never need it again. Third, we need to do something about Python on Windows (in particular, Windows Debug).
See https://github.com/ros/resource_retriever/blob/b0725fbc0d893d9fc476c258eed82ead00b0d486/resource_retriever/CMakeLists.txt#L62 for an example which hits most of these points. Copying that for the most part should go a long way to making this work.
Thanks for the feedback. The |
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
Great, thanks for iterating here. I just made some additional updates that should reduce warnings and make things work a little better. At least in my testing on Linux, this is pretty good now. One thing that I will request is that we make as few changes as possible to the tests. The major reason for that is that the more changes we make here, the harder it is for us to "upgrade" to a newer version of orocos_kinematics_dynamics from upstream. So let's just do the minimum changes necessary to make this work. Once we've done that, I'll run CI on it to see how well this all works on Windows. |
Oh, and one more thing: if I run the tests repeatedly, I eventually get a test failure in
That needs to be looked into, because we want to avoid introducing a flakey test onto the buildfarm. |
Okay, good point, cosmetic changes to the tests were reverted now. Some function names I had to change though, because they do not seem to be meant to be called by the test runner directly, but they had "test" in the name, which caused them to be run directly. Regarding the flaky test you mention, I could reproduce the failure in 2 out of 20 runs. The test is doing forward and inverse kinematics and checks if the joint configuration in the end is the same as in the beginning. However, I think there is no guarantee that this has to be the case if the chain we're looking at is redundant, i.e. in that case there can be multiple joint configurations satisfying a certain end effector configuration. Therefore, I'd say that it is not the implementation of the test that is flaky but the nature of the underlying problem. To remove the "flakiness", I see two options:
What do you think? |
Yeah, that's fine. The goal is to minimize the change, not eliminate it completely. What you've done here looks OK to me.
I'd rather keep the tests if we can make them work. So I'd say let's check the norm less a tolerance. |
Just updated the test to check a tolerance. With this fixed, are we ready to merge or do you have more feedback? |
So it looks like that frametest is still failing on Linux-aarch64 (maybe a numerical error?). Also, macOS is failing to compile this new package, not being able to find |
The numerical stability of the test should be improved now, so the build on Linux-aarch64 should succeed. Regarding the build on mac, it seems that And regarding the build on Windows, I also don't know how to make SIP available there. How would you suggest to proceed with these two issues? |
What's the state of this? It would be really nice to be able to use |
For the record, The latest here was that this was failing quite a bit of CI, as you can see in #19 (comment) . That would need to be fixed to make any progress here. That said, this whole thing may be obsoleted by the discussions at #24 and ros2/ros2#1208 . |
Yes, I am talking about Thank you for the update and links to the other pull requests. All the pull requests I found were last active in February, but the ones you linked look like the issue is currently being worked on, so I probably just have to be patient for a little more time. |
ros2/ros2#1208 proposes switching to vendor packages for orocos_kdl and python_orocos_kdl, instead of continuing to maintain this fork. The vendor packages will check if the packages are already installed on the system and build them from source otherwise (including the Python package). So, I think we can close this PR. Note, the vendor packages will probably only be released into Rolling (and Humble by extension). |
And we've now done the switchover to the vendored orocos package. With that, I'm going to close this out. |
With the proposed changes, the package
python_orocos_kdl
can successfully be built, and the tests are passing. This was test with ros2 foxy on Ubuntu 20.04.The idea to do this was for example mentioned here: ros2/geometry2#360 (comment)
It is also needed for this PR: ros/kdl_parser#48