RDP 023: Using ROS to Teach Foundations of Robotics With Ross Knepper

RDP 023: Using ROS to Teach Foundations of Robotics With Ross Knepper

In this episode, Prof. Ross explains how he uses ROS to teach foundations in robotics. He tells about how he synchronizes the teaching of ROS with the teaching of robotics subjects, as well as his use of simulations and the importance of debugging tools for ROS. He also explains why he doesn’t use the ROS navigation stack or MoveIt! with his students.

“On my second lecture on ROS I introduce the Drunk Turtle where I introduce deliverate errors, so students can see what happens when you have different categories of errors.”

Ross Knepper

Ross Knepper teaching ROS to students

Ricardo Tellez: Hi, ROS developers. And welcome again to the ROS developers podcast. Today, we are interviewing Prof. Ross Knepper. Ross is the assistant professor of the department of computer science at Cornell university. There, Ross has been teaching foundations of robotics and human robot interaction and robotic manipulation. Today, he will explain us how is he using ROS for teaching all those robotic subjects. Welcome to the podcast, Ross!

Ross Knepper: Hey Ricardo, thank you for having me on. 

Ricardo Tellez: Our pleasure of course :). I would like to go straight to the first question. Why are you teaching ROS? 

Ross Knepper: Sure. So as you mentioned, I teach a course called the foundations of robotics and it was actually a student request. First, I wasn’t teaching ROS and a lot of students were asking me, can we please learn ROS? It seems like an important job skill. And so I decided, well, it fits naturally in the course and I’d be happy to integrate it. 

Ricardo Tellez: Okay. And then you are teaching this as a separate subject or its included into another subject, or the ones that you are teaching as a part. 

Ross Knepper: So the class, as I mentioned, it’s about the foundations of robotics, kinematics, navigation control, uncertainty and for the project component of the course, when the students do their implementation, they use ROS in that. So at the beginning of the semester, the first project is basically all about learning ROS so that the students can use it later on when they work in their robots and simulation. 

Ricardo Tellez: Okay. And which version of ROS are you using? 

Ross Knepper: We are using the latest ROS, Melodic

Ricardo Tellez: Melodic. Why that one? Why not another one? Why don’t you use another version, like Lunar?

Ross Knepper: I think ROS is pretty stable right now. There don’t to be a lot of changes, at least that impact most users. And so it seems pretty invariant to version, honestly. So I want the students to come away knowing the broad foundations of ROS and how to build projects in ROS. I’m not really so concerned with the particulars of one version versus another one. 

Ricardo Tellez: That’s a very good comment! Because I actually also agrees with you that the version of ROS is not really so important in most of the cases. I mean, except when they change from a ROS catkin for example. Apart from that, ROS versions are more or less, they share the same core that is the same. And it’s very stable. And we’ve got this question asked many times because we have an Academy for teaching ROS, and they ask:”But which ROS version are you teaching?”. And then we say: “Well, you mentioned it’s not so important because the core is maybe just for a specific packages.”

Are you using any specific package that requires a specific version of ROS?

Ross Knepper: No, we’re not. I mean, honestly, my philosophy for ROS is that what it’s really good at is interposes communication and it provides a type system which is robotics relevant. So we have the students build their own projects. Each assignment is its own separate project, which is its own package. We don’t really use a lot of the existing ROS package infrastructure beyond the real basics. Because there’s a lot of stuff out there varying quality. Some of it is robot specific. In the early days of ROS, there was a tremendous amount of software on the PR2 stack. And if you have a PR2, it was amazing. You could do so many things with it. But as soon as you tried to run it on some other kind of robot, your mileage would vary considerably. So I’d rather have the students be prepared for whatever robots they wind up using in their future work, rather than thinking they know more than they do, just because it happened to work on one model.

Ricardo Tellez: I see. But I presume that you are using, for example, the Navigation Stack or the movelt package?

Ross Knepper: No, not even those. We use those in research. But this is really, as the class’s name, it’s the foundations of robotics. So the students create their own controller, which operates at a lower level below the Navigation Stack. Similarly they’re learning to do inverse kinematics. They’re learning to control the robot arm and move it. It’s a great tool when what you want is to not worry about how those things work.  But you don’t want students going out thinking they know everything about robotics, and then they realize they don’t actually know how to control an arm because it was done for them. That’s really the level at which we’re teaching this. And when they discover these packages later, there’ll be very pleased.

Ricardo Tellez: Afterwards. Yeah, exactly. Yeah. It’s like teaching people to add and do root squares, but then afterwards they can do it with a calculator and then, yeah. 

Ross Knepper: That’s it, that’s a very apt analogy! Because the course that I teach is actually basically a math course. It’s a lot of linear algebra, a lot of differential equations with robotics applications, of course. But the foundations of robotics is really fairly mathematical. And so we teach this sort of broad range of concepts with applications on the robot and then they go and actually implement the math, using num PI, using ROS, make things work and they see the robot move and that’s a very powerful reward. And I think also the math is much more intuitive if you have an application for it. It’s one thing to learn how to multiply matrices, but to understand what a rotation matrix actually is doing to a rigid body and to see it on the screen is very powerful.

Ricardo Tellez: Which level of education are you teaching? I mean, it’s undergraduate or graduates?

Ross Knepper: It’s an elective at the undergraduate level. I do get grad students taking it as well, so masters and some PhDs take it. It’s a great way to catch up. Maybe you had a little bit of robotics research in undergrad, or maybe you had some informal experience through extracurriculars, like first robotics. You might have a lot of intuition, but not be up to speed with all of the foundational concepts. So it’s really to get everybody to a level playing field.

Ricardo Tellez: Okay. And how do you structure that teaching? I mean, you mentioned before that you were doing some projects and the first project was to learn ROS. So how are you teaching this?

Ross Knepper: That’s right. So all of the projects are done in simulation. We use the turtlesim for the first one and then once they’ve learned ROS, we’re using the V-REP simulator for the remaining four project. So they do for example, in project two, they’re going to learn motion models for different types of mobile robots. So they learn differential drive, Ackerman steering, they learn how to convert between the two. So if they want to achieve a certain linear and angular velocity what is the math behind that conversion? And then they’ll see robots moving on the screen and try to follow lines and so on, on the screen. Project three then is going to be about arm kinematics. Just these basic concepts.

Ricardo Tellez: And at that point they already know ROS. At that point they can apply what they are seeing on the theoretical classes and then apply. 

Ross Knepper: That’s right. So for the first project, maybe it seems a little silly they’re using turtlesim to draw a flower on the screen. So it’s just a pretty picture, but you introduce all of the important concepts. So you’re publishing and subscribing, you’re using a service, you’re using a rate to control the speed at which it sends commands. You’re setting and getting ROS parameters. So all the basic ROS tools are in there and then they learn the command line tools as well. Especially for debugging. So, my wait for service is not returning, why would that be? Well you can run ROS service list and see like, is it running, Oh, I forgot to run the server. That kind of thing.

Ricardo Tellez: Yeah. And then you mentioned that, so you are using simulations for that, are you using any real robot at the end or at some point in time?

Ross Knepper: Well, for this particular course, no, it’s entirely in simulation. We actually have a server farm in the basement of our building that’s running 150 virtual machines. We have 150 students in the class, and we give them all identical configuration so that they don’t have to worry about installing all the right packages and running Ubuntu and all of that stuff. It’s all given to them and they can focus on just learning ROS, just learning robotics.

Ricardo Tellez: Great. And why are you using the V-REP simulator instead of using, Gazebo for example, that is the one that comes with ROS.

