ROS for Beginners: Basics, Motion, and OpenCV
- 10.5 hours on-demand video
- 5 articles
- 9 downloadable resources
- 1 Practice Test
- Full lifetime access
- Access on mobile and TV
- Certificate of Completion
Get your team access to 4,000+ top Udemy courses anytime, anywhere.Try Udemy for Business
- Understand ROS Ecosystem (topics, nodes, messages, services, actionlib)
- Develop simple applications to control robot motion
- Understand how a position and orientation are represented in ROS
- Recognize how to develop a C++/Python ROS project
- Develop simple computer vision programs with ROS and OpenCV
- Knowledge in C++ and/or Python Programming language.
- Want to learn ROS
- Eager to learn robotics
News and Updates.
I added slides of the course and Arduino code
two lectures added on launch files and how to run multiple nodes at the same time in ROS.
one lecture added on how to make a turtlebot 2 robot by just applying the same code of turtlesim to demonstrate how ROS is modular.
3 lectures added on motion in ROS using Python (linear, rotation and go to goal). New code available on github
3 lectures added in Section 4 on how to create a custom ROS message and a publisher/subscriber application that uses the custom ROS message. An example of IoTSensor message is considered.
new Ubuntu 16.04 + ROS Kinetic virtual machine available for students (upon request) to learn ROS without having to install it.
11 lectures (1 hour) on ROSSERIAL Arduino with real demonstration on Arduino Hardware and Ultrasonic sensor
Three new lectures on OpenCV with C++, including CvBridge and how to manage dependencies.
new assignment Turtlesim motion in Python
Quiz on Laser Scanners
Subscriber ROS node for laser scanners (C++/Python)
Save scan topic messages into a rosbag file and replay it
new lecture connect Asus Live Pro RGBD camera to ROS as laser scanner
new lecture connect URG Hukoyo Laser Scanner to ROS
new lectures on Laser Range Finder
Pre-Installed Virtual Machine: New ROS users who face difficulties to install ROS on their own will be provided a pre-installed virtual machine after enrolling to this course so they car start learning ROS without bothering much with installation issues. For this, you can send me a private message to request to VM and you will receive the link.
Why am I teaching this course?
Typically, new ROS users encounter a lot of 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 not discussed and left to the developer luckiness. In general, although there are many documentations for ROS, several are very broad and it takes too long to grasp well the concepts. This is where this course plays a role and provides an added value by providing focused introduction to the BASICS of ROS. The course does not only presents the basic concepts of ROS, but also addresses two important fields in robotics: (1) motion, (2) perception. We will apply the general concepts of ROS in the context of robotic motion and perception. The course will provide you an opportunity to learn about OpenCV, the most powerful computer vision library, that promote 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 right 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 Robot Operating System (ROS). This course intends to give beginner ROS users with a quick and focused introduction on the basics of ROS, in addition to practical tips that helps them manage better their first projects with ROS in C++ and Python. In particular, developing with C++ in ROS requires special care as compared to Python to configure well the compilation and runtime environment. This is presented in clear manner in this course.
There are mainly three majors steps in the course:
ROS Basics and Foundation: which deals with the general ROS concepts that everyone has to know, like ROS topics, Services, Messages, Nodes, ...
Motion in ROS: We apply the concepts learned in Step 1 to make a robot move. We will develop different trajectory in the context of a nice 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 motion control message to make the robot move. We clearly demonstrate how to implement a linear motion, a rotational motion, and spiral motion and how all of these be integrated to simulate a cleaning application. This part will 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 see the environment using a camera, how the images are collected in ROS and how they are processed in OpenCV.
Based on my experience, these are the most important things any new ROS user has to know to be able to go further with his own robotics project.
I also provide some hands-on activities that allows 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 to develop program with ROS. I have also been teaching ROS at the University and providing training programs. I am R&D Director of Gaitech Robotics, and 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 on what difficulties new users encounter to learn ROS and this contributed to pin right to the point addressing these problems through the different lectures of the course.
Welcome to the World of ROS.
- Beginner ROS developers and users
- Students at Universities learning ROS
- Anyone interest to know about the basic concepts of ROS
- Curious about robotics
- Whoever wants to learn ROS without wasting time
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.
In this lecture, I demonstrate how to install a Ubuntu virtual machine on Mac-OS to install and work with ROS on it.
In the previous lectures, I have demonstrated how to install ROS Melodic.
Although any version of ROS should work for most of the examples to be provided, I recommend to install ROS Kinetic for this course. It is exactly the same way I demonstrated for ROS Melodic.
To install ROS Kinetic, you can simple follow the steps in this link
In the same way I presented in the previous lecture.
Why ROS Kinetic?
The only issue with ROS Melodic is that it does not have all the packages of Turtlebot2 simulator. Thus, I recommend using ROS Kinetic to be able to follow the examples that uses Turtlebot2 simulator. However, all other examples should work with any version.
Having problems installing ROS?
Some students still face problems to install ROS although the process is simple. This might be due to various reason and it is not easy to provide support on this.
If for any reason you cannot install ROS, then I recommend you to use my pre-installed virtual machine.
For this, just send me a message and I will reply with sending the link.
In this lecture, I present an overview of the theoretical background of ROS topics communication paradigm. This lecture will allow you to understand how ROS topics work and better follow the next lectures of this section.
In this video, I present a brief overview of OpenCV and its functionalities for computer vision and images processing.
In this lecture, I demonstrate how to open and saves images from and to files.
In this video, I present the data structures used to manipulate images in OpenCV after loading them into the memory, and also the structure of a pixel and how it is represented. I present the different operations that could be done on these data structures to determine the properties of an image.
The lecture describes how to transform an image into a binary image using thresholding techniques in OpenCV.
It discusses the difference between simple thresholding and adaptive thresholding and illustrate them using a real coding example.
In this video, I explain how to a filter a color for object detection using openCV. I explain why we need to use the HSV color space for color filtering and detection, and then apply it to detect a tennis ball with yellow color.
This is the first lecture in a series of lectures on tennis ball tracking.
In this video, I explain the concept of contours detection in OpenCV, also known as Edge detection. I demonstrate how to find contours and how to get their properties, like area, perimeter, enclosing circle, central point, ...
Contour detection will be used in the next video about ball detection to identify the properties of the ball detected in an image.
In this video, I put all together and write a program that detects a tennis ball, determine its position in the image and surround it with a circle.
After finishing this video, you will need to do the next assignment which revises all the concepts learned in this section.
Working with OpenCV in C++ in ROS presents additional challenges in particular adding appropriate dependencies. In this next videos, I will present how to work with OpenCV in C++ in ROS.
In this video, I will present how to read a video stream, process it and display it.
In this video, I present how to process ROS images with CvBridge in C++ with ROS and how to convert them from OpenCV format to ROS format and vice-versa. I also present what are the dependencies that must be added in the CMakeLists.txt to compile and execute the program.
In this video, I demonstrate how to connect the Asus Live Pro RGBD Camera with ROS Kinetic and what are the different ROS packages that must be started to load the driver and convert the depth image of the camera into a laser scanner topic that provide information about the distance to obstacles.
In this lecture, I show how to write a ROS node in C++ for a subscriber to a scan topic and how to process scan data to derive statistics like max, min and average ranges. I also present my C++ libraries that I developed for processing data coming from laser scanner. I show how to include them in the ROS node and add them as libraries in CMakeLists.