-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Use ogre version 1.12 on focal #24448
Conversation
This is just a question. According to apt-cache, it looks like both libogre1.9-dev and libogre-1.12-dev are currently available in Focal. Is that expected to be the case in the final release of 20.04? |
yes, that is expected. They conflict however, so by installing either you decide against which version to link. |
All right. Looking at the rdepends, it looks like gazebo9 in Ubuntu 20.04 depends on libogre-1.9.0v5. @sloretz If we make the |
It would be great if Gazebo could switch to Ogre 1.12 as well. The 1.9 version is from 2013 and meanwhile several bugs have been resolved. To get an idea, which API changes are required, it might be useful to look at ros-visualization/rviz#1434. |
AFAIK the plan is to release Gazebo 11 and Ignition Citadel into packages.ros.org. Looking at this from the other direction, @simonschmeisser do RViz and Gazebo need to use the same ogre version? What if we made separate rosdep keys fro 1.9 and 1.12? |
As mentioned here, Ogre 1.9 and 1.12 will be available in Focal, but they conflict with each other. Hence, we need to decide on one or the other. |
Darn, sure enough
Ouch, and there are API breaks between 1.9 and 1.12. What new features since 1.9 make the 1.12 upgrade worth it? Are Gazebo and Ignition Rendering the only other packages in the ROS ecosystem that use Ogre? I think the Gazebo/Ignition team is currently occupied with the Bitbucket/Mercurial @chapulina Do Gazebo 11 and Ignition Rendering build with ogre 1.12? If not, is there someone on the Ignition team or community that could work on making them build with that version? With the bitbucket/github transition going on, if someone from the community was going to take it up, where would they open PRs? |
Risking to state the obvious, but only the -dev packages conflict (and decide which version to build against). Also gazebo is released as a Ubuntu package and it's not possible or necessary to change anything there due to freezes. It can however easily have a different version of ogre than rviz. Finally it has it's dependencies done right, so it doesn't depend on the -dev package. Ignition is a different story, there seem to be some packages distributed via Ubuntu but not the rendering parts. Is the rest actually going to be distributed via the ros packages archive at osrf? |
That's good news. Looking at packages.osrfoundation.org, it looks like there is a separation between
Yeah, both Gazebo 11 and Ignition Citadel will be released via packages.ros.org. It looks like ignition is the same where there are separate -dev packages, where I still have a concern that It seems like it does based on ros-melodic-rviz depending on libogre-1.9-dev
I think that means anyone that wants to build a gazebo plugin would have to uninstall RViz first. |
No, according to package.xml documentation, packages listed as Thus, people run into trouble if they want to compile both a gazebo plugin and a rviz plugin. |
Sorry @sloretz , I just saw these questions.
There have been community contributions adding Ogre 1.12 support. I haven't tried it yet, but I guess they either work already, or there's little left to do.
Gazebo and Ignition's GitHub migration is complete. Here's where the PRs would go:
Correct. But beware that both of them have already been released into http://packages.osrfoundation.org/ using Ogre 1.9 / 2.1, so I don't think we should release a different version into http://packages.ros.org/. CC @j-rivero |
Given that focal was only released a few days ago I think that doing a new release to http://packages.osrfoundation.org/ for focal should still be fine? |
It appears that while gazebo11 might already work with ogre 1.12, they do not intend to make the update at all due to risk of regressions. Is there a way to find out how many gazebo plugin packages exist and if those actually build-depend on ogre itself? If this number is low we could add an additional rosdep-entry for ogre-1.12 (and ogre-1.12-dev) instead of modifying the current one. I would not expect the conflict between libogre-1.9-dev and libogre-1.12-dev to cause any problems on the build farm but just for users compiling plugins for both rviz and gazebo from code (but those could still go one more step and compile gazebo themselves as well?) |
There are known regressions, like heightmap support, see gazebosim/gazebo-classic#2686. But the main reason is that Gazebo 11 has already been released, and we can't break existing users (within the ROS ecosystem or outside of it).
As long as they're co-installable and can be found independently, I think that could be ok. We just need to be sure that when users are compiling Gazebo plugins, they link against the correct version. I'm not sure if Gazebo is exporting these dependencies correctly for plugins to pick them up.
Is that an existing use-case? For a user to be affected, they'd need to be compiling the same library against both RViz and |
Unfortunately, that is going to be tricky (though not impossible). The thing is that that |
Just getting to this issue, I didn't see if before. @simonschmeisser Sorry, I know this wasn't the solution you wanted (Gazebo on ogre 1.9), which is really our faults for not coordinating on that earlier. Assuming that's not going to change (based on gazebosim/gazebo-classic#2726 (comment)), I now wonder if it makes sense to put rviz on ogre 1.12 and have to deal with any of the downstream development issues caused by the ogre 1.9-dev and ogre 1.12-dev packages being conflicting. Is there an important reason for pushing rviz in Noetic to ogre 1.12 rather than sticking with ogre 1.9 (like technical advantages for instance)? |
Actually, it was pointed out to me that since rviz and gazebo-ros-pkgs neither have been split into dev/runtime packages, we have to use ogre 1.9 with rviz due to gazebo11's decision to stick with it. Shall I update this pr or open a new one? |
rviz only depends on As to benefits of using ogre-1.12, well, 7 years of bugfixes and speed improvements. @rhaschke might be able to point to specific issues. Plus options to enable more modern rendering backends and modern graphics. Not sure what you mean by updating this PR? |
@wjwwood, as far as I understand, it should be possible to install the binary versions of rviz and Gazebo11 in parallel - together with their corresponding libogre dependencies. If configured correctly, they won't need libogre-*-dev. rviz was recently configured correctly (having a build_export_depend on libogre-*-dev only). The open question is, whether Gazebo (and gazebo-ros-pkgs) is configured in the same fashion. If not (yet), this needs to be done. As pointed out in #24448 (comment), only users trying to compile both rviz and gazebo plugins (and thus requiring both -dev versions), will be affected by the conflict. Of course, it's also an open question, whether we should expose this conflict at all. There are indeed some rviz bugs (#1192,#1082), which are resolved with a newer Ogre version. |
It boils down to this change gazebosim/gazebo-classic#2727 in order to remove the exec_depend here https://github.com/ros-simulation/gazebo_ros_pkgs/blob/00a0064a1477667dfed75c3d22d91f14224db3a1/gazebo_ros/package.xml#L30 fixing this issue ros-simulation/gazebo_ros_pkgs#323 Short summary: gazebo_ros uses pck-config to find the gazebo binaries but the pck-config file is included in gazebo_dev which is therefore currently an exec_depend of gazebo_ros |
Full context about this: our main mechanism to coordinate base dependencies during the development cycle of ROS is the REP3. ogre-1.9 was the only version of Ogre available in Ubuntu Focal until 11th of April, it required Freeze Exception to go into Focal and landed after the last Beta, 12 days before the final release if I'm not wrong. The only reason for Ubuntu to accept it at that point was that no other Ubuntu package depends on it because it's complicated to do transitions properly. My feeling is not that our sync mechanism has failed but more than we are trying to force policies and procedures to get benefits from latest releases which could be acceptable but is risky in my opinion. |
I'm not trying to blame anybody (or process) for anything and I'm really sorry if it appeared that way! I started updating ogre in October and expected this to be a straightforward process. However Debian has really high quality gates and incremental improvements seem difficult. The package was then waiting in the Debian NEW queue for two months till end of March. Only once it passed this bottleneck could I ask Ubuntu to still pull it into Focal. Being new and not part of any installation image it did not require a freeze exception btw but just a manual sync (which is also not over-documented and as such took some more days). This is my first Debian/Ubuntu upload after all. I will open a PR on |
I added a simple fallback in the start scripts of For more details please see ros-simulation/gazebo_ros_pkgs#1100 |
So, maybe I'm wrong, but just having a The only way to avoid this issue would be to remove all use of ogre headers from rviz headers and only build depend on ogre-dev. |
that's the difference between |
I don't think that's true @simonschmeisser, see this line where the depends are gathered in bloom: They are later used in this template: Which would indicate to me that |
Note |
It would be unfortunate that Ogre 1.9 is the version being used in Focal since this is an LTS ROS release. Since you've done so much work @simonschmeisser towards Ogre 1.12 already, here is a possible map of what it would take to use Ogre 1.12 in Focal. Given the Noetic release is barely over 2 weeks away, it would have to be done (meaning merged) very quickly.
Benefits
Drawbacks
It would need buy-in from these people
And maybe also
Personally, I'm a bit nervous that this increases the risk of delaying the Noetic release. |
I think this approach is unorthodox, but I am willing to pursue it to try and get the benefits. Instead of having people depend on libogre directly, maybe we could introduce a |
I think it is a too strong restriction to forbid building rviz and gazebo plugins within the same workspace. Of course, people could split their workspaces, but nevertheless this requires switching the installed libogre-dev debian, which - for example - will render our local CI system infeasible. |
Thanks for your full picture summary @sloretz !
I would prefer the approach suggested by @wjwwood which would have the following action points remaining:
Note that there is no need for an explicit versioned rosdep If at any later point gazebo decides to release a hypothetical 11.1, this could all be updated transparently. Such a release would also possibly allow to remove ogre-1.9 from the next debian stable bullseye next year. (If I would have been certain to get the update included in time for focal I would of course have announced it earlier, but this way all I could do is announce it one month ago which was still before both the focal release and obviously the noetic release) |
@wjwwood regarding "build_export_depend": you're right and that's unfortunate ;) (but expected ...) It renders |
@rhaschke wouldn't it just require that you compile gazebo11 against ogre-1.12 locally on your CI as well? (assuming you have a |
Yes, that would be an option. I think we need to be prepared for a lot of issues from users regarding this problem. |
I really hope that there can still be a gazebo11.1 or gazebo12 release based on ogre-1.12 before the majority of users switches to noetic. Keep in mind that adoption of new releases is really slow in ROS(-1) (http://download.ros.org/downloads/metrics/metrics-report-2019-07.pdf shows that 14 months after melodic release only 27% had migrated yet). This will however neither possible nor motivated if we stick to ogre-1.9 now (and for remaining life-time of ROS-1) (but I should stop flooding this issue) |
Well, it's a tough decision, but given the time we have left and comments like @rhaschke's which I tend to agree with:
I think I will have to decline this pr in favor of #24767. |
Thanks for taking a decision on this @wjwwood. I will proceed with the Noetic release of rviz. |
I finally managed to get Ogre in Ubuntu updated today and since @rhaschke already ported rviz to support it, it should be used in noetic