Ross Knepper: Yeah. So I know that Gazebo has a lot of fans. We benchmarked a few different simulators and we found that Gazebo is very resource hungry. So eats up a lot of memory and a lot of CPU and it seemed like to get decent performance, say 20 frames per second, you need four cores. Whereas V-REP seems to run very comfortably in one or two cores. So I don’t know much about under the hood what’s going on, but we found that in our server farm, we could get away with half the cores by switching to V-REP.

Ricardo Tellez: Yeah. And I think that both of them, they use the ODE [12:05 inaudible] extension. So that’s strange. Maybe it’s something related to the visualization, that’s different, maybe, could it be instead of the physics?

Ross Knepper: Yeah. Another aspect is that Gazebo has this client server model, so it’s running separate processes and that may, it’s a nice abstraction because it means that you can run the client and server on different hosts, but it may also introduce some overhead as well.

Ricardo Tellez: Okay. So how much time are you dedicating to teach ROS?

Ross Knepper: So it’s sort of a lightening introduction to ROS. So I do one lecture that covers a lot of the basics, client server model, published, subscribe, nodes. I give them some examples and some basic readings. I have them do readings from a book called a gentle introduction to ROS by Jason M. O’Kane, which is a great book.

And I think there’s only so much listening to somebody talk about ROS that’s useful. So beyond that, I think it’s actually much more valuable to learn by doing. And so I want to get the students to dive in early and just start playing with it and see what they can do. So, project one actually goes out on the first day of the class. They have a couple of weeks, so we’re actually just coming up on the end of the first two weeks of class right now. And the students are learning a lot through trial and error, through course staff assistance. And it is sort of like learning to swim by being shoved into the deep end of the pool, for a lot of the students and it feels very intimidating because the course, it’s a big mix of disciplines. Although I’m in computer science, a majority of the course is from engineering. Mechanical engineering, electrical and computer engineering and so on. And all these different backgrounds, many of them are not as confident at programming in Python. So there’s a lot of these factors that make it intimidating. And I think it’s important to get past that intimidation and just say, I’m just going to try, I’m going to dive in, do my best. And inevitably they learn a lot and they come out much more aware than they went in. And of course they will continue learning ROS throughout the semester. There’s going to be things they didn’t quite pick up in the first one. And, really, it’s by talking with friends, we actually encourage them to collaborate. Although they have to submit their own solution, we tell the students, please work together, talk to each other. I think it’s much easier to learn from your peers sometimes than to learn from a professor.

Ricardo Tellez: Do you know the learning ROS is not an easy thing that usually students say they struggle like doing this. So can they cope with all that knowledge? Don’t they have any problem on learning ROS, and they get afterwards later in the semester, they get a star because they are missing some learning of ROS, some knowledge of ROS.

Ross Knepper: Well, the projects are designed to make sure that they do have a little of the basics and when students appear to be struggling with a particular thing, we reach out and make sure that they’re getting the help that they need.

Ricardo Tellez: So they have your full support.

Ross Knepper: Exactly. So, I mean, part of the point of this project is just to see where everybody is. So they submit their code and maybe parts of it aren’t working quite the way they should. And that is a diagnostic tool for us to be able to reach out to them and say, it looks like you could use a little additional help. 

Ricardo Tellez: How many students are we talking about?

Ross Knepper: It’s 150 students in the class. And for Cornell computer science, that’s a small undergraduate class. A lot of our courses are 600, 700 students now. Cause you know computer science has become a very popular major. 

Ricardo Tellez: That’s very good! And which language are you using for programming the robot? You mentioned pipeline before?

Ross Knepper: Many of the students have learned MATLAB and there is a MATLAB bridge to ROS. We’ve had in the past; we’ve had sort of mixed results with that. I think it’s gotten a lot better, but we decided that it’s much easier to teach it in one language. And I think Python, if you know MATLAB and we give enough pointers, it’s pretty easy to Python. So Python with numb PI, you get most of the functionality. 

Ricardo Tellez: That’s right. We interviewed with one of the designers of the ROS packages for MATLAB in a previous podcast. And then they show us very interesting things and they are for example, creating, generating from MATLAB code generating ROS nodes. So you can actually execute that too afterwards inside the robot and quite interesting. Just to let you know, in case that you want to have a look afterwards. 

Ross Knepper: Absolutely. 

Ricardo Tellez: So yeah, I wanted to ask you about, you were explaining about the different projects you were teaching, and the question is, do you have any notes online about that, slide or something that, so that the listeners to the podcast can have access and use it for their own learning of ROS for example?

Ross Knepper: Oh, I see. Actually, I do all of my teaching on the Blackboard, so I don’t have any slides or anything to share.

Ricardo Tellez: Wow, impressive. So how could you know this structure? Do you have some notes for you, but a paper or something like that?

Ross Knepper: I do. I think my notes wouldn’t make a lot of sense to other people, but I mean, I learned a lot of this the hard way. I started using ROS when it was in its infancy and a lot of things were broken or didn’t work the way they were advertised. And so it was really learning, like shoved into the deep end of the pool and I mean that afforded me a certain opportunity to organize information in a more effective way. And there’s been a tremendous amount from the community of tutorials and books and just all kinds of resources since then. So I think it’s much easier for students to learn now than it was in the old days. If they’re willing to put in the time.

Ricardo Tellez: That’s the only thing. But yeah, fortunately it’s like that now, we’re improving. And then let me ask you one question. So based on your experience, what is the biggest problem that you are facing when teaching ROS?

Ross Knepper: Debugging, I think. It’s a hard skill to learn and I try to explain to the students. I mean, the engineers have had sort of an intro to programming course and they’ve done some basic debugging. But it is somewhat of an art form. I mean, I explained to them, it’s like being a detective. Imagine that you’re Sherlock Holmes and it’s the deductive reasoning. It’s the asking, what if, it’s being experimental and sort of changing things in a deliberate way and seeing what happens. But you really have to have somewhat of an understanding of the whole system and how the pieces connect together to do that effectively. And when you’re new to everything, it can be hard to understand what are the right experiments to run or what are the right things to check for.

Ricardo Tellez: Yeah. So let me ask, can I check if this topic is running or should I, I do mention before, should I do a list of the services that are running? Maybe something stupid like that. 

Ross Knepper: Exactly. So something that I think is a wonderful idea is there’s this command ROS WTF and the idea is it just looks around and it says, aha, here’s some things that might be wrong.  But this command is designed for people who are proficient at ROS already. And I think that there’s an opportunity to create a version of this command for ROS newbies. So, trying to spot elementary mistakes. So for example, if you have the same topic name, but one is in the root and one is a namespace, or maybe there’s a typo in a topic name. So two very similar looking names. If, what’s a good example? 

Ricardo Tellez: You launch two nodes that have the process, images from different cameras for example.

Ross Knepper: Yeah. So there’s I think an opportunity because the task is fairly circumscribed, there’s an opportunity for a process like ROS WTF to come in and kind of look around and give friendly feedback sort of. So, if I were to say, what’s one thing that’s missing right now, it’d be sort of more newbie friendly ROS WTF. 

Ricardo Tellez: Okay. That would be a very interesting project to do, practical ROS, what the command that actually suggest you, where to look at. 

Ross Knepper: Where’s the failure is I believe what it stands for. 

Ricardo Tellez: Where is the failure. From now on I’m going to take that, those words to ask to talk about that command.

Based on your experience, how would you recommend other teachers to attach the ROS teaching?

