ROS for Beginners: Basics, Motion, and OpenCV
Become an expert and Learn Robotics with Robot Operating System (ROS) in little time and don’t be lost in broad docs
What you’ll learn
- 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.
- Dec 11
- I added slides of the course and Arduino code
- Nov 06.
- two lectures added on launch files and how to run multiple nodes at the same time in ROS.
- Oct 15.
- 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.
- Oct 3.
- 3 lectures added on motion in ROS using Python (linear, rotation and go to goal). New code available on github
- Sep 14:
- 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.
- Sep 07:
- new Ubuntu 16.04 + ROS Kinetic virtual machine available for students (upon request) to learn ROS without having to install it.
- Sep 03:
- 11 lectures (1 hour) on ROSSERIAL Arduino with real demonstration on Arduino Hardware and Ultrasonic sensor
- Aug 27:
- Three new lectures on OpenCV with C++, including CvBridge and how to manage dependencies.
- Aug 26:
- new assignment Turtlesim motion in Python
- Aug 15:
- Quiz on Laser Scanners
- Subscriber ROS node for laser scanners (C++/Python)
- Save scan topic messages into a rosbag file and replay it
- Aug 12:
- new lecture connect Asus Live Pro RGBD camera to ROS as laser scanner
- new lecture connect URG Hukoyo Laser Scanner to ROS
- Aug 11:
- 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.
Who this course is for:
- 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