It is helpful in robotics to first learn about "Linux kernel development" or "device driver development in Linux" before I start learning ROS? I know C and JAVA! In brief, I want to know any prerequisites which are essential to understand ROS better.
-
2$\begingroup$ ROS is very high level. You most likely don't need anything from kernel programming to learn ROS. If you are using ROS to provide access to a particular hardware you have made, you might need to do a kernel-level driver, but that would be unrelated to ROS itself. $\endgroup$– ShahbazCommented Jun 25, 2016 at 20:35
-
$\begingroup$ Do some courses on python and c++. Then when you are using the algorithms built into several ROS packages, read some research papers about the algorithm or that particular topic to get yourself up to speed. And also ask heaps of questions! $\endgroup$– JJeromeCommented Jul 18, 2019 at 23:32
3 Answers
It sounds like you're excited to learn ROS. The best way to learn ROS well is to dive in and learn any necessary bits along the way. Once you finish going through EVERYTHING in the ROS tutorials you can tinker with a project like turtlebot.
Last but not least there is http://answers.ros.org/ for any ROS related questions you may have.
Enjoy!
EDIT
I took the route I suggested and it took me a while to learn some VERY helpful things so I want to point those out as well.
- Electric, Fuerte, Groovy, Hydro, Indigo, Jade, Kinetic are all different versions of ROS from oldest (Electric) to newest (Kinetic). I personally use Hydro/Indigo because they have the most/best support in communities.
catkin
is a type of ROS friendly workspace. You can build ROS in a workspace (required by some devices/distros) or you can simply do a desktop or full install of ROS.- You can learn to build
URDF
models from the tutorials. You can use URDF models as robots inGazebo
(mentioned by @NBCKLY). Use this to debug your robot as you can see where it thinks it is and what it thinks it is doing. You can also try throwing parts on, like a laser scanner, to see if that will help your invention.
-
1$\begingroup$ I would also like to point out that topics is the de facto way that your independent processes (nodes) will use to communicate with each other. Think with topics. Do you want to communicate the position of your robot to a Kalman Filter? Topics. Do you want to display the angle of a joint in a gauge? Topics. $\endgroup$ Commented Jul 1, 2016 at 14:08
To learn and use ROS, you do not need to know anything about Linux kernel development, and at first, you shouldn't need to worry about writing drivers. All you need to know is how to use a command line environment.
Like Jacksonkr said, the Turtlebot tutorials are pretty good. In addition, using Gazebo, you can simulate the robot without needing to have one physically, which is fantastic. Once you learn the basics, you can simulate and implement solutions to a huge number of robotics problems like SLAM.
You do not require "Linux kernel development" or "device driver development in Linux" before starting ROS. As ROS allows you to write programs in either C++ or python, familiarity with these two languages would be helpful. As you are familiar with C, learning C++ may not be that difficult. In addition to that, familiarity using linux terminal would be beneficial. However, even if you are not comfortable with linux terminal, you can start learning ROS. In that case, first start following the ROS tutorials step-by-step and if you are not familiar with commands mentioned in the tutorials you can always search what actions those commands perform. I would suggest you to start the ROS tutorials and always learn the dependencies on the go.