Ross Knepper: Yeah, that’s a great question. I think there’s a lot of enthusiasm among the students. They understand that this is becoming sort of an industry standard thing. Some employers are looking for this, so there’s a lot of eagerness to learn it, but they also coming in, they don’t really understand what that means. So the challenge in education is to help them stay motivated while they’re learning it and not get burnt out. So having, exciting real projects to try. I mean I use the full immersion approach. I think there’s probably a more incremental version if you wanted to focus more on ROS as its own thing. And maybe just add new functionality with each project. But yeah, I think keeping the applications feeling relevant and exciting because it’s hard to imagine, like if I just tell you, okay, there’s this thing called a ROS node and it can subscribe to messages and there’s a callback right in the callback gets called whenever a topic gets published. It’s very hard to imagine, like, why do I care about all of this? Exactly. So as soon as you start plugging in motors and cameras and suddenly there’s data on these topics and the data has some meaning and you start looking at the data and maybe it’s a laser range finder and you start thinking about, well, how do I interpret depth as data? That’s actually a hard thing. You need to know where you are, you need to register it to some map. And so it actually motivates a lot of the important robotics problems that we teach in a whole new way if the student can get their hands dirty and just start playing with the concepts themselves.

Ricardo Tellez: I do agree on that. Basically I think that ROS and robotics has to be taught from the inside to the outside. So instead of teaching what is a node, I believe in my opinion, is that it has to be okay, I want to move the robot and then you need a program that connects to the topics, or I need to read the data from a sensor and I need to process for detecting people and the same sensor for detecting, I don’t know how to do that , but it’s the same sensor. So now that makes sense to have a topic because every program can connect to the same amounts of data or something like that. So from that inside, I need this and to understand why nodes, why topics…

So okay, thank you. So then I’m running here out of questions. So my question, it’s about to finish. What do you think about the future of ROS? Do you think that is something that is going to stay for research and education, or do you think it’s going to become more for commercial use for industry and products?

Ross Knepper: I think there’s an appeal to use it in industry, because it’s a standard that people know coming in and it works. And so at least for the basics, it seems very effective at what it does. I think the challenge for ROS is really the ecosystem of the stacks and packages that are contributed by the community. We see in the early days, Willow Garage created this wonderful stack for the PR2, and did amazing things with it. Meanwhile, a lot of academics were creating their own hierarchy. And what would happen is the PhD student would create a ROS package on their code. It would work on their robot and maybe not on any other robot. And then they graduate, and it’s not maintained. So I think there was this explosion of packages, which was exciting to see, but a lot of them were fairly low quality. And if somebody else wanted to use it, it was a significant amount of extra work. So this is still an improvement on what came before, because we have this foundation of interprocess communication and types. That’s sort of the clearly useful stuff in ROS, which everybody uses. And so the question is how do we go from there to higher level of functionality? And you mentioned a couple of examples, the navigation stack in [28:28 inaudible]. These are things that do appear to translate from one robot to another pretty well. But I think right now these are the exception more than the rule, I guess another one would be gmapping seems to be pretty good with slam. 

Ricardo Tellez: [28:46 inaudible] is also quite nice.

Ross Knepper: Yeah. No, absolutely. These are good packages. I mean, these are the ones that my grad students need some functionality. I’m going to tell them, use movement, use navigation. Why reinvent the wheel? But it’s quite hard to build software that is robust, keep it well-maintained, make it portable. So that’s really the big challenge right now. And I think there’s a lot of corporate interest in this because if they’re solid stacks that they can pick up and use on their robot, that makes it instantly accessible because everybody’s code will work on their robot. So there’s actually a lot of corporate interest in improving the quality of these higher-level capabilities. And I think the struggle is going to be well, do we want to follow the Microsoft model and make everything proprietary or do we want to do sort of the open source model and we can just release the code for a robot. It runs for us and you can do whatever you want on top of it. And I think that in the long-term is going to win out.

Ricardo Tellez: That’s a very good point. I didn’t think about that in this way.  But that’s a very good point. Obviously, what happens with those packages that people [30:09 inaudible] they are going to stay as open source or as proprietary. As far as I know for the projects I’ve been following, they look like, they are going to stay as open source.

Ross Knepper: Sorry, Ricardo, you cut out there.

Ricardo Tellez: Oh yeah. Sorry. Yeah. Well, I was just saying that I think that it’s going to be open source cause it’s what the current packages that I’m following, and they look like, but we’ll see the future. Finally, one last question. So any tool that you would recommend to the listeners that may be useful for ROS programming or learning or any projects that you have developed for that purpose?

Ross Knepper: Yeah. I think for people who are learning ROS, it seems like often the focus is on the sort of in code stuff, creating subscribers and callbacks and all of that. And I tell my students about all of these command line tools, and it seems hard to remember to use them. And a lot of them are special purpose. ROS service is exactly for one thing. But there’s a few other tools out there, rviz, there’s a few tools that are broad that help you to visualize a lot of what’s going on in your ROS installation. And I think once you have a little more clue about what’s going on, these things and really propel you forward in your debugging and in your just understanding of your system as you’re developing. 

Ricardo Tellez: Are you [32:00 inaudible] useful things like rqt cloud, [32:03 inaudible] the branch of utilities on rqt. 

Ross Knepper: And these are intimidating if you’re a newbie because rqt, you get this empty screen when you start it out, what am I supposed to do with this?

Ricardo Tellez: And when do you start adding some new visualizations [32:24 inaudible] and how do you connect to make them show you useful information.

Ross Knepper: Exactly. Exactly. So it’s sort of a second tier after you’ve learned the basics, but I think it’s really important to remember that these things exist and use them wisely. 

Ricardo Tellez: And also it goes on the line that you mentioned before about the debugging. Learning how to debug. I want to tell you about the value [32:49 inaudible] we are publishing some videos, teaching how to do something in ROS.  And then we publish them and then everything goes okay and everybody’s happy, but then what happens is one day somebody else is watching the video. Again, they are trying to work with ROS at home and something failed because of course it’s not the same configuration, many, many things can happen. So what they are missing, some people is telling us, Hey, please can you do some videos, you get mistakes. And then you try to solve them, [33:25 inaudible] we can see what is your deductive procedure for detecting where the error is. So that goes also [33:32 inaudible] of debugging.

Ross Knepper: Yes. In fact, I told you, I do one lecture on ROS. The first half of it is just the dry, nodes and services. The second half is exactly what you said. So I do a live coding example called drunk turtle, and I introduce deliberate errors. And so the students get to see what happens when you make different categories of mistakes. So for example, running in the wrong namespace is a big one because things just, nothing happens. And then, well, what do I do? And nothing happens. You have to use tools to debug. Another example, which I think a lot of students can spend a lot of time on. In Python, If you forget the line at the top, the hash bang user [34:26 inaudible] if you forget that line, the error that you get is really confusing because it will try to run it, I think, as a bash script. And it gets surprisingly far before it errors out. And it gives an error on line 10 about some parenthesis that it wasn’t expected.

Ricardo Tellez: That makes completely no sense about what is actually happening.

Ross Knepper: I guess my newbie version of Russ WTF would look for things like this too. But I think it’s important for the students to see what these mistakes look like and what is the thought process that one goes through. And so even though it’s a really silly example of just a turtle drunkenly wandering on the screen, we drag it out to about 20 minutes just with the debugging and the trial and error. And so I think it’s actually pretty effective. And then I post all the code on Piatsa for my students to run through it themselves and see what went wrong and they reproduce it and get the same errors. And so on.

Ricardo Tellez: That’s a cool idea. I think that we are going to use this idea with your permission. And also these things, introduce errors in our videos and in our lessons that we do around there. Okay. So Ross, thank you very much. It’s been a pleasure to chat with you and to learn about your teaching about robotics and especially about how you teach ROS. And thank you very much!

