ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

How to learn ROS if I am a complete novice with no computer science knowledge.

asked 2018-04-12 02:17:11 -0600

ros_beginner_09 gravatar image

updated 2018-04-12 02:28:08 -0600

I have no knowledge in robotics or computer science, and am a windows user. I know a bit of C++. I will have to use ROS for my PhD, and have started learning it. However, so many terms are unknown to me in ROS wiki that I am having a hard time understanding how ROS actually works. How should I overcome this problem

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted

answered 2018-04-12 02:25:08 -0600

gvdhoorn gravatar image

updated 2018-04-12 11:57:13 -0600

Personally I'd say: computer science is not needed, a (strong) programming background will help tremendously though. "a bit of C++" does sound like that could be improved.

I'd start without any ROS (seeing as you're starting a PhD, you should have some time to ignore ROS for now), but some good tutorials on:

  • Linux (command line and daily usage)
  • C++ (perhaps your university has a course)
  • perhaps Python
  • and as @VictorLamoine suggested: take some time to look into CMake (as the build tool underlying Catkin)

You don't need to be a wizard (so don't overdo looking-for and completing tutorials), but you do need a decent background in these things.

Then look at ROS.

(you could of course always parallelise things, but I've noticed with 'my' students that this can cause them to be overwhelmed by new concepts, and have a hard time properly integrating all the new knowledge).

Finally: understand that software engineering (the art of putting programs / structures together in a logical and maintainable way) is just like any other engineering dicipline:

  1. identify a problem/task
  2. divide it into smaller problems/tasks
  3. solve subproblems
  4. combine solutions into final solution

ROS ideally helps with steps 2 and 4, by making the effects of dividing solutions into smaller parts almost transparent to your program (ie: communication is taken care of for you).

Programming is just a way to encode your solutions in a format that allows them to be executed by a machine -- in this case a computer.

Learning to program is the process of being able to do that.

edit flag offensive delete link more


Thank you very much for the reply. Do you think using Ubuntu regularly will help me get used to the terminology used in ROS ? Do you have any suggestions regarding good Ubuntu tutorials?

ros_beginner_09 gravatar image ros_beginner_09  ( 2018-04-12 02:33:56 -0600 )edit

Immersion always helps (same with learning a foreign language).

re: ubuntu tutorials: no, I wouldn't have anything to recommend.

gvdhoorn gravatar image gvdhoorn  ( 2018-04-12 02:45:05 -0600 )edit

Thank you very much

ros_beginner_09 gravatar image ros_beginner_09  ( 2018-04-12 03:00:34 -0600 )edit

I find myself using bash commands cd & ls (and their variants) the most. You don't have to be a command line expert.

mohsen gravatar image mohsen  ( 2018-04-12 03:21:53 -0600 )edit

I agree, and agreed ("you don't have to be a wizard").

But I would say the following topics are definitely also important:

  • copying, moving, creating, deleting files
  • (file) permissions
  • managing processes (top, kill, etc)
  • text manipulation (grep et al)
gvdhoorn gravatar image gvdhoorn  ( 2018-04-12 03:37:54 -0600 )edit

I would add CMake to this list, just before starting the ROS tutorials, learning catkin is hard if you don't know CMake.

VictorLamoine gravatar image VictorLamoine  ( 2018-04-12 04:12:25 -0600 )edit

Yes, good suggestion.

But learn CMake with the understanding that Catkin is nothing special: it's a set of convenience macros/functions that help when building ROS pkgs with CMake.

gvdhoorn gravatar image gvdhoorn  ( 2018-04-12 04:15:51 -0600 )edit

Thank you everyone. I am really glad to see that so many people are here to help.

ros_beginner_09 gravatar image ros_beginner_09  ( 2018-04-12 05:56:39 -0600 )edit

answered 2018-04-12 02:40:47 -0600

mohsen gravatar image

updated 2018-04-12 02:46:49 -0600

I'd suggest reading Programming Robots with ROS by Morgan Quigley. It's an easy read and teaches ROS in python which is significantly more readable than C++. (Also, I believe it was written by developers in OSRF which is nice.)
Once you're familiar with ROS workflow and concepts you can easily switch to C++.

edit flag offensive delete link more


Thank you very much. I have started to read the book. But the problem is mainly with keywords. The book also uses some keywords that I do not understand.

ros_beginner_09 gravatar image ros_beginner_09  ( 2018-04-12 03:01:33 -0600 )edit

Can you provide us with some of those keywords?

mohsen gravatar image mohsen  ( 2018-04-12 03:07:47 -0600 )edit

I just started it yesterday, and now reading catkin, Workspaces, and ROS Packages. So, it says catkin is ROS ''building system''. I could not for example understand what it means to be a building system (which the book defines as the set of tools that ROS uses to generate executable programs)

ros_beginner_09 gravatar image ros_beginner_09  ( 2018-04-12 05:44:50 -0600 )edit

And that is why I suggested learning about programming, building/compiling programs and all that comes with programming in modern languages first. That way you can get comfortable with that terminology (ie: keywords) and then ROS documentation/books will start to make a lot more sense.

gvdhoorn gravatar image gvdhoorn  ( 2018-04-12 05:46:22 -0600 )edit

answered 2019-09-30 05:07:33 -0600

R. Tellez gravatar image

If you are a novice and want to learn ROS, then you first need to learn how the Linux shell works and then, you must learn how to create programs in Python (in that order).

  1. Linux is required to manage the creation, compilation and launching of ROS programs. You do not need to master everything in Linux, but some basic concepts. We have created a free Linux For Robotics online course where we teach those concepts, applied to robotics. I recommend you to do it.

  2. Once you know about Linux, then you must learn to create programs either in C++ or in Python. ROS can be programmed in any of those languages, but if you are a novice, then I strongly recommend that you start by learning Python and then learn ROS using Python only. That is the fastest and simplest way to master ROS. We have also created a free online course about Python For Robotics, that I highly recommend you.

The previous two subjects are quite simple, so don't be scared, you will learn them very quickly.

  1. Once you know those two, you are equipped to start learning ROS. That is the tough part. There are several ways to learn ROS which depend on your learning style, urgency you may have, and money. Of course I recommend you the courses we created at our online academy (Robot Ignite Academy), but there are other ways to learn that may be more suited for you. Have a look at this post, were we listed all the ways you can learn ROS.

Hope this helps. As a final comment, I would like to mention that the key component to learn ROS is by practicing. Just reading text, watching a video or reading code will not make you understand later why a ROS program is not working as it should. So I recommend you to focus on practice.

edit flag offensive delete link more

Question Tools



Asked: 2018-04-12 02:17:11 -0600

Seen: 1,759 times

Last updated: Sep 30 '19