What to Learn in ROS
Based on my experience, here I summarize what to learn in Robot Operating System (ROS):
1 How to install ROS and prepare your development environment
2 How to create a ROS package and build it in your workspace
3 How to establish a ROS network between multiple machines and devices
4 Message communication in ROS:
4.1 Message data types
4.2 Topic publisher and subscriber
4.2.1 Understanding the concept of topic publisher and subscriber
4.2.2 How to write publisher and subscriber, and how to use them
4.3 Service
4.3.1 Understanding the concept of service
4.3.2 How to create service server and service client, and how to use the service
4.4 Action
4.4.1 Understanding the concept of action
4.4.2 How to create action server and action client, and how to use the action
4.5 Parameters
4.6 Bags
5 How to create ROS Launch
6 ROS CLI commands
7 How to use ROS tools
7.1 RViz
7.2 rqt
8 URDF
8.1 Understanding URDF and its limitations
8.2 How to create URDF
8.3 Understanding xacro and how to create and use it
8.4 How to export CAD model to URDF
9 Coordinate transformation (tf)
9.1 Understanding tf
9.2 How to publish tf
9.3 How to listen tf
9.4 How to transform Euler angles to quaternion and vice versa
10 Using rosserial
11 ROS Control
11.1 Understanding ROS Control; Types of ROS Controllers
11.2 Setting up ROS Control
11.3 Connecting ROS Control with simulated robot (in Gazebo) or real robot
11.4 Tuning PID gains
12 Using Gazebo and making connection between Gazebo and ROS
12.1 Understanding Gazebo and SDF
12.2 How to create a model and spawn it in Gazebo
12.3 How to create/use plugin in Gazebo
12.4 How to connect Gazebo and RViz
13 Using map in ROS
13.1 Manual generation of map
13.2 Setting up map server and calling the map
14 Localization in ROS
15 SLAM in ROS
16 Navigation in ROS
17 Using MoveIt
17.1 Understanding how MoveIt works
17.2 Using Setup Assistant
17.3 Setting up MoveIt
17.4 Planning schemes in MoveIt
18 Perception in ROS
18.1 Image-based perception in ROS
18.2 Pointcloud-based preception in ROS