Ross Knepper: Thank you. It was my pleasure. And by the way, yes, people do make a lot of jokes about Ross and ROS. 

Ricardo Tellez: Okay. I didn’t want to do it here, because it’s funny, but in your case is Ross with s, is super Ross. Thank you very much Ross. 

Ross Knepper: Thanks so much. Have a nice day. 

Ricardo Tellez: Thank you. And to all the listeners, thank you very much for listening to this podcast. Remember that we’ll have another podcast in the next week, and also remember that we, the company that is producing this podcast, it’s called The Construct that we have an Academy, an online Academy called the Robot Ignite Academy, where you can learn ROS in an online environment without having to install anything. So it’s quite easy, just open a web browser and you are in starting learning ROS with beautiful lessons that we have prepared. So thank you very much to the listeners and see you next week.

[Music]

Related links:

Subscribe to the podcast using any of the following methods

For teachers

A Full ROS & Robotics Teaching Solution

Trusted by hundreds of universities

RDP 022: Building Warehouse ROS Robots With Melonee Wise

RDP 022: Building Warehouse ROS Robots With Melonee Wise

In this episode I talk to one of the mothers of ROS, the co-creator of the Turtlebot robot, and the CEO of one of the most important companies of the world that sells ROS based Warehouse robots (Fetch Robotics). Among other things, she will explain about their work to simplify the control of fleets of robots based on ROS1 or how they use simulations in their development process.

Selected quote:

I think ROS is definitely very mature, and the challenge for people not using ROS in their products is on how well they know ROS.

Melonee Wise

the construct meets fetch robotics

Related links:

Subscribe to the podcast using any of the following methods

RDP 021: The State of Robotics Education With Joel Esposito

RDP 021: The State of Robotics Education With Joel Esposito

In this episode we talk with Joel Esposito about his research on what is the current state of robotics degrees around the world. Based on a set of questionnaires, Joel obtained a clear view of what is the current situation of robotics degrees around the world and what are its drawbacks. He then proposes how those drawbacks may be overcome and how ROS enters into the picture.

Selected quote:

You can  know everything about circuit design, you can know everything about dynamics, you can know everything about computer science, and still know nothing about robotics.

Joel Esposito

Related links:

Subscribe to the podcast using any of the following methods

[Music]

Ricardo Tellez: Hello, ROS developers. And welcome once again to the program, the podcast that gives you insights from the expert about how to program your robots with ROS. Today, we are interviewing Joel Espasito. Joel is a professor at the systems engineering department at the United States Naval Academy. There he teaches courses in robotics, unmanned vehicles, computer vision, mechatronics, and feedback control systems. And mostly recently he has started to work on research methods for teaching undergraduate. He has written a very, very interesting article, The State of Robotics Education. And we are going to talk today with him about his findings of this article on this research. Welcome to the podcast Joel.

Joel Esposito: Thanks for having me.

Ricardo Tellez: Okay. So yeah, we were talking before we started the podcast about if you could introduce yourself with more detail. So why do you qualify to talk about the state of robotics in education?

Joel Esposito: Sure. Well, I think as you said in your nice introduction there, I’m a professor at the United States Naval Academy, which is the United States navy’s own undergraduate college and it’s a stem focused program and it’s undergraduate only. So unlike many other institutions where faculty members are teaching robotics, perhaps in a masters or PhD level, I’ve taught many undergraduate. So for the past 16 years within our major, we have about a hundred students a year and about 80% of those will take some courses in robotics and controls. So I’ve seen many different undergraduate students from many different backgrounds and levels of preparation come to our somewhat unique major for the purpose of getting some background in robotics. You said before that I’m in the Systems Engineering department, but very recently we’ve changed our name in the department to a Robotics and Control Engineering Program. So we’re one of the larger undergraduate robotic engineering majors out there. And in 2016, we redesigned our entire curriculum to be kind of centered around what’s called project-based learning. So this is a paradigm of undergraduate education and many universities have to a different degree, but where most of the learning is centered around hands on experiences, a project that might be larger than in scope than something you can complete in a single week. So for example, in an average, a 16-week semester, we might have three major projects, for the first four weeks a different project, for the next four weeks and then a bigger project for the last six weeks. So it’s a very hands on engineering education, for that reason I think it’s very, very popular with the students here.

Ricardo Tellez: Okay. And when you talk about the project, do you mean about building robots or about using existing robot?

Joel Esposito: All of those things, some of the projects might involve physically building a robot. We teach a course in mobile robot design where we talk about things like locomotion and leg design and so forth. But in other courses, we might have some existing hardware, like a robot manipulator, industrial manipulator, and the students will program that to complete some tasks.

Ricardo Tellez: Okay. I understand. I completely agree on your method by the way, just let me tell you, because I think that we people understand by doing, not by reading or by hearing somebody explain it. That’s important to get the data, but do you only get that data into yourself when you apply that to something? So I mean robotics is super important. So wanted to ask you about this article that it’s called, I’m going to repeat, okay. The state of robotics education, I am going to put a link beneath the podcast for all the listeners, so you can download it. And can you explain us, what was the motivation of your study that you are presenting on that article?

Joel Esposito: Well, as I mentioned, I’ve been teaching robotics here for about 16 years. I’ve probably taught over 1200 students. And in that time, I’ve certainly thought a lot about robotics education. In fact other people at my institution have been offering those classes back since the nineties. So, we’ve certainly been doing it for a long time. But as I mentioned earlier in about 2015, we started thinking more carefully about how we could design our curriculum from the ground up. So instead of something that evolved over time, maybe some things are there for historical reasons or they’re grandfathered in. We said, what if we could start from scratch, what would we do? And ultimately that’s what led to us changing the name of the department to robotics and control engineering. But as part of that process, there was some introspection that went on among the faculty. There’s a healthy debate about, well, what are the trends right now in a robotics education, or if you’re going to truly offer a single introduction to robotics course, what would be the topics that you must cover in there?

Ricardo Tellez: That’s a very good question. That’s a key question.

Joel Esposito: What are the tools that you want to make sure your students know how to use? If you look at disciplines like chemistry or physics, it’s very well established. What would go in the introductory course in those fields? The very first university physics course, it looks remarkably similar in almost every university in the world.

Ricardo Tellez: That is right.

Joel Esposito: But that is not true at all for robotics. In fact, the way a person teaches robotics is very much colored by their own disciplinary affiliations, their own interests. It’s a very broad field. So that got me thinking, is there any consensus among people who teach robotics about what should go in those courses? And if so, what are some of the common challenges or lessons learned or tools in textbooks being used and so on? So that was what got me thinking about it was reforming our own curriculum. So what I decided to do was to create a survey. So I created a survey and it had about 50 questions in it about robotics education ranging from, how would you describe the distribution of students in your classes? Meaning, what percent of them come from mechanical engineering or computer science and so on to what topics do you offer? What textbooks do you use? What are the challenges you’ve seen in your courses? So I constructed this survey and I distributed on several large mailing lists.

Ricardo Tellez: We are going to talk about that.

Joel Esposito: And I got about 65 responses. So they are responses from universities all over the world, many of them were in the united states and Europe, but the survey was distributed internationally. And there’s responses from undergraduate as well as graduate institutions. So there’s a lot of diversity there.

Ricardo Tellez: One question it was oriented to the teachers directly.

