Last week, a colleague of mine asked me for advice on how to teach ROS at university because she is going to start delivering a ROS class next month. Then I decided to record this video with 5 mistakes I have made in the past while teaching ROS at the university. I hope that this video is useful for you and helps you avoid the mistakes that I made so you can start delivering ROS classes smoothly.
🙅 1st mistake: Start teaching ROS by teaching how to install ROS
The first mistake is you start teaching ROS by teaching how to install ROS. This is a mistake because learning how to install ROS is irrelevant to the fact of learning ROS. Actually, you are putting a lot more barriers to the newcomers that already have a big problem learning ROS itself. All this time spent teaching how to install ROS and how to solve installation problems can actually be used to learn and teach how to solve problems with ROS inside the robot.
🙅 2nd mistake: using C++ to teach ROS
Mistake number two is using C++ to teach ROS to students that don’t even know how to program. Okay, so this mistake is specific for those teachers who have to teach to guys who don’t know how to program. So, that was my case when I had some students that came from mechatronics, so they don’t even know how to program or how to use Linux.
You know that you can teach ROS by using Python or C++. And you know that C++ is very complex. You also know that ROS is very complex. So, if you mix those two things, C++ and ROS, and teach this to people who don’t even know how to program, that’s a lot for them, so it’s going to be very difficult for them to follow and to understand. Instead, what I propose is that in those situations, you start using Python instead. You are going to teach ROS with Python, and before starting that, do some classes about Python, just learning Python, which is very easy and they can learn very, very quickly. You provide all the curriculum of ROS using Python, and then once they have mastered all the key concepts of ROS using Python, you can try to do this switch into ROS with C++, but only for the cases that are necessary. You know those cases that want to work in the industry and C++ is mandatory.
🙅 3rd mistake: teaching ROS by using slides
Okay, so the third mistake is teaching ROS by using slides. Well, for me, teaching ROS with slides is like teaching to swim on the ground by showing the movements. I prefer to jump straight into the water and start trying to move and see what happens, right? How does that translate into ROS? So, what I mean is that we have to start by practicing with the robot straight away, from minute one.
The proposal that I would like to show you is start by teaching a very small theoretical concept of ROS. What is a topic, for example, a topic subscriber? Then, but very quickly, then you have the student apply this to a robot, so for example, with the robot, how to capture from the camera, the sensor. Then, the student is going to create this program, try to connect to the camera. If it doesn’t work, then he will have to go back to the theory that you have taught and then see where the mistake is. And then change the program again and try again, and then repeat this loop until everything is understood and then go to the next concept. So, that’s the process that I propose
🙅 4th mistake: have to teach everything about ROS
The fourth mistake is you don’t have to teach everything about ROS. ROS is a large subject, so if you try to teach everything to the student, he will be overwhelmed. So instead, what I propose is that you only teach those parts that are relevant to the current level of the student. So if he doesn’t know anything, for example, let’s say how to create packages and how to get data from the camera, then once this is mastered, go to the next level, but always moving from a base that has been solidified, that has been understood, and just move forward as the level of the student increases, not more.
🙅 5th mistake: have to know everything about ROS
The fifth mistake is to be worried about having to know everything about ROS. Well, it is impossible to know everything that ROS covers, so it is very likely that while you are in the class, some of the students will ask you some questions that you don’t have an answer for. That’s very normal. That happened to me today and you don’t have to worry about that. If that happens to you, my recommendation is that you just indicate to the students, “Sorry, I don’t know this answer, but I will take note of what the problem is and then find the answer for the next day.” Then on the next day, you’re going to provide this answer to the students. Then by doing this, you are going to really show your students your confidence on the subject. So maybe you don’t know everything, but you know how to solve the problems there and also you are going to increase your knowledge, little by little. So don’t let those questions they are asking you and showing that you don’t know something set you back and not progress in your class and learning of ROS.
Okay, let me conclude this video by giving you three pieces of advice.
The first one is you don’t base your class on installing ROS in the computers. So if you want to avoid that, here is a post where I show how you can avoid that step by using virtual machines or dockers or web integrated environments. So have a look.
So then, also please don’t use C++ for teaching ROS unless your students are very skilled programmers. Start with Python. It is also very likely that your students are coming from a background without any Linux knowledge, any Python knowledge. Then if that is the case, here is a link to two online courses that are free; one for learning Linux for robotics and another one for Python for robotics. Okay, so check them out and see if they could be useful for your students.
And the third point is that you should make your students practice as much as possible. So use the robots you have at your lab for practicing as soon as possible with ROS. And if you don’t have robots, you can’t afford them, then use simulations. Simulations are also very good for learning ROS. They allow the students to practice with many different types of robots, so they could also be very, very useful.
And that is all for this video. I hope that this is useful for you