What is the outcome?
After taking this course, you will have all the instruments you need to design, develop and implement a robotics application that gives added value to manufacturing companies.
You will develop capabilities to understand What, Why and How you solve an industrial task. This mastery of the subject will give you the confidence you need before tackling the problem that concerns robotic programming.
You will be able to design and develop the architecture of all the tools that ROS makes available to you to apply it to your specific robotic application (topics, messages, services, actions).
You will be able to simulate the entire application in Gazebo, by replicating your industrial environment and testing the behavior of a 6 axis robot that YOU have programmed.
This course will transform you into a reliable Robotics Software Engineer and it allows you to become a key resource for your industrial manufacturing company.
Description of the course
In this course you are going to learn how to program robotics with ROS! You would need basic undestanding of computer science and industrial machineries. You will learn from the basics, ROS architecture, the structure of the packages and its modularity and you will do practical industrial project using topics, services and actions. You are going to model and simulate industrial manipulator and interface with 2D and 3D cameras. You will practice with Computer Vision and finally put all together to simulate practical and real industrial application, like pick and place, path tracing, palletizing and much more!
Why ROS?
ROS has emerged as the industry standard for developing robotics system due to its flexibility, scalability and robustness.
In this course you'll unravel the architecture behind ROS, delve into core concepts such as nodes, topics and services. You will gain hand-on experience to apply these concepts in real world scenarios with practical projects.
Duration of the course: 90 days
Program with ROS and MoveIt
We are going to use Robot Operating System to program industrial application, thanks to its modularity and integration with other inverse kinematic Framework like MoveIt and Computer Vision
Simulation in Gazebo
We will test our robotics application in Gazebo, a physics software able to replicate the physics of the real world, in such a way that you can invest on the hardware only after feasability analysis
Computer vision
We will sense the environment with 2D and 3D tools like OpenCV and Point Cloud Library. You will be able to interface camera with ROS and code Object Detection and much more integrated with your Robotics application
What you will learn
- Create ROS workspace (9:01)
- The ROS master and the nodes (23:21)
- Create a node in C++ (29:19)
- Create a node in Python (14:28)
- Create a publisher in C++ (14:31)
- Create a subscriber in C++ (19:42)
- Create a publisher in Python (12:48)
- Create a subscriber in Python and play with Turtlesim (23:31)
- Introduction on Services (18:01)
- Create a service server in C++ (20:59)
- Create a service client in C++ (16:28)
- Create a service server in Python (11:50)
- Create a service client in Python (15:07)
- Create a custom msg (18:13)
- Create a custom srv (4:43)
- Final Project with Turtlesim (95:59)
- ROS parameters (6:08)
- ROS launch file (10:58)
- Introduction to URDF file (7:41)
- Strategy to model your custom Robot (8:20)
- Start to create a custom Robot in URDF (12:48)
- Visualize the Robot in Rviz (13:44)
- Joint State and Robot State Publisher (10:24)
- Complete you custom robot (19:59)
- How to simplify your Robot model (15:05)
- How to model a gripper as end effector (22:55)
- How to clone a robot model from Github (33:21)
- How to clone a commercial robot: Universal Robot 5 (UR5) (25:08)
- How to setup a commercial Gripper: Robotiq (30:59)
- Spawn your Robot in Gazebo (11:54)
- Introduction to ROS Control (8:17)
- How to calculate intertia values for your custom robot (22:01)
- How to configure transmission for the joints of your custom robot (14:57)
- How to put a Gazebo plugin (14:12)
- How to create and configure controllers for your Custom Robot Joints (17:08)
- How to spawn controllers of your robot joint (19:30)
- How to tune PID Controllers for your Custom Robot Joints (87:26)
- Forward Kinematics with Custom Robot (9:48)
- How to use Transform (3:31)
- Hot to grasp an object in Gazebo without slipping (26:33)
- JointPositionController VS JointTrajectoryController (12:52)
- Introduction to MoveIt (12:08)
- Create a MoveIt configuration Package (19:00)
- Play with Motion Planning and update the MoveIt package (36:37)
- ROS Control for MoveIt (11:09)
- Create an Inverse Kinematics node (28:55)
- How to setup the orientation and position of the end effector (19:30)
- How to make Collision Objects in Rviz (23:37)
- How to code Pick and Place (51:06)
- How to adapt the inverse Kinematics node to another robot (37:30)
- How to code Pick and Place with Grasp Class
- Why Computer Vision in Robotics (20:33)
- Strategy to integrate perception with robotic arm (14:01)
- Type of Perceptions: HSV (11:53)
- Type of Perceptions: SURF (6:21)
- Type of Perceptions: PCL (4:05)
- How to deploy a 2D camera (23:52)
- Get an Image with OpenCV (37:04)
- Stream the Image with OpenCV (6:15)
- Edge Detection with OpenCV (46:49)
- Get the position of the object in the Image (46:03)
- Convert the object position with the respect of camera_link (80:14)
- How to tackle this project (9:13)
- Adapt the Computer Vision node (16:43)
- Create the service to transform data from camera_link to base_link frame (61:42)
- Pick and Place with 2D camera (53:54)
- Pick and Place with Grasp class (36:21)
- Pick and Place with UR5 and Robotiq gripper in Gazebo / real word (38:53)
- Pick and Place with UR5 Robotiq gripper and 3D camera (9:58)
- Differences between ROS and ROS2 (10:51)
- ROS and ROS2 distributions
- Install and setup ROS2 Humble (14:04)
- Create ROS2 Workspace (9:19)
- Install VS code in Ubuntu 22.04 and ROS2 setup (4:18)
- Create packages and basic node in C++ (37:39)
- Write a Topic Publisher Subscriber in C++ (37:30)
- Create packages and basic node in Python (30:00)
- Write a Topic Publisher Subscriber in Python (21:46)
- Create Custom Interface (11:47)
- Write a service in Python (15:38)
- Write a Service in C++ (17:55)
- ROS parameters in ROS2 (29:57)
- Create a Launch file (30:50)
- Migration strategy (9:22)
- Migrate custom robot description package (28:23)
- ROS2 Control: understanding and deploying Joint Group Position Controller (54:23)
- ROS2 Control: setup and deploy Gripper Action Controller (16:20)
- ROS2 Control: setup and deploy Joint Trajectory Controller (12:19)
- ROS2 Control: Control the robot sending trajectory_msgs from C++ script (11:43)
- Replicate the .world from ROS1 (8:31)
- Deploy depth camera and the pick object (25:45)
- Create MoveIt2 configuration package for a custom robot (55:40)
- How to interface Moveit2 with Gazebo (18:24)
- Create an inverse kinematics node with MoveIt2 in C++ (23:39)
- How to simulate grasping with LinkAttacher in Gazebo (11:38)
- Pick and place with a Custom robot: Gazebo interfaced with Rviz (30:27)