Joel Esposito: Oh, that’s right. I’m sorry if I didn’t mentioned that. So this was a survey that was targeted at faculty members at colleges and universities that teach robotics. They didn’t necessarily have to be part of a robotics major. They could just teach a one elective in robotics, maybe inside of a more traditional mechanical engineering or computer science curriculum.

Ricardo Tellez: Okay. So the goal, it was to identify, if there exists actually universal, let’s say curriculum for teaching robotics, so I think that you explained super great with the analogy with chemistry or biology or whatever. So you mentioned that you structured your study by using survey there and based on the results there, what is the biggest challenge that you identify from those responses to the survey?

Joel Esposito: Well, about half of the, roughly 65 faculty members that responded said that the most challenging part of teaching robotics is the diverse background of the students. And by that, I mean their academic background.

Ricardo Tellez: From where they come from, which other studies they come before.

Joel Esposito: That’s right. Because there’s so few programs out there that are actually titled, robotics engineering, very often the faculty member who teaches a course is offering it through a more traditional academic department, like a mechanical engineering department and electrical engineering department and computer science engineering department, and so on. And very often it’s an upper level elective. So what we found in the study was that approximately a quarter of the faculty members are mechanical engineers, a quarter of the faculty members, teaching robotics are electrical engineers by training, 35% are computer scientists and about 15% are other, and that other might include things like physics, computer industrial engineering or maybe a dedicated robotics major. But what’s really interesting about that is when those same faculty members. So for example, a mechanical engineering faculty member teaches a class in robotics, we find that the students in his class are also mixed. They’re not all mechanical engineers. Because very often it’s an upper level elective that students are allowed to take across departments. So very often the mixture of the students, the distribution of the student background is very similar to that. So again, about a quarter mechanical engineers, one quarter electrical engineers and maybe 35% computer scientists with a handful of students from other disciplines, maybe mathematics or something thrown in there.

Ricardo Tellez: That you mentioned now let me tell you that this is exactly the experience that they are suffering because I’m teaching ROS the university also. And then I get people, they are enrolled in a robotics master program and the people that come there, it’s so different. So there is some people that know very well how to program, but there is people that doesn’t have any idea, they are just focused on the mechanics parts of the robots or others on electronics. So I’m also feeling the same result that you got is consistent with my own experience. Just wanted to share that with you.

Joel Esposito: And, so almost half of the faculty members say that this is the biggest challenge in teaching robotics. So just to elaborate on that a little bit, what does that mean? Well, it comes in a few different ways. I mean, one is obviously on just the preparation or the background of the students, as you just said some of the students will come in there and be expert programmers and others may have never programmed a computer before. But it also gives you some diversity in what the student’s expectations are for the course. So the mechanical engineering student would be there to learn something about, how a gear train should be designed to minimize the backlash in a robotic arm.

Ricardo Tellez: Yes, that’s right.

Joel Esposito: Or something of that nature. Whereas the computer science student may be very happy to just kind of abstract that problem way and want to focus on the ai or the motion planning algorithms or whatever it is. So they come to it with different levels of preparation and very different expectations or very different desired outcomes for the course.

Ricardo Tellez: And then what do you propose here as a solution because it’s like the foundation of the course is wrong from the first step of the course of creating a robotic scores, the first step that is the people that is going to come to learn, it’s the first step then that is wrong, because it’s almost impossible to create a program that everybody will like, or will get what they are expecting from. So do you propose in a solution to this situation?

Joel Esposito: Well, it’s a really difficult problem. There’s not an easy solution for it. And I think part of it just goes back to just the idea of these traditional academic disciplines and the fact that robotics really sits between several disciplines.

Ricardo Tellez: Yeah, exactly, exactly. Among many different disciplines. Exactly.

Joel Esposito: But I think we have to honestly say that if we want to prepare our students to work in industry and not only in robotics, but in other fields as well. I mean, they’re almost certainly going to work on an interdisciplinary team. They’re almost certainly going to work with people with different backgrounds. So in that way, I think robotics is a great example of what engineering education needs to look like because you have to combine those different skills in different teams. So I think the way that you approach it depends a lot on, where you’re coming from. If you’re in a program like mine where it’s an undergraduate program on robotics engineering, you might have a certain luxury in how you approach the subject matter. You could design it maybe from the ground up, but if you are in a traditional academic department and you know the majority of your students come from that department, I don’t think there’s anything wrong with biasing your coverage or your approach to cater to that. If you know that all your students are computer science majors and you want to teach an algorithm heavy approach to robotics, I think that’s fine. But one of the things that I talked about in the paper is I think it’s an interesting thing to think about if you could design a universal introductory robotics course from the ground up, that would really do justice to the field. That would really represent the breadth of what you need to know to be a roboticist. Then that’s an interesting challenge. And that’s a very interesting discussion that the community can have. As one of my colleagues says here, he says, you can know everything about circuit design, and you can know everything about dynamics, and you can know everything about computer programming, and you can still know nothing about robotics.  That’s possible right? You can cover all of those topics in a very traditional way. And if you never bring them together in your education, you don’t understand how they apply to what we do.

Ricardo Tellez: Yes. Very good point. Very good point. In my case I have that problem of the people that come to usually to the class of ROS, most of them, they don’t know how to program. So I have done already, I have taught this course twice and this year is going to be the third year. And on the first one, it was kind of surprise because I was expecting everyone, so what is this? On the second one, I try to propose, I was expecting this. So then I proposed to the students on the first day to do some online courses about python. That is this language that we were going to use and lineups shell because they don’t even know about lineups, how to create a directory or move to a directory or something. But that didn’t work neither. So for now is the third year I’m thinking about doing myself a kind of extra classes for programming or something, because otherwise this is making the class to move very slow into the really interesting topics. I don’t know. So that’s my experience. I’m sharing this data with you also. So in case that may be useful for your research.

Joel Esposito: No, that’s quite a challenge.

Ricardo Tellez: And then I wanted to ask you about your study that you mentioned that it comprises five sections on the study. And then I would like you to talk about for example, the section of the, so you have institutional background, what is that section about? So yeah, on the google form that you have sent with the survey. Then you were dividing the questions into five sections and so you are putting in your article, everybody can read it. So every section is there and then you are putting the survey results and your thoughts about those results. And there is one that is called institutional background.

Joel Esposito: That relates to where is your university located. For example, Europe, united states, south America, and so forth. Is it a doctorate institution, do you grant PhDs or is it an undergraduate only? What department are you affiliated with? Does your university offer a robotics degree, which we found a growing number of universities are, in fact about 26 graduate programs are out there, and about 10 undergraduate programs have cropped up in the last decade? So that’s kind of a general section that just lets me know what perspective are you bringing to this survey.

Ricardo Tellez: Okay. What’s your point of view that you are going to put into the survey? And then you move into the robotics degree program, you already mentioned somewhat of that, of your findings. So in this section it’s quite interesting. So can you explain this a little bit, what is the section about?

Joel Esposito: Yeah, well I would say that if you look back about 20 years ago, I would say there were virtually no institutions that offered a degree in robotics. There was many, many, many institutions teaching classes. There were as many places where at the graduate level like myself, when I was at university of Pennsylvania, we were in a very large robotics lab. And, we took courses across disciplines and so on, but our degrees still had the word for example, mechanical engineering or electrical engineering printed on the diploma. So that was maybe a robotics could be a focus or concentration in an area of study. Maybe it was your thesis topic, but it was not a degree program. And then in the last 15 years, there’s been a trend to offer more and more, or to create more and more degree programs in robotics where the actual name on the degree on diploma says something like robotics engineering, robotics science, and so on.

Ricardo Tellez: I didn’t understand when I read it, so that, what was the problem actually? So now I understand that it’s a problem of qualifying directly on the title as is this is about robotics, so this is what you are going to get.

