4 ms·
While it's used in industry sometimes, ROS is really one of those by-and-for-academia tools. There's a reason it's near-universally reviled, and why "migrate of
by margalabargala 2y ago
While it's used in industry sometimes, ROS is really one of those by-and-for-academia tools. There's a reason it's near-universally reviled, and why "migrate off of ROS" is a standing goal at a lot of robotics companies.
There's also a reason why it's a standing goal, rather than a completed goal.
It does little or nothing really well, but it does everything kind of okay.
There's a lot of "alternatives", most of which do something much better, sometimes much much much better, than ROS, but none of which can replace it all completely. PyRobot, Viam, OROCOS, Webots, all of these do some things much better than ROS, but none of them can drop in and easily replace everything without a lot of developer time, often adding new features to the platform.
- liendolucas 2y agoI suffer it so much every single time I have to interact with it that sometimes I really really want to do something else, but I can't. Unfortunately is not my call, is part of my job. I have already made my opinion about ROS in a previous thread, but another user synthesized it very clearly: it's a trainwreck. Now we can be more precise: it's an academia trainwreck tool.
- forrestthewoods 2y agoWhat is your opinion of ROS? I can’t find the previous thread you mention.
- liendolucas 2y agohttps://news.ycombinator.com/item?id=40631558#40634889 https://news.ycombinator.com/item?id=40631558#40634889
- oarfish 2y agoTrust me, having your own crufty cobbled-together robotics code base that gets more and more insipid over time is way worse. 10/10 would start anything new with ROS.
- sashank_1509 2y agoWe replaced ROS with GRPC, foxglove and our own code. Works reliably, much better to handle. Would recommend everyone else to try it
- oarfish 2y agoIf you have the people to build something like this, could well be. If you're a smaller shop without any real experts, the structure enforced by ROS will prevent a lot of chaos and debugging.
- patrick451 2y agoThat's really interesting. I've thought about trying to replace ROS with GRPC before too. I could never find a report of anybody actually doing that in the robotics space. Can you share more? How did it go? What pitfalls did you run into?
- sashank_1509 2y agoGRPC is very performant. A few points, ensure you have a script to compile the GRPC protobuf, ideally in docker so that you don’t pollute your local environment. That other pitfall, is don’t save raw protobuf binaries, you will face backwards compatibility issues as you change the definition of the protobuf, just write everything into MCAP’s. GRPC essentially replaces ROS messages with protobuf definitions and is not a publish, subscriber model, but you can build publisher/ subscribers out of it. It is managed by Google, used in android, web dev etc so it is very performant and reliable.
- causal 2y agoIsn't Foxglove built for ROS?
- dvrj101 2y agohttps://foxglove.dev/blog/introducing-foxglove-schemas-to-visualize-non-ros-data https://foxglove.dev/blog/introducing-foxglove-schemas-to-vi...
- contingencies 2y agoROSCon Macao, 2019. As a time hack (our food robotics R&D facility, the "Noodleplex", was right across the border) I dragged all the academics down to the best bar (little resistance offered) instead of attending. While an interesting set, I was gobsmacked how little industrial nous attendees had and came to form the opinion that ROS use goes hand in hand with a "ROS can do CV ... everything is a nail" mentality. CV is a niche tool. Deployed, commercially relevant engineering generally uses something else unless the explicit system goal is visual input, because something else is always faster, cheaper, more reliable and has a supply chain stability half life greater than six months.
- throwup238 2y agoCan you explain what ROS does/is to the uninitiated? Why is everyone still using it if its such a trainwreck?
- spwa4 2y agoIt's a framework. * it's a loosely coupled messaging framework (so you can have 5 daemons that talk to each other to accomplish control at multiple levels) * it's got robotics libraries with difficult robotics algorithms (PID tuning, forward and reverse kinematics, a way to run control loops very fast, ...) * it's got sensor libraries (algorithms) and drivers * it's got a simulator * it's a linux distro specialized for robotics You can keep going for a while with this.
- dbcurtis 2y agoSure. A ROS system, being a collection of independent nodes coupled with a publish/subscribe messaging system, allows you to mix and match nodes for whatever. So as a researcher, it is great. It gives you a "good enough" robot for the 98% that is necessary infrastructure for the 2% where you want to experiment/innovate. In an commercial setting, yeah, you run into scaling issues all over the place. Also, the code quality of different stock nodes is highly variable. So ROS can get you past your A-round -- but count on addressing scalability and stability issues as go. Which is why "write out ROS" is on everybody's to-do list. In any case, learning ROS is well worth it. As a hiring manager, I know I can easily teach you our system if you know ROS already.
- patrick451 2y agoOne of my pet peeves with the algorithm/science ecosystem surrounding ros is that almost all of these algorithms are not usable without ROS. Deep down inside some planning algorithm, you find ros data structures, ros publishers etc. This is poorly designed code. It's like letting raw SQL queries infect an entire ecosystem of libraries. IMO, this pattern is holding robotics back. Two examples come to mind of packages that do NOT do this: 1. plotjuggler [1], which is a tool for plotting time serious data. It can connect to ROS, but also supports many other communication paradigms, like mqtt, zeroMQ, websockets, custom data and some more I forget. 2. nvblox, which at its core doesn't depend on ROS but instead provides a ros2 compatibility layer. [1] https://github.com/facontidavide/PlotJuggler https://github.com/facontidavide/PlotJuggler [2] https://github.com/nvidia-isaac/nvblox?tab=readme-ov-file#c-interface https://github.com/nvidia-isaac/nvblox?tab=readme-ov-file#c-... [3] https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nvblox https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nvblox
- rcxdude 2y agoYeah, it makes it a real pain, because you have to rip a whole bunch out, and often there's a much smaller and cleaner library underneath, once it doesn't need to deal with the extra crap ROS inflicts on it.
- Animats 2y ago> It does little or nothing really well, but it does everything kind of okay. Yes. ROS is basically mediocre interprocess middleware with a standard interface used by much academic software. So you can hack stuff together without too much trouble. It won't be efficient or reliable, but it's useful. Think of it as the PHP level of robotics.
- stackghost 2y agoTangentially relevant: the TryHackMe Advent of Cyber side quest this year[0] featured a pair of ROS nodes that we had to attack. I had never encountered ROS before but, having scoured the documentation to figure out how to write a malicious node[1] and exfil data via `rostopic`, it sure felt great not to have to use ROS professionally, and to know I was probably never going to encounter it again. [0] https://tryhackme.com/r/room/adventofcyber24sidequest https://tryhackme.com/r/room/adventofcyber24sidequest [1] https://0x85.org/sidequest2024-2.html https://0x85.org/sidequest2024-2.html
- esteve 2y agoI don't know the rules of the TryHackMe Advent of Cyber, but I find it a bit strange that it had one of the quests targeting a version of ROS that has been deprecated for the past 5 years and will be completely EOL'd this May. ROS 2 moved away from the codebase that the quest targeted many years ago.
- rcxdude 2y agoCTFs are generally puzzles/games, not pentests themselves, so they will deliberately use out of date or misconfigured versions of software so that they are vulnerable in a known way.
- dtquad 2y agoWhich would you choose to do real-time robotics with C++ on Linux/PREEMPT_RT with CUDA support?
- margalabargala 2y agoWell, the features you're talking about are operating system features, which despite its name, ROS is not. That request is independent of middleware. As far as I'm aware very few real time operating systems support CUDA, and none that are free. You could look at Concurrent's RedHawk Linux.