-
Notifications
You must be signed in to change notification settings - Fork 382
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
[Parser] Provide API to avoid creating twice the same FCL geometry. #645
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.
@jmirabel to ensue compatibility with older versions of hpp-fcl it would be nice to add some ifdef statement according to the versions of hpp-fcl.
I can do it but:
|
@@ -18,7 +18,7 @@ def BuildFromURDF(filename, package_dirs=None, root_joint=None, verbose=False): | |||
robot.initFromURDF(filename, package_dirs, root_joint, verbose) | |||
return robot | |||
|
|||
def initFromURDF(self,filename, package_dirs=None, root_joint=None, verbose=False): | |||
def initFromURDF(self,filename, package_dirs=None, root_joint=None, verbose=False, meshLoader=None): |
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.
You must handle the case where Pinocchio is no built with hpp-fcl
support.
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.
What do you expect me to do here ? Raise an exception if meshLoader is provided and not built with hpp-fcl ?
If so, how do you get the information about hpp-fcl support in Python ?
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.
One way is to check if hpp-fcl is provided, I was planning to do that by adding a global variable called maybe __PINOCCHIO_WITH_HPP_FCL__
.
In the RobotWrapper, we have a similar strategy but checking
if "buildGeomFromUrdf" not in dir(pin): |
pinocchio
.
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.
As far as I understand, "buildGeomFromUrdf" is always part of pinocchio in Python, regardless the use of hpp-fcl. (even before this PR). So I guess this test is always false.
We need to first make a new release of |
the next release of hpp-fcl will be here by the end of the day |
Yes, that's a requirement. |
I pushed too quickly. Please, wait before reviewing. |
It should be fine now. |
@nim65s What is the current status of the |
The release will wait for humanoid-path-planner/hpp-fcl#56. |
There is a snake biting its own tail here:
I see three workarounds:
We need to decide on one of the above solutions to move on. |
My favorite solution is 3 for its convenience. I suppose people using the devel branch of Pinocchio can also use hpp-fcl from source. |
I think we should release first |
Can you do it ? |
I think for this tack @nim65s will be faster and much more efficient than me. |
I will let @nim65s <https://github.com/nim65s> reply but I think his
stack of packages to release is already rather big.
|
No, sorry, but I will not duplicate a package in robotpkg just have it available in multiple versions, and even more maintain multiple times the same package. Yes, it would be really fast and easy to do so, but I am pretty sure that it will bring me nightmares in the future, and that at the end we will all loose time by trying to use shortcuts. |
I see 2 solutions:
I find the solution 2. a bit more elegant and less error-prone and stressful, but it require extra work. This work might be worth it or not, I can't tell yet. |
I totally understand your reasons to not duplicate the package. But, we are very limited by the fact that all the packages are inter-dependent, and any break in the compilation procedure will affect all the users and all the robots together. I continue to think that we should adopt a fast release solution like the one that I've just suggested. I would also prefer also the second version, which seems to be more elegant indeed. |
I totally agree with the "Release early, release often" strategy :) |
Looking at this once again, releasing everything at once will break CI/CD everywhere. Is everybody OK with this ? |
You can start with the head of the dependency at least. |
I guess we are waiting for us, since rbprm has yet to be updated to pinocchiov2 before integrating these changes (ongoing but not so smooth) |
I let you choose the method you prefer. |
I am not ok to break everything everywhere I have at least three remote collaborations which are based on the consistency of robotpkg. We have tools to check the consistency of candidate releases inside robotpkg. robotpkg cannot handle all the combinaison of possible releases. |
Ok, therefore, I propose to start by merging PR in hpp-fcl and make a release of this package, but not to push it on robotpkg. Then, when every release is done, I will put everything at once on robotpkg, and CI will work again. |
Also, @wxmerkt will be happy to have a new github release of hpp-fcl soon :) |
Oh, I forgot to sync also with @andreadelprete about TSID… |
I agree.
this could surely wait for validation, but if you want to do it, go ahead.
I agree. |
@nim65s @olivier-stasse All the difficulties to have some stable releases during the validation of the next releases let me think that we really need to put in the WIP of robotpkg the clone of all the existing packages with the prefix -dev or -wip in order to allow smooth maintenance and the release process. |
hpp-fcl v1.0.0 is out on github. |
The idea of having simultaneously multiple versions for the same package in the same repo, and that any user or any automated test could be using one or the other at any time terrifies me, this is why I do not want to do this myself, nor I want to maintain it, nor I want to help anybody who use it. |
@nim65s We cannot simply do what you suggest. |
That's right. I will have a look at it. |
Thank for the merge. |
Dear Justin, Looking at the devel branch the CMakeLists.txt specifies that the current code is consistent with hpp-fck 0.5.1 where robotpkg provides 0.7.0. If you provides a set of branches of your gepetto dependencies on which we can build the devel branch it is possible to build a docker file from the source of robotpkg (and not the binaries). A more coherent way will be to release indenpendtly from robotpkg-binaries each package. Wrt to wip, it already exists in robotpkg. The recurrent problem is that you cannot release package in robotpkg for binaries if they are not consistent together. But we use robotpkg from source to make deployment test with specific release candidate. We could try provide the script to build the docker file, but that would be possible only if the CMakeLists.txt is consistent. |
I totally agree. Robotpkg is now becoming the limit of our approach and the docker approach seems to be a nice solution. |
Agreed too. |
Just one precision, right now, if we provide the script to build the dockerfile for a specific branch, it will be the duty of the developer to:
|
@olivier-stasse Yes, I totally agree on these two points. |
For the update, I will merge devel into fcl-release, add a few minor changes and validate HPP (including hpp-fcl next release) in the next few days. I will then open a PR of fcl-release into devel. |
It sounds great to me. You can proceed as you've suggested. |
Needs humanoid-path-planner/hpp-fcl#50