Joel Esposito: Right. And I think that was a really, I mean, I think there’s a couple of reasons that’s interesting to look at. I mean, the first one is as we talked about before, if you are teaching robotics as part of a computer science program and you’re teaching mostly to computer science students, for example, I think it’s completely reasonable to bias your teaching approach or your coverage of the material to those kinds of algorithmic issues. But if you really are going to create a degree program in robotics, that’s really going to be the title of your degree program. Then maybe the right approach is not just to kind of copy the old way that we used to teach robotics. Maybe we want to have a more holistic approach. Maybe we want to have elements of the curriculum that do combine, dynamics and kinematics as well as sensors and electronics well as programming and all that. So, I was really interested in seeing how those kinds of institutions would want to design or select the topics that would go in an introductory course, because I think that’s going to give a really different perspective or really different outcome from someone who’s coming at it from much more stovepipe, traditional academic curriculum.

Ricardo Tellez: Okay. That’s super interesting. And I devise here from my point of view, I device here to two possible options is one is that we in the world, we create those robotic courses that comprise all the subjects in there. And also another one that I devise is a specific degrees for one of the subjects of robotics. So for example, let’s say a computer science-based robotics degree that only focuses on programming robots or another is for the electronics, so the sensors and actuators and all that. In our academy, so we have an academy, an online academy for learning ROS and we teach basically how to program basically. But many, many people is asking us, hey, yeah, that’s super interesting. But I would like to apply this to my own built robot. So I don’t know what to do because what you are teaching me is for a robot that is already there, that somebody has built and somebody has installed ROS on top, so I can do whatever I want there with ROS, but how do I reach that point? So it’s kind of like people wants to have the whole picture. Okay. Then there is another section in your paper that is called introductory robotics courses. So what is the section about, and what did you find on that section?

Joel Esposito: Okay. So, this section gets back to what we were talking about earlier, which is if you are going to have a single universal course, an introduction to robotics course, what kind of topics would you want to put in it? So I emphasize the word introductory robotics course, because what I wanted to say was that, some of the faculty that are at larger institutions that grant doctoral degrees, they may teach various advanced robotics courses, electives, maybe in their sub discipline, their subspecialty of research. So maybe haptics is your area and you teach a course just on haptics or autonomous underwater vehicles. And you teach a course only on that, but I wanted to target the experience of teaching a first course in robotics. So maybe people come to your institution for a master’s degree or and maybe the senior or final year of their undergraduate degree. And they want to take their very first course in robotics. So I want to know what kind of topics do you think are important there and in my experience, traditionally there’s two very common molds or archetypes for that. One is what I call the kinematics driven approach. And this is like, if you look at textbooks like Craig’s early robotics book, or even mark’s bongs book, which both of which are great robotics textbooks, they really present robotics from a kinematics perspective. So here’s a robot arm, here’s a serial manipulator, let’s understand the forward kinematics, the inverse kinematics, [25:43 inaudible] how to control the motion of the end effector and so on. It’s a very mechanical engineering and control engineering. Yes, colored approach. If I was a computer science major, and I took that course, I might feel like nothing I had done prior in my experience prepared me for it. Not that I wouldn’t succeed in a course like that, but just, it would feel very disconnected from my background, all the other courses I took as a computer science major. And another very common traditional mold for robotics courses is mobile robot courses. And those vary a little bit, but often they’re used with younger undergraduate students as a way to get them excited about the computer programming.  Maybe learn about algorithms. Because it’s very visual, it’s very mobile and the mechanics of it is, it can be complicated if you want to dive into it, but it’s relatively simple compared to a six-link robot arm. So those are two very common, types of robotics courses, introductory ones. And I wanted to see within that what topics people really think are the most important things to include.

Ricardo Tellez: Okay. Then we move to the next section. So, just for the listeners of the podcast. So the article is going through those five sections and showing the results of the survey. And then the conclusions obtained that Joel is explaining here on the podcast. And then he’s moving section after section. Then there is the next section that is called the educational resources. And what is this section about?

Joel Esposito: Well, this section tries to get at things like what textbook is the most common textbook in robotics and the most popular textbook. [28:00 inaudible] an educational resource.

Ricardo Tellez: Okay. Are you considering only textbooks and not other resources like…

Joel Esposito: No, i also asked, for example, if people use online resources, like massive online course works or MOOCS, I also asked if, a good percent of the faculty of course use their own notes that they’ve may have authored and then distribute that way. But again, it kind of drives towards, if there was going to be a new textbook and, what topics would you want to see in it? Cause the topical coverage of the books that are out there and did any of them have that holistic perspective where they cover, what you need to know from the different sub-disciplines.

Ricardo Tellez: So, yeah, so the books that you show here, you present a list of books, but you mentioned that none of them are like the major book that most of the people are using, but just kind of a scattered, a few people is using this one, a few people, and there is no clear winning book.

Joel Esposito: That’s right. That’s right. I identified, I think six or seven books that were mentioned more than once in the response list, but no particular one comes out as the clear winner there. And it seems to depend very much on like what perspective or what point of view you teach your course from. But I think it is interesting to know that more than, so for example, the two most common books, which are the book introduction to autonomous mobile robots and robot modeling control by Mark Spong, Seth Hutchinson and Siegwart. Those two that were tied for number one about seven faculty members, each report that they use those, however, above that eight faculty members say, I just write my own notes because I don’t see something out there that fits all my needs. So really the number one most popular textbook is the one that you write yourself.  But I think that’s interesting because it speaks to how different instructors approach is to the material. I think if you asked physics or chemistry professors, I don’t think you would have that kind of response where they’re all writing their own introduction to physics book, because it’s so well established and there’s so many good books out there. Why would someone do that if they had a perfectly good book to draw information from?

Ricardo Tellez: Yeah, that’s super interesting analysis of the whole state of education in robotics is very, very nice. And then once you are equipped with all those data from the form, then you move to the final section that it’s called the future challenges that is where you are addressing, so based on these data, so which one are the challenges that we must solve in order to have a better teaching of robotics. And what do you find here?

Joel Esposito: So a couple of things in that section, I mean, one is that I asked the instructors what their current challenges are. And as I said before that about half of the faculty, the number one challenge that they cite is the fact that their students come from all these different backgrounds and have all these different expectations for the course, depending on their discipline. So that’s one of the biggest challenges they have right now. Another interesting question that I ask is what topics do you feel your student’s background is deficient in? So what is the thing that you feel your students are the weakest in when they come to your course? So the number one answer was computer programming. So, I think this probably gets to, what most of your listeners want to hear about, which is ROS and why some people may or may not choose to use it. So if you ask computer science faculty, even computer science faculty think about 20% of the students that are in the robotics class are not good at computer programming. And part of that is what we said before is not all the students in that class are computer science majors. A good number of them are mechanical engineers, electrical engineers, or whatever. If you look at some of the other disciplines. So if the instructor that offers the courses from electrical engineering, for example, they think 55% of their students are not good at computer programming. If you’re a mechanical engineer, you probably teach a less programming, heavy version of robotics, but you still think almost 30% of the students are not good at programming.

Ricardo Tellez: Okay. That’s very good.

Joel Esposito: So this is, if you remember the beginning, we were both kind of saying how we’re on the same page, about how robotics is really about seeing things move about implementing the technology, and that’s kind of what makes project-based learning so powerful is that students see that, and it helps them retain the material. It helps them get excited and so on. It’s almost impossible to do project-based learning in robotics without doing any computer programming.

