Robot Operating System 2.0: Ardent Apalone Release
github.com
github.com
They need to get their act together and get this into the standard Ubuntu repositories for installation using the standard GUI tools. Or install into non-system folders. ROS is notorious for breaking Ubuntu auto-updating because of bad packaging.
I tried following their instructions, and the install didn't happen because, for some reason, their repository wasn't recognized. Don't have time to fix this; will wait until they're out of beta.
ROS has historically been such an install pain that some people install it in a Docker container. That has its own headaches.
And this was with pretty popular consumer hardware. I can't imagine the experience with anything exotic.
I think a lot of the difficulty is in the build system being federated. This makes it complex as it supports multiple build other systems for other ROS packages. I haven't looked into it much yet, but I'm curious about ROS 2 also supporting ROS on smaller micros now. I think this would make the build system more complex.
Modifying the how the devel space is handled seems like an improvement and making it more modular seems like it should help though.
You can look up more informed and lengthy threads/holywars about build systems, but in my experience, they always end up being complex for large projects. Some IDEs try to hide the complexity behind dozens of GUI tabs (build settings), but that usually makes headless/CI builds complicated, and sometimes even impossible.
Also, what I have seen a lot is: when people are struggling with build systems, they usually don't have a clear understanding of major underlying steps that need to be performed to build the executable: invoke compiler to compile individual source files to corresponding object files (with correct include paths and compiler flags for architecture) and then invoke linker to link them and any required libraries together, producing an output executable.
Once this process is clear, reading the documentation of particular build system to achieve what you need gets a lot easier.
On the other hand, ROS2 aims to provide RTOS support and pluggable transport layers, which are rather serious benefits.
Also, their decision to abandon XML-based roslaunch is the right one: we had to roll out our own startup infrastructure as well, as it's much more convenient to have a definite init order with sequential checks and waits e.g. for hardware availability.