what is the common point between all those robots well all the robots you see here are or can be powered by rouse roth means robot operating system it is something between a middleware and a framework built especially for robotics applications rao's goal is to provide a standard for robotic software that developers can use and reuse in any robot once you know how to use ros efficiently you will be able to set up a new software for a new robot in no time you first need to master the basics and core functionalities which you will see in this course and then for every new robot you program you will gain more skills that can apply to other robots the more you know about ross the easiest it will be for you to program and understand the code of any robot but is that it no another philosophy behind ross is don't reinvent the wheel reinventing the wheel is a very common problem in robotics people always start building new software that is already existing and thus they don't have the time to work on really valuable stuff what if instead you could build on a strong software base to directly program high-level functionalities and work on use cases instead of low-level technical stuff that already exists in way so this is the why behind ross now when to use ros maybe you've already started to program robots with an arduino board with a custom code on a computer and what you will quickly experience is that the more sensors actuators controllers you add on your application the more complex it becomes until you reach a point where everything is mixed up and you can't add any code for a new sensor without having a huge headache ross is here to help you develop powerful and scalable robotic applications you can use it whenever you want to create a robot software which needs a lot of communication between its sub-programs or has some functionalities that go beyond a very simple use case etc so for a robot that will just open a door with a servo motor when it detects a movement maybe you don't need routes but for a mobile robot which you want to control with a gps and a camera in this case ross might really help you alright you've just seen what is the why behind ross and when to use it now what is ross it would be hard to describe exactly what is ross in about two minutes even an hour but here are two main points that will give you an idea of the big picture first of all ross provides you with a way of separating your code into reusable blocks along with a set of communication tools to easily communicate between all your sub-programs let's say that you are programming a robotic arm you can create a subprogram called node for your camera another for the motion planning another one for the hardware driver another for joystick and so on and each of those independent blocks will communicate between each other in a way that is powerful and scalable the second main point is that ross provides you with many plug-and-play libraries that will save you a huge amount of time and most importantly that will prevent you from reinventing the wheel if we come back to the robotic arm imagine how difficult it can be to compute the inverse kinematic for the arm to plan a trajectory which will make the arm move smoothly and avoid any obstacle on the way impossible you might think unless you spend two years studying mathematics motion planning etc but what if i tell you this you don't need two years you need maybe two days to install a library and figure out how to use it so you have great communication tools and great libraries that's not all ros is said to be language agnostic it means that you can program some parts of your application in a programming language and another part in another programming language simply because the communication tools don't rely on a specific language so in this course we will not go into all the external libraries that exist for many different robots we will mostly focus on the ros basics and core functionalities that will enable you to easily start any robot application powered by ros using python and c plus plus ros is also open source with an active and growing community so you can directly see what's going on you can get help share your project and even contribute if you wish to all right with this quick introduction you should get some ideas about what is wrong when to use it and why it is useful don't panic though if you don't understand everything right now the big picture behind ross is pretty hard to get at the beginning but after some practice you will start to get it and i can guarantee you that you will quickly think that ross is awesome