Ricardo Tellez: That is good. Very good conclusion. And that’s also very interesting because you know, Brian Gerkey, who is the director of open robotics, the company that has the ROS who in charge of managing ROS and creating and upgrading and everything. So, Brian, were saying once that one of the main problems in robotics, so in order to get better robots, what we need is better programming people. So that the roboticists that are programming the robots, they need to have better skills in robotics. And I actually agree because it’s also where they have suffered and where you are experiencing here in the article. That is great.

Joel Esposito: So one of the next questions we asked in the survey was what kind of programming languages are you using in your course? So this is again asking the instructor when they have laboratory experience or project-based experiences, what are the most common software programming languages they’re using. About 62% of the respondents said they use MATLAB.

Ricardo Tellez: Okay. Here is where we have lost completely the audience. So the audience is gone because now talking about ROS, now talking about MATLAB, so what is this?

Joel Esposito: Well, I get to that. So first I’ll say usually about 62% said MATLAB, about 52% said the c programming language or one of its variants and 28% said they were using ROS.  So more than double the number of faculty members that use ROS, once used MATLAB in their course. So if you don’t know what MATLAB is, MATLAB stands for matrix laboratory. It started out as a scientific computing package, kind of a package where you can kind of interact at the command line and solve some pretty heavy-duty linear algebra problems. Over the years, the MATLAB has really grown to include first of all, not just command line interactions, but it’s become an actual programming language, has both a graphical interface, but also a text-based interface. And they’ve added all kinds of different toolboxes or libraries if you want to call it that. And at first became really popular within the feedback control systems community, which is you know, has a lot of overlap with robotics. That was one of the first toolboxes from MATLAB. Then it became really popular within the computer vision and image processing community, which also has a lot of overlap with robotics. And then just recently I think it was in 2016, they’ve now added a robotics toolbox to it. So there’s a lot of faculty members that use MATLAB for robotics. Well, maybe we’ll talk about why that is later.

Ricardo Tellez: And what about your case? About what your case, so which one (programming languages) are you using for teaching robotics?

Joel Esposito: Well, in my case, I use MATLAB and I’ll lay out some of the reasons why in a minute. But let me say something about c here. So the second most common response was the c programming language, 52%. And again, if you program, you’ve probably heard of c, c is one of the most mature and widely used programming languages and of course, C++, and C# and all these things kind of stem from it. But I think one of the reasons that c is so popular is because something you said before, which is like, say that I don’t want to just do a robotics project where someone gives me an existing robot with ROS installed with all the sensors on there. Say that you have a student who wants to make a robot from the ground up, and they want to have a microprocessor on there. And they want a program in a real low-level microprocessor, how will it interact and drive the motors? Or how will it read the low-level data coming from the sensors and so on. Almost all of these microprocessors are programmed in the c programming language.

Ricardo Tellez: Yes, that’s right.

Joel Esposito: I think that if you’re going to pick one programming language to teach, it’s not a bad one to pick.

Ricardo Tellez: When we are talking about robotics as a general subject, but it’s quite a little bit difficult if you want to build an intelligent robots. So you want to build intelligent robots, then that’s very difficult because you cannot program microcontrollers. You have to go to bigger computers and then, you have to use C++, but if you try to do that from scratch from yourself, that is going to take you for ages, and that is one of the reasons of using ROSs because ROSs already provides this set of libraries or packages already working on that. And you can program by using C++ or python that in my case, I have detected that is becoming very popular, trying to replace MATLAB, because python is quite similar to MATLAB and it’s free. It contains many, many, many libraries. And then now we can interact directly with the robot by using ROS in this case. So I don’t know what it’s going to, so it’s super exciting future.

Joel Esposito: I agree that python is probably more accessible to the novice and it does have a lot of similarities to MATLAB. So I mean, I think there’s a lot of things that are wonderful about ROS. In fact when I was a graduate student, I was part of a couple projects where, it wasn’t that grand, but we were kind of at the intersection of a research group that did robotics and a research group that worked on programming languages. And we kind of had this vision of doing something like ROS. I mean, we didn’t call it that, and it wasn’t on that scale, but we had this idea that, well, maybe we can kind of abstract away some of the low level drivers for the hardware, and kind of make it modular so that it could be very plug and play so that if somebody wants to focus on the algorithms, they don’t need to dive into all the low level details and think about the kind of real time issues and all that. So, I mean, I’m very excited about ROS. And in fact, the idea that there’s all these preprogram libraries and all these things to build on, I mean, that’s one of my favorite things about MATLAB is that you’re not trying to reinvent the wheel. There’s such a big community out there. There’s all these toolboxes, there’s a neural network toolbox and a control system toolbox and a computer vision toolbox and so on. And I can bring all that together and can prototype a new solution very, very, very quickly. So I think there’s wonderful things about ROS. And I think that if you are teaching a group of students, say they’re masters students and say, it’s part of a program in robotics engineering. And these students are going to be expected to go and work in the robotics industry. And then I think you would be doing them a disservice by not teaching them ROS. I think that’s such a powerful tool and it’s becoming in industry sort of a dominant paradigm. If you see these job postings on, for example, robotics worldwide, or other newsletters, very often familiarity with ROS is going to be one of the criteria. So I think that’s great, but I think there’s some reasons that not everyone is quick to embrace ROS. And I guess that’s probably why you brought me on the show.

Ricardo Tellez: Yeah, yeah, exactly. Because everybody is talking about how nice is ROS. I say, yes.  And then when we were discussing about interviewing you, then you mentioned, I’m not using ROS and I have my reasons. So you explained to me your reasons but then I thought, well, that’s great because we can provide another opinion from another side. So this is not for, this podcast is not for doing a kind of religion on ROS, but we want to make people learn what is the best thing for creating a robot. So basically, so having another point of view of ROS is super useful, so please, can you explain us your reasons, why not using ROS for teaching to your students?

Joel Esposito: Sure. So I think there’s three things about ROS that I have some trouble with and the first and perhaps the biggest one. And I’ll circle back to these and we can talk about them each and more detailed, but I’ll kind of lay out the argument in real high level here. So the first one is that it doesn’t run on windows as of right now, there’s talk about that may be happening, but it does not run on windows or the Macintosh operating system.

Ricardo Tellez: That’s right.

Joel Esposito: The second issue is that, it’s object oriented. It’s kind of written over C++ usually. And the third issue is that it kind of requires downloading and linking and kind of making all these different libraries in a pretty sophisticated, integrated development environment. So if you think about those three things, not being on windows, being object oriented and requiring linking all these different libraries together, and you go back to our previous discussion. So we said that the number one issue that we think that our students are deficient in is programming.  Another thing that we talked about is how the makeup of students in most classes is not homogeneous. It’s not, even if you’re in the computer science department and you are a computer science faculty member, about 20% of your students are probably not computer science majors, but on top of that, fully 60% of people teaching robotics are not computer science faculty members. They’re mechanical engineers, electrical engineers, and so on. So if you think about your experience in teaching ROSs, and I’m sure other people have had this too, if you bring in the average mechanical engineer, in addition to learning all the concepts in robotics, so we’re talking about kinematics or machine learning and algorithms and all these fairly advanced engineering concepts on top of that, I have to make them not just learn a new operating system, but I have to make them install a whole new operating system on their computer to learn it. That’s a major hurdle. That’s a major source of confusion and frustration for the students. That’s not directly related to learning robotics. So one of my main, as I said before, we’re undergraduate only institution and we really pride ourselves on putting education first. And one of my main philosophies in educating students is that I’m willing to give them something challenging and frustrating as long as the outcome of it is going to be related to what I want the outcomes of the course to be. So my pedagogical goals for the course are for you to learn kinematics. I could give you a very hard kinematics problem, very tricky one, because it supports that goal. But if my goal is not for them to learn Linux, then I have a hard time making them go through that exercise.

