지난 주에 제 동료가 다음 달에 ROS 수업을 시작하게 되어 대학에서 ROS를 가르치는 방법에 대한 조언을 구해 왔습니다. 그 후로, 나는 대학에서 ROS를 가르치면서 내가 과거에 저질렀던 5가지 실수를 녹화하기로 결정했습니다. 이 비디오가 여러분에게 유용하고 내가 한 실수를 피하도록 도움이 되기를 희망합니다.
🙅 1번째 실수: ROS 설치 가르치기
첫 번째 실수는 ROS 설치 방법을 가르치면서 ROS를 가르치기 시작하는 것입니다. 이것은 ROS 학습과 관련이 없으므로, ROS를 배우는 사실에 대한 장벽을 더 많이 설정하는 실수입니다. 실제로 ROS 설치 방법을 가르치고 설치 문제를 해결하는 데 소비되는 모든 시간은 로봇 내에서 ROS 문제를 해결하고 가르칠 때 사용할 수 있습니다.
🙅 2번째 실수: C++로 ROS 가르치기
두 번째 실수는 프로그래밍조차 모르는 학생들에게 ROS를 가르칠 때 C++를 사용하는 것입니다. 이 실수는 프로그래밍을 전혀 모르는 학생들에게 가르쳐야 하는 교사들을 위해 특별히 해당됩니다. 제 경우에는 메카트로닉스에서 온 학생들을 가르쳤으므로 프로그래밍이나 리눅스 사용 방법을 전혀 모르는 학생들이었습니다.
ROS를 Python 또는 C++를 사용하여 가르칠 수 있음을 알고 있습니다. 그리고 C++가 매우 복잡하며 ROS도 복잡하다는 것을 알고 있습니다. 그러므로 C++와 ROS 두 가지를 혼합하여 프로그래밍을 전혀 모르는 사람들에게 가르치면, 그들에게는 많은 어려움이 될 것이므로 그들이 따라가고 이해하기가 매우 어려울 것입니다. 대신 이러한 상황에서 Python을 사용하기를 제안합니다. Python을 사용하여 ROS를 가르치고 시작하기 전에 Python에 대한 몇 가지 강의를 진행하십시오. Python을 배우기 매우 쉬우며 매우 빨리 배울 수 있습니다. Python을 사용하여 ROS의 모든 커리큘럼을 제공한 다음, ROS의 주요 개념을 Python으로 마스터한 후 ROS를 C++로 전환하려고 시도할 수 있지만 필요한 경우에만 그렇게 하십시오. 그 산업에서 일하려는 경우와 C++이 필수적인 경우입니다.
🙅 3번째 실수: 슬라이드를 사용하여 ROS 가르치기
세 번째 실수는 슬라이드를 사용하여 ROS를 가르치는 것입니다. 나에게 있어서 슬라이드를 사용하여 ROS를 가르치는 것은 움직임을 보여 주며 땅에서 수영을 가르치는 것과 같습니다. 나는 곧바로 물로 뛰어들어 움직이기 시작하고 무슨 일이 일어나는지 보는 것을 선호합니다. ROS에 어떻게 번역되는지? 그래서 제 의미는 우리는 로봇과 직접 연습부터 시작해야 한다는 것입니다. 이렇게 시작해야 한다는 제안을 보여 드리고 싶습니다. ROS의 매우 작은 이론적 개념을 가르침으로써 시작하십시오. 예를 들어, 토픽(topic), 토픽 구독자란 무엇인가(topic subscriber)? 그러나 매우 빨리 학생들이 이것을 로봇에 적용하도록하여 예를 들어 카메라에서 데이터를 어떻게 캡처하는지를 알아보십시오. 그런 다음 학생은 이 프로그램을 만들고 카메라에 연결하려고 노력할 것입니다. 작동하지 않으면 가르친 이론으로 돌아가서 오류가 어디에 있는지 확인하고 프로그램을 다시 변경하고 다시 시도하고 이 루프를 반복하고 모든 것이 이해될 때까지 다음 개념으로 이동하십시오. 그것이 내가 제안하는 프로세스입니다.
🙅 4번째 실수: ROS에 대해 모든 것을 가르쳐야 함
네 번째 실수는 학생에게 ROS에 대해 모든 것을 가르칠 필요가 없다는 것입니다. ROS는 방대한 주제이므로 학생에게 모든 것을 가르치려고 하면 압도될 것입니다. 대신 현재 학생의 수준과 관련된 부분만 가르치기를 제안합니다. 그가 아무것도 모르면 예를 들어 패키지를 만드는 방법과 카메라에서 데이터를 가져오는 방법을 가르치고 이를 마스터하면 다음 단계로 넘어가기를 제안합니다. 항상 이해된 기반에서 이동하며 학생의 수준이 올라감에 따라 전진하십시오.
🙅 5번째 실수: ROS에 대해 모든 것을 알아야 함
다섯 번째 실수는 ROS에 대해 모든 것을 알아야 한다는 걱정입니다. ROS가 다루는 모든 것을 알아내는 것은 불가능하기 때문에 수업 중에 학생 중 일부가 당신에게 알지 못하는 질문을 할 가능성이 높습니다. 그것은 매우 정상적인 일입니다. 오늘 나에게도 그런 일이 있었고 그것에 대해 걱정하지 않아도 됩니다. 만약 그런 일이 벌어진다면, 학생들에게 “죄송합니다. 이 질문에 대한 답을 모르겠지만, 문제에 대한 메모를 남기고 다음 날에 대답을 찾겠습니다.”라고 안내하십시오. 그런 다음 다음 날에 이 답변을 제공하십시오. 그렇게 함으로써 당신은 정말로 학생들에게 당신의 주제에 대한 자신감을 보여 줄 것입니다. 아마 당신은 모든 것을 알지는 않겠지만 그곳에서 문제를 해결하는 방법을 알고 있고 지식을 조금씩 늘려 나갈 것입니다. 그래서 그들이 당신에게 질문을 하고 당신이 무언가를 모른다고 보여주는 것이 당신을 제자리에 묶어두지 않도록하고 ROS 수업과 학습에서 진전하지 못하게하지 마십시오.
요약
자, 이 비디오를 마무리하면 세 가지 조언을 드리겠습니다.
첫 번째는 컴퓨터에 ROS를 설치하는 것을 기반으로 수업을 만들지 마십시오. 그러려면 이 게시물을 참조하여 가상 머신이나 도커 또는 웹 통합 환경을 사용하여이 단계를 건너 뛸 수 있는 방법을 보여주는 것입니다. 그래서 확인해보십시오.
그리고 또한 당신의 학생이 매우 숙련된 프로그래머인 경우가 아니라면 ROS를 가르치기 위해 C++를 사용하지 마십시오. Python으로 시작하십시오. 또한 여러분의 학생들이 리눅스나 Python 지식이 전혀 없을 수 있습니다. 그렇다면 여기 무료로 제공되는 두 가지 온라인 강의 링크가 있습니다. 로봇 공학을 위한 리눅스를 배우기 위한 것과 Python을 배우기 위한 것입니다. 그래서 확인해보고 여러분의 학생들에게 유용할 수 있을지 확인해보십시오.
그리고 세 번째로 가능한 한 많이 연습하도록 학생들에게 권장합니다. 귀하의 연구실에 있는 로봇을 ROS와 함께 가능한 한 빨리 연습하는 데 사용하십시오. 로봇이 없거나 그것들을 감당할 수 없다면 시뮬레이션을 사용하십시오. 시뮬레이션도 ROS를 배우기에 매우 좋습니다. 학생들이 여러 가지 다양한 유형의 로봇과 함께 연습할 수 있도록 허용하기 때문에 매우 유용할 수 있습니다. 그게 다 입니다. 이 비디오가 여러분에게 도움이 되기를 바랍니다.
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 capturefrom 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.
Summary
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