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
Jade sync'd back to Indigo #110
Comments
Yes, there are lots of fun new xacro features in Jade! Unfortunately, there is a difficult balance to achieve between not breaking previously-released distros (i.e. Indigo LTS) and providing access to new useful features, since Indigo will be around for a very long time. Since Indigo is our first LTS release, we're still trying to figure out where the balance is. Are there one or two new features in particular that would be of most use to you? Perhaps we can evaluate them together on a case-by-base basis. Cheers |
I think the biggest thing is the The parent xacro, left_end_effector.urdf.xacro specifies the left and right finger slots, the kind of fingers, kind of finger tips, etc. All of those parameters need to be evaluated in order: Indigo:
In Jade without
But in Jade with
If you'd like to check out the dev branch with this xacro, you can find it here - https://github.com/RethinkRobotics/baxter_common/tree/gripper_model_xacro/baxter_description/urdf I would very much like to include this gripper flexibility in the upcoming release of |
Instead of merging back all those jade-devel changes, I suggest to include xacro into your distribution of |
Yep, that's my backup plan, to require that wstool be checked out from |
You are right, that the rationale of the |
I certainly do not recommend breaking API or ABI for Indigo, and I can appreciate the desire to keep Indigo bug free. However, without this feature being backported, any Xacro URDF that utilizes the |
I wonder if we could embed the jade xacro version into the indigo xacro package somehow. In other words, if the |
Embedding Jade xacro into the Indigo release and dynamically switching between them, becomes really ugly IMHO. For the user, it's probably not clear anymore, which xacro version is used or where the code comes from. We currently focus particularly on the @codebot I'm not an expert in debian packaging. Would it be possible to install Jade xacro instead of Indigo xacro on purpose? Then users could more easily switch to the new version using the package management system. As |
Looking into bloom a little bit, I believe one could define a new track |
@rhaschke that's a great idea. I'll look into the details of how that can be done. |
Short of being able to cleanly port the changes to Indigo, I think the |
Sorry for the delay; we were running hard the past few weeks to get ROS2 pre-alpha out the door. We just looked into this some more, and it looks like having multiple packages will be hard/impossible. From my current understanding, the Debian "provides" rules are only intended to be used with respect to virtual packages, and currently ROS doesn't use any virtual packages. That's not to say we couldn't figure out how to do that, but it's not currently being done (to my knowledge). I'm not sure how the "replaces" rule works, but even if we did that, I'm not sure it could be automated for users; they might need to run another apt or dpkg step to replace the "stock" indigo xacro with the upgraded xacro. Because of the potential usability issues and our fear of changing debian dependency rules for a released distro, we're currently afraid to go that route. Besides the path of "wait until the new xacro features come out in an LTS version" which will be another 8 months, I think the easiest path forward would be to add a As an alternative, we could create a new package in Indigo called What do you folks think? Cheers 🐔 |
Thanks for investigating the dual-release and explaining your understanding of why it won't work, Morgan. Your reasoning is sound, and having potential fragmentation of packages for users to get caught up in is pretty undesirable. |
If a debian package is too complicated, your proposed method (embedding xacro-jade into xacro-indigo) seems to be the only alternative. As you say, Morgan, it's ugly. That's why I was hoping for a cleaner solution. Your third alternative isn't much cleaner, either and leaves some traces in the future too. |
We're certainly open to other options, but we weren't able to come up with one or to envision a way that the Debian package relationship rules could be used in this case. Although it's ugly, embedding the Jade xacro and using |
I agree that the |
Hi there, I know everyone is crazy busy with ROSCon coming up, but just a friendly ping on this issue. Is there a list of technical issues that need to be resolved to embed Jade xacro in Indigo? |
Hi Ian, Indeed, we've been running hard for ROSCon; sorry for the slow response. In terms of technical issues, I don't think there are any huge "gotchas" here. I imagine that there will need to be a bit of code added to the Indigo xacro entry point which checks to see if the Cheers |
ok, I just threw up a strawman. I'm sure it has lots of problems, but an initial sanity-check seems to be working. It's on branch indigo-jade-via-inorder : https://github.com/ros/xacro/tree/indigo-jade-via-inorder hopefully you can just check it out to your Indigo install and see if it works for you. I just did a plain copy of the jade-devel source and threw it in there, as well as a few lines in the xacro and xacro.py startup scripts which sniff for |
Dear Morgan, your implementation looks perfectly fine. |
@rethink-imcmahon does the strawman implementation work for your use case? |
ah! sorry Morgan, I haven't tested this yet. I'll get back to you tonight after I've given it a try |
+1 this strawman branch works beautifully. Thank you so much! |
I know it's adding a lot of stuff to an already-released distro, but I On Wed, Oct 14, 2015 at 2:55 PM, Ian McMahon notifications@github.com
|
Sounds like you found a winning strategy +1 |
ok, merging now. |
merged #117 |
Thank you again, Morgan. This functionality is fantastic. |
ok awesome! hopefully there aren't any weird side effects. I'll leave this On Mon, Oct 19, 2015 at 11:16 AM, Ian McMahon notifications@github.com
|
Hiya @codebot, any chance we could push this out to a bloom release? I've been using the |
Yeah it seems like we've had a long enough soak period. I'll push out a release today. Cheers |
ok, I just tagged 1.9.5. It will go out with the next Indigo sync |
I really appreciate this backport! But I guess it is quite difficult to maintain, especially if bug fixes needs to be synced back. In addition the default behaviour was changed in jade and it might be preferable to have the old version for legacy xml files. What do you think of introducing version suffixes, e.g. xacro1 and xacro2? |
We discussed that option in this track too (see here). However, it was too difficult to realize with bloom. |
I did not mean to release it in a single track.
The default version branching (xacro->xacro1 or xacro2) could be done at runtime ( |
Probably I don't understand exactly what your are asking for. However, if there should be a xacro1 and a xacro2 package installed side by side, how should ROS switch between them? |
Side-by-side installation is no problem, it is already implemented for indigo. |
You should wait for a comment from @codebot on this. I cannot see yet, how this can work out. <param name="robot_description" command="$(find xacro)/xacro ..."/> |
I don't want to break the launch files. |
While I agree that there is probably no solution that is both practical and elegant for merging the major Jade features back into Indigo, Morgan and Robert did come up with a very useful solution that enables Indigo, as our LTS, to see some of the benefits brought to Jade. It may be a bit more difficult to maintain in the short term, but there is nothing requiring every new commit to be backported. Having used the backported |
I have migrated the indigo version as an example: indigo-devel...ipa-mdl:restructuring |
@ipa-mdl thank you for looking into this and for posting the example migration. Do you have legacy xacro files where the evaluation behavior with I suspect that for most people, especially new users, I'd be interested to learn more about your use case and any issues you are seeing with porting your xacro files forward, since we will need to trade off the complexity of updating your legacy xacro files against the complexity of retaining a switchable branch of the "old" xacro processing regime on K-turtle. I'm currently of the opinion that the "new" xacro is so much better that it's worth the pain of updating legacy xacro files, but again, I'd like to know more about how this affects your systems. Thanks! |
@codebot: I do not have a specific use case since we will probably not migrate to jade, but directly to k-turtle (not yet decided). However, I really see a use case for the new xacro features (especially the namespacing) in indigo, even for LTS set-ups. My focus was just on simplifying the maintenance. |
I like your modifications because now both xacro versions are handled in a symmetric fashion. |
For improved maintainability the jade code needs to be migrated to the same scheme. This would enable to cherry-pick bug fixes (in both directions).
As pointed out before I do not (yet?) have a specific issue to solve. But for some reason you decided to not merge it into indigo. I guess I stumbled upon this issue because #117 coupled the If you don't like to introduce the version-based scheme, I am fine with it! |
There have been some fantastic updates to the xacro-Jade branch, but none of these have been backported to Indigo. Seeing how Indigo is an LTS ROS distro, can these changes be sync'd back?
The text was updated successfully, but these errors were encountered: