tldr: What are your pain points when working with ROS? What causes you friction? What could be done to improve your developer experience?
This is a discussion starter and in no way intended as an attack against any entity. It may read as a rant, but in reality that is just my personal insecurities shining through. I am sure that you - the reader - are doing a tremendous job contributing to this and the overall open source community. ROS in this context means the packages developed and used by this community and not just the core ROS itself. I am currently using ROS2 Galactic, but this discussion is not specific to that version.
I’m working with ROS for about 3 years now with a tiny 3 people team and would consider myself more as a problem solver or high level system integrator than a proficient programmer. So please take everything with a healthy grain of salt. The project which I am currently developing is a low(ish) cost, but extendable service robot platform. This platform is basically an up-sized and glorified robot vacuum cleaner and does not include things like inverse kinematics / 3D motion planning (manipulators, legged robots) or large scale navigation (autonomous vehicles, last mile delivery, drones) which are other popular use cases for ROS-based systems.
I often feel frustrated when working with ROS. A large part of it is probably my general workflow - more on that here - and maybe the skill gap I have, but the other part is the constant friction and the overpromise and underdeliver vibe I often get. This I would categorize as Developer Experience and would like to focus this discussion on. To be clear I am not looking for a ROS alternative out of the box robotics framework. What I am looking for is the nitty-gritty small annoyances causing friction and making you, the developer frustrated.
Some personal anecdotes (most ranty part):
Starting with RViz2, it is the most crashy software that I ever used. Topic visualizations often does not render (reasons other than the obvious policies). The displays panel’s left and right side dropdown arrows can’t be seen at once so you have to glitch your way to see the other side. Opening the Add popup panel freezes the visualization and tough luck combing through that anyway because there is no search function there. No ROS_DOMAIN_ID selector or integrated teleop tool.
Gazebo is the default choice for ROS sims. Maybe my needs are extremely niche, but I would expect a lidar plugin which actually rotates, meaning in real lidars with a slow speed (~10 RPM) the image distorts considerably based on velocity impacting navigation performance. The startup image will most likely glitch and startup time can vary from seconds to minutes depending if the models folder configured properly. The performance of gzclient is not great at all.
There is no proper player / browser / editor for rosbags (as of Galactic). (I’m thinking a mp3 player like utility with selectable topics and markers for problems.) Recording is painful with the whole reliability policy pattern.
I’ve yet to come across an odometry source which provides actual covariance and thus be viably used for sensor fusion.
These annoyances can be mostly helped with proper bug reports and PRs. Documentation is another thing that can be improved.
Call to action:
I would like to hear your anecdotes and feedback. What causes friction when working on your ROS-based system? What are some quality of life improvements you came across in other frameworks which greatly benefited your developer experience?