My job at my school’s lab is to get simulation of our robots working in gazebo. I’ve been struggling with getting it up and running. I’ve had to learn how to create and spawn urdf robots and how to navigate linux.
As far as I’ve come I feel I’m still missing the whole reason why ROS is so cool in the first place. I can’t remap nodes. I’d like to have the ability to stitch inputs and outputs but I struggle so much to understand.
Can someone give me some encouraging words over the “ah-ha” moments you’ve had that made you consider yourself good at ROS?
This might not be the encouragement you’re hoping for…
But before ROS, the process was worse, you really had to become an expert in the particular set of tools and custom frameworks that the previous graduate students had left behind, and once you did get it working it wasn’t easy or possible to collaborate with other labs… With ROS it’s possible to collaborate and work together on joint projects like the Navigation, Control or MoveIt! where once someone has something cool working in one lab it can be shared and work for other labs with the same robots or even different robots with just a bit of tuning. And once you graduate or move on to industry you’re not needing to start from scratch learning a new set of tools and custom frameworks.
So just hang in there, enjoy the learning process, Linux skills will be extremely valuable, and don’t worry it gets better.
I agree with both sentiments expressed so far: a huge strength of ROS is its community of collaborators, and ROS is evolving quickly so it can feel like a moving goalpost.
However, I don’t want to minimize the struggle. Working with ROS is hard because, in addition to learning the idioms of its development, you need to work with complex robot systems. Frequently, doing so looks like reading lots of code to understand how other folks have used ROS to cleverly architect their own systems.
Building the comfort to understand other people’s code takes a long time. Asking for help from friends, soliciting help online, and not being too hard on yourself are helpful strategies along the way. It took me two years of development across several research projects to feel excitement instead of apprehension at the prospect of writing robot code using ROS, Gazebo, and MoveIt.
Having grown my own confidence and built friendships in the ROS community, I encourage you to stick with it because the payoff is huge. Reasoning about multi-process software systems, managing open source dependencies, reading and writing code, and interacting with other developers are incredibly useful (and marketable) skills that you can’t help but acquire by doing this stuff. It is most certainly daunting, but worth it!
Have you considered applying for a scholarship to attend ROSCon? This was an opportunity that helped me feel included in the ROS community and might be interesting to you too.
I’d say I have become a lot more comfortable in ROS, since I started. I am sure everyone understands the struggle we face at the very beginning - wtf are nodes, topics, publishers, subscribers, and so on. But, the key is to take your time. A lot of the time, I personally found that I gained more knowledge in general software development practices using CMake, which trust me is a good skill to have. It does not mean that I can read a CMakeLists file and go “ah okay, so that’s what it does”. I guess it is safe to assume that for a lot of members of this community, continuous head scratching while staring squinty-eyed towards a monitor is a daily occurence.
The more time you spend with it, you will eventually see that things that used to feel difficult for you start to feel comfortable. With time, you will start to appreciate the framework and the community that supports it. I’ll give you a simple example - you are not as vendor-locked anymore as you were say 15 years ago when you are thinking about a robot for your application. You have a common ROS interface for a lot of the robots out there, especially the new ones.
You will also start to appreciate the effort of the community and the developers in general, as you work more with ROS. One of the reasons it is so easy and almost effortless to install ROS and packages onto your development machine is that someone wrote a very detailed guide on it, someone else updated the info on the page with general FAQs about errors, and so on.
TL;DR : You’re off to a good start, you’re going to be great, just give it time. ROS is super cool, the more time you spend with it, the better you are going to be.
I have been using ROS off and on for about the past 8 years. I still haven’t had that feeling yet. I do feel like I can trust that there are people in the community that have already solved whatever problem I have been stuck on.
I started at learn the command line and python just so I could learn to use ROS…
There have been struggles. However, this forum and it’s members (and their githubs) have helped me build everything I have ever thought was a good enough idea to build. It takes time, but so does everything worth doing.
I would assume that it still easier to use than most things out there, I haven’t really looked around since I found ROS.
Learning any complex system is hard and takes time. I saw dozens of students come into our RoboCup team, only knowing Matlab on Windows and now have to learn Linux, Python, C++ & CMake, git, ROS, etc. Pretty steep and I’ve seen many people struggle, but eventually get there.
I don’t recall them having any big aha moment, but they gradually understand more and get more proficient and have to ask less and less questions. Same for myself of course. Eventually, people come to you with questions and you can then actually help them too.
I’m not sure if I know 100% from the top of my head to be honest (after using ROS for 10+ years for university & work), but I know it exists and can look things up for the exact syntax for that. But that you know stuff can even be remapped is a good indicator already IMO.
There’s always more to learn, in breadth and depth, always. Question is, are you ‘productive’, getting further? Sounds like you are, so good for you, and your lab!
I 200% agree with this. Working with complex robot systems often means dealing with non trivial math concepts, more than once I found myself struggling with some library due to my lack of understanding of the underlying theory rather than due to the lack of documentation
I have 2 “ah-ha” moments to share that may provide some encouragement.
The first time I built a RViz panel from scratch for a new robot. One of the greatest values offered by the ROS ecosystem are developer tools and visualization tools are specially powerful in order to deepen the understanding about the state of a platform. Nice graphs really are a sight for sore eyes
The first time was able to prototype an idea in about 30 min. We had a car-like platform using ROS that was controlled using teleop and keyboard keys (the focus of the project was making it run autonomously, so we spent few time making it easy to teleoperate it). One day, we were talking about the project over lunch and thought “how hard would it be to operate the robot over a joystick?”. In the span of less than 1 hour, I was able to install the dualshock4 driver for ROS and perform the appropriate wiring to integrate it to the drive system. Without ROS, it could have taken 10x as much time, as it would require to manually integrate controller and motor actuation
The moment you feel comfortable to prototype ideas is a nice milestone in your ROS journey, as it is a reflection that you feel productive using this tool
I must say , this is a good response .All you have said is totally correct . ROS makes everything easy , in the sense that instead of re-inventing the wheel .You could get algorithms for your robot started up real quick by just implementing packages and probably writing some nodes to get your problem solved. The more you play with the framework the better you become .
Don’t worry you will be alright , trust me .Every expert at the framework started just the same way .Just hang in there and keep learning and trust me in no time you will be a pro .Things that seem difficult for you before, will be easy .Keep practicing and you will be fine .
YOU GUYS ARE AWESOME. Hearing everyone’s encouraging words has really motivated me. On top of everything I think I’m feeling the push to go to ROSCon this year and get more involved in the community.
you’re writing a function and you hear your inner voice saying “there has to be a package for this”, then you go to https://index.ros.org/ and actually find it
figuring out that not all packages are the same quality and that sometimes finding just the right package might also mean that you still have to write the function yourself, because the author of the package had only one use-case in mind and it wasn’t your use-case (and the package is long abandoned and its author is now hiding in the mountains off the grid)
having a pull request accepted to roscpp or other core packages… they’re not bug-free, but their quality is actually pretty high. just reading the sources and comments in them, you (can) learn a lot… and when you manage to prove yourself and others that there is a bug, figure out the fix and find the courage to create the PR, that’s a big moment.
sending an awesome PR to a ROS package and getting the whole idea it proposes rejected… not every package maintainer wants his package to become a swiss army knife with zillions of knobs…