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

Revision history [back]

click to hide/show revision 1
initial version

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

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

I'd start with no 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

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).

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

I'd start with no 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

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 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.

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

I'd start with no 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

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.

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

I'd start with no 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.

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

I'd start with nowithout 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 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.