ROS for Beginners: Basics, Motion, and OpenCV
- Description
- Curriculum
- FAQ
- Reviews
News and Updates.
This is the best-seller course in ROS on Udemy.
My course has been upgraded to the latest version of ROS, ROS Noetic, with several new videos explaining the fundamental concepts of ROS with hands-on illustrations. It will also give you the required skills to later learn ROS2 and navigation stack, as presented in my two other courses.
Why am I teaching this course?
Typically, new ROS users encounter many difficulties when they start programming with ROS. Although there are so many tutorials, there are a lot of tips and practical issues that could not be easily found in tutorials and are not discussed and are left to the developer’s luck. Although there is much documentation for ROS, several are very broad, and it takes too long to grasp the concepts well. This is where this course plays a role and provides an added value by providing a focused introduction to the BASICS of ROS. The course not only presents the basic concepts of ROS but also addresses two essential fields in robotics: (1) motion and (2) perception. We will apply the general concepts of ROS in the context of robotic motion and perception. The course will provide you with an opportunity to learn about OpenCV, the most powerful computer vision library that promotes robotic perception.
My approach is to take you STEP BY STEP through the roadmap of learning ROS so that you learn the concepts in the proper order and help you build an experience from one lecture to the other.
This is a course that provides the fundamental concepts and basics of the Robot Operating System (ROS). This course intends to give beginner ROS users a quick and focused introduction to ROS basics and practical tips that help them better manage their first projects with ROS in C++ and Python. In particular, developing with C++ in ROS requires special care compared to Python to configure the compilation and runtime environment well. This is presented clearly in this course.
There are mainly three majors steps in the course:
- ROS Basics and Foundation: This deals with the general ROS concepts everyone has to know, like ROS topics, Services, Messages, and Nodes, …
- Motion in ROS: We apply the concepts learned in Step 1 to make a robot move. We will develop a different trajectory in the context of an excellent example simulating a cleaning robot. In particular, we illustrate how to represent the pose (position and orientation) of a robot in ROS and how to send a motion control message to make the robot move. We clearly demonstrate how to implement linear, rotational, and spiral motions and how all of these can be integrated to simulate a cleaning application. This part will give you the background you need to understand robot kinematics and how motion is represented in ROS.
- Perception in ROS: I will introduce how a robot sees the environment using a camera, how the images are collected in ROS, and how they are processed in OpenCV.
- Arduino: you will also learn how to use Arduino boards and sensors with ROS using the ROSSERIAL Arduino interface. This will allow you to integrate any Arduino sensor and board into your robot and robotics applications.
Based on my experience, these are the most important things any new ROS user must know to go further with their own robotics project.
I also provide some hands-on activities that allow the learner to assess his understanding and push him to practice the concepts he learned.
My experience with ROS
I have been programming with ROS for many years both in academic and industrial projects. I am very passionate about developing a program with ROS. I have also been teaching ROS at the University and providing training programs. I am the leader of the Robotics and Internet-of-Things Lab at Prince Sultan University and also a consultant for Gaitech Robotics. I have developed many ROS packages for robots and drones. I have been leading international scientific activities around ROS, and in particular, I am the editor of three volumes of books with Springer entitled Robot Operating System, The Complete Reference. I gained a lot of experience in what difficulties new users encounter in learning ROS, which contributed to pinning right to the point addressing these problems through the different lectures of the course.
Welcome to the World of ROS.
-
3About this section (slides attached to resources)Text lesson
Abstract. Robot Operating System (ROS) becomes nowadays the de-facto standard for developing robotics applications. The pre-birth initiatives were emerging from STanford AI Robot (STAIR) project and Personal Robots (PR) program, which aimed at creating dynamic software systems for robotics applications, until 2007 when Willow Garage, a major robotics investor, boosted the development of this initiative and contributed to the release of the first ROS software packages in 2009. The first version of ROS was released in 2010 and nowadays ROS becomes the largest ecosystem and platform for robotics software development. In just a few years of its release, ROS has witnessed a huge community with an increasing number of users and developers from academia and industry, as well as hobbyists. How did ROS revolutionize robotics software development in just a few years? In this presentation, I will give an overview of ROS and its evolution in the past years after its release. I will unveil the secrets of ROS that makes it a revolutionary solution for developing robotics applications. I will share my experience, as a computer scientist working on robotics, developing robotics applications in the pre-ROS and post-ROS times, and how ROS made a complete shift in the software engineering and development approaches for mobile robots. The presentation will also give a small overview of the main concepts of ROS and the most important libraries and packages that comes with it. Video demonstrations and real illustrations will be presented.
-
4IntroductionVideo lesson
-
5Why did I decided to use ROS in my work?Video lesson
-
6The Robot Life CycleVideo lesson
-
7ROS ImpactVideo lesson
-
8Self-Driving Car Use CaseVideo lesson
-
9ROS EvolutionVideo lesson
-
10ROS Distributions (version) over TimeVideo lesson
-
11ROS ArchitectureVideo lesson
-
12ROS Basic Concepts and DemoVideo lesson
-
13ROS Communication Paradigms (Topics/Services/ActionLib)Video lesson
-
14ROS Path Planning and NavigationVideo lesson
-
15Limitation of ROSVideo lesson
-
16ROS2Video lesson
-
17[OPTIONAL] Some Contributions to ROSVideo lesson
-
18Install ROS SlidesText lesson
-
19Install ROS Noetic on Ubuntu 20.04Video lesson
-
20Create your catkin workspace with ROS NoeticVideo lesson
-
21Clone the right GitHub Repository for the ROS Noetic distributionVideo lesson
-
22Testing your installation with C++ nodesVideo lesson
-
23Testing and fixing installation with Python nodesVideo lesson
-
24[UPDATE] Note: My recommendation for the editor to useText lesson
-
25[IMPORTANT] BEFORE START WORKING ON THE COURSEText lesson
-
26Note about this sectionText lesson
-
27[OPTIONAL] ROS Installation TipsVideo lesson
In this video, I present the different ROS distributions and discuss how to choose among them. Then, I give some practical hints and guidelines for the installation of ROS and how to choose the appropriate operating system.
-
28Install a Ubuntu Virtual Machine on Mac-OS using VM-FusionVideo lesson
In this lecture, I demonstrate how to install a Ubuntu virtual machine on Mac-OS to install and work with ROS on it.
-
29UPDATE NOTE ABOUT ROS DISTRIBUTIONVideo lesson
-
30Install ROS (Melodic) on Ubuntu (Bionic)Video lesson
In this video, I show how to install ROS Melodic on Ubuntu Bionic using the virtual machine installed in the previous video.
The process is the same to install any other ROS version
-
31Which Integrated Development Environment (ID) to use with ROS?Video lesson
This video provides you some pointers on how to select a good IDE to develop projects with ROS.
This is rather an information that is not clear for new ROS users.
-
32[UPDATE] Note: My recommendation of editor to useText lesson
-
33Section Note UpdateVideo lesson
-
34ROS Workspace and ROS Package (Setting up your ROS projects)Video lesson
In this lecture, I will explain the difference between a workspace and package in ROS and how to create them, and how to organize your ROS project.
-
35Wrapping upVideo lesson
-
36ROS Workspace and ROS PackageQuiz
In this practice test, you will assess your knowledge about the creation of a workspace and package in ros
-
37Note about the next lectureText lesson
-
38[LEGACY] Setup ROS (Kinetic+Melodic) Project of the course using GitHubVideo lesson
In this lecture, I present you can download ROS package (project) that contains the code I will be explaining during this course. It is recommended to download the code before starting the next lecture.
-
39What is a ROS Computation Graph?Video lesson
-
40ROS Computation Graph Life CycleVideo lesson
-
41Start the ROS Master NodeVideo lesson
-
42How to run a new node (executable) in ROS?Video lesson
-
43What happens when we start a new ROS node?Video lesson
-
44Adding a teleop node to make the robot moveVideo lesson
-
45Get the information of a node and the information of a topicVideo lesson
-
46The content of the motion message /tutle1/cmd_velVideo lesson
-
47Understand the structure of a ROS messageVideo lesson
-
48How to show the message structure on ROS command line?Video lesson
-
49Publish a message on a topic from a command lineVideo lesson
-
50Visualize the ROS Computation Graph using ros_rqt_graphVideo lesson
-
51Demo: Starting Turtlesim and checking information about the nodes and topicsVideo lesson
-
52Demo: Showing the content of ROS messages publishedVideo lesson
-
53Demo: Understand the pose topicVideo lesson
-
54Demo: What is the benefit of using ROS?Video lesson
-
55Demo: Publishing a message from a command line using rostopic pubVideo lesson
-
56Demo: rqt_graphVideo lesson
-
57[Quiz] ROS Computation GraphQuiz
-
58ROS Filesystem and EcosystemText lesson
-
59NOTEText lesson
-
60[OLD] The ROS Master Node (OPTIONAL - KEPT FOR STUDENT NOTES)Video lesson
In this video, I present ROS ecosystem and packages, and explain how to start roscore, the main node in ROS.
-
61[OLD] ROS Computation Graph: Nodes, Topics (OPTIONAL - KEPT FOR STUDENT NOTES)Video lesson
In this tutorial, I explain the concepts of ROS nodes, ROS topics and ROS messages which are the key subjects that any ROS user has to understand very well to proceed further. I provide a clear illustrations of these concepts through demonstrations.
-
62ROS Topics OverviewVideo lesson
-
63Question: what happens if ROS Master crashes?Video lesson
-
64Guidelines to Write a Publisher and a Subscriber in ROSVideo lesson
-
65Overview of the Talker/Listener Application (ROS Hello World Example)Video lesson
-
66Write a Publisher Node in PythonVideo lesson
-
67Write a Subscriber Node in PythonVideo lesson
-
68[DEMO] Talker/Listener in PythonVideo lesson
-
69Write a Publisher/Subscriber Node in C++Video lesson
-
70[DEMO] Talker/Listener in C++Video lesson
-
71Do-It-Yourself Assignment ExplanationVideo lesson
-
72Do-It-Yourself: Write your First ROS Program to Control the Motion of a RobotText lesson
-
73[OLD-OPTIONAL] Write a ROS Publisher and Subscriber in C++Video lesson
-
74[OLD-OPTIONAL] Write a ROS Publisher and Subscriber in PythonVideo lesson
In this video, you will learn how to write a publisher node and a subscriber node in Python using ROS. You will understand to which extent using Python makes coding in ROS much simpler.
-
78What is a ROS Service?Video lesson
-
79Understand ROS Services with TurtlesimVideo lesson
-
80[DEMO] ROS Services with TurtlesimVideo lesson
-
81Do-It-Yourself: ROS Service Hands-On PracticeText lesson
-
82AddTwoInts Service OverviewVideo lesson
-
83Create the Service File and Request/Response MessagesVideo lesson
-
84Write ROS Service (Client/Server) in PythonVideo lesson
-
85[DEMO] Write ROS Service (Client/Server) in PythonVideo lesson
This lecture demonstrates how to write a ROS service in Python.
This lecture is made using Ubuntu 20.04 and ROS Noetic.
-
86[DEMO] Writing a ROS Service (Client/Service) in C++Video lesson
-
87Rectangle Aera ROS Service (with video solution)Text lesson

External Links May Contain Affiliate Links read more