Ricardo Tellez: Yeah, I understand.

Joel Esposito: But it doesn’t stop there. So I’m going to take a mechanical engineering student who’s probably never taken a programming course and probably never used an operating system aside from windows, make them install a new operating system and learn it. Then I have to make them not just learn a new programming language but understand a new programming paradigm. So many of the students have never seen the object-oriented programming approach before, which is what C++ has written off. Maybe as a mechanical engineer, maybe they’ve taken c, maybe they’ve taken Fortran or maybe they’ve used mat lab to do some stress training computations, or something like that. But it’s going to be a functional programming language and it’s going to have a very linear flow that concept of objects and fields and instantiations and so forth.

Ricardo Tellez: That’s so difficult to make them understand that.

Joel Esposito: It’s very difficult.

Ricardo Tellez: I mean in a few days.

Joel Esposito: So we have installing and then learning a new operating system, learning a new programming paradigm and a new language, the syntax to go with it. And then the third part is just kind of download and linking all these different libraries together. So I mean, myself, a couple of years back, I had a student who wanted to do a research project using lidars, so he wanted to use point cloud library PCL, which is a nice open source package for doing that kind of computation. And he had trouble kind of installing all the pieces of it. And I said, well, I’ll help you out. I’ll do it myself. And gosh, I had trouble too. It probably took me two or three days of kind of wrestling with installing the OpenGL drivers and all these different ancillary packages there that in some cases I manually had to change the path or this or that. And I have some experience with doing those types of things. So if you look at some of these students, who’ve only maybe programmed one functional programming language which they probably don’t have that experience of using one of these really nice integrated develop environments where you have to track down and install each piece or each package independently. So I think that right there is a pretty long list of skills or challenges for the average student. And none of them directly relate to robotics. I mean, it’s unfortunately just what you have to do if you want to use ROS. And then your reward is you get access to all these great libraries and all this nice message passing and subscribe architecture and all that. And it’s wonderful, but it’s a long learning curve. It’s a steep learning curve.

Ricardo Tellez: It is actually, our company that is called The Construct and our companies was born trying to reduce that problem. And for that, we have created an online academy for learning ROS that uses, so you use a web browser and then you get inside this webpage of our academy, and then you get a complete ROS Linux system in your browser. So you can use any computer. You don’t have to install any operating system. You can use a windows machine or mac, Linux or whatever, and you have the whole full ROS environment already there. And with the lessons that are following that aspect that you mentioned about practicing is not about what is ROS, why ROS? No, let’s move a robot. So what do you have to do? So [49:11 inaudible] and then you have a simulation that’s also on the web already integrated, a physics simulation that you can see your results of your programs in real time, because you see the simulated robot. I will send you the link afterwards in case that you are interested, but we try to solve that problem directly.

Joel Esposito: Yeah. I’ve taken a look at some of your materials and they really look great. It is a wonderful approach to that because I think sometimes you just need someone to get you started so you could start kind of seeing results and seeing why it’s useful, because it’s very frustrating if you’re bogged down and just getting your machine to dual boot or something like that, like for a day and not skiing yet how this is connected to the coursework. So I really do have a lot of respect for what you guys have done. And I think it’s wonderful.

Ricardo Tellez: Thank you. Related to the problem that you mentioned about the windows, for example, then just let you know, that is ROS is being prepared, I think that is not yet ready, but it’s been prepared for working with windows. So probably in the next month, a version for ROS for windows is going to be released. I’m not sure when, but they are working on that. And also another thing that I would recommend related to the coding is something that we have talked is about using python instead of C++ for programming. So if you use python, then you can either use an object-oriented models or not. And also the syntax is very simple. Then you avoid the problem of having to compile, that’s a huge problem to avoid.

Joel Esposito: Right, right. I think those are really good, I think those are really good tips. I think of those kind of three barriers to entry there. In my opinion, not running on windows is the biggest one. So I’m really excited. I’ve heard for a couple years that ROS was going to be poured over to windows and I’m really excited about that. So you think that’ll happen in the next month for the next version?

Ricardo Tellez: Yes. I expect to have something, at least the beta or maybe an alpha, let’s say an alpha, let’s say an alpha. So I don’t have any special information about that. Somebody has told me, it is what I am expecting, because I know that they are working on that.

Joel Esposito: Well, that’ll be great. I’ll be very excited about that.

Ricardo Tellez: Actually I will send an email to the guys there, the open robotics and see what happens and then put, if I have some information, then I will distribute and send that to you and to the audience also. Okay. So, well, I think that we have covered all the topics about your subject. And also, we have finally concluded with ROS also that so the listeners will not be disappointed, but they cannot be disappointed because really people that are listening there, you have to read that article, it is super great. It’s very well structured. And the information that provides is very clarifying. So you can see the actual numbers and the actual data here we went through fast, but you can see the actual numbers and specific data on the article. So I will put a link to this on the podcast. And just wanted to tell you thank you Joel, for joining us and sharing your opinion and your work.

Joel Esposito:: Oh, thanks for having me. And thanks for everything you guys do to make ROS accessible to more students and more faculty. So I’m definitely going to go check some of those resources out myself.

Ricardo Tellez: Well, thank you. That will be my pleasure if we can help you in some way. So just send me an email or contact me directly, and then I will be happy to help on that. So thank you very much Joel. And for all the audience of the podcast, remember that we have the Robot Ignite Academy. That is our online academy. As I have been explained to Joel, where you can learn ROS without having to install anything on your computer, just using a web browser and with any type of computer. So we are using that, for example at our university courses, we’re teaching the students. So I would put the link to the academy beneath here, the podcast, and that is all for today’s podcasts. I think we have been long time because the subject was so interesting, and it required to go deeper on that. So we had to finish in any way at some point in time. So, and that is a point to finish. So thank you very much and see you on the next podcast

[Music]

For campus

A Full ROS & Robotics Teaching Solution

Trusted by hundreds of universities

RDP 020: ROS Agriculture With Kyler Laird

RDP 020: ROS Agriculture With Kyler Laird

In this episode with talk withh Kyler Laird about how to apply ROS to agricultural machines. Kyler will explain his experiences creating autonomous tractors. He will also talk about the ROS Agriculture group created to spread ROS among farmers.

Selected quote:

The ROS Agriculture group is more oriented towards farmers than towards companies

Kyler Laird

 

Related links:

Subscribe to the podcast using any of the following methods

ROS Extra Class: How to use GPS to do autonomous robot navigation?

ROS Extra Class: How to use GPS to do autonomous robot navigation?

 

Basically what we are going to teach in this extra Live-Class is:
1- How to record a trajectory that you would like the robot to do
2- How to make the robot reproduce that trajectory

Everything using the GPS as localization system.

This time we are going to use the ROS Development Studio to do the practice. Please you need to have an account at RDS (free account is ok, and fully working). Please it is very important that attendants have the account created prior to the class so we do not waste time with that process.

All the attendants will receive a full notebook and code that does the two points. The notebook will explain step by step how the code works and where to change for another robot different than the one used in the simulation.

This is an Extra Live Class requested by the ROS Agriculture community (http://rosagriculture.org/), that is why we are doing this Live Class on Saturday (instead of Wednesday). This is an extra class. Wednesday Live Class are still on the schedule (check it out Wednesday schedule here: ROS LIVE-Classes).

Pin It on Pinterest