This is deprecated, however I first learned this while following Madhur Behl’s F1TENTH course.
Why the upgrade to ROS2?
To understand why, check out https://design.ros2.org/articles/why_ros2.html. But the spiel is that everything with ROS1 was developed in-house: discovery, message definition, serialization, and transport. With ROS2, we now have things such as DDS (which are developed by 3rd parties.)
The main worry was that ROS1 was not very secure. ROS2 is built using off-the-shelf open source libraries.
Services
Service calls are bidirectional.
Ros launch files exist to lunch a bunch of nodes, so you don’t have to manually launch it every time.
Server
Client
Rospy
Names most be unique in ROS.
use queue_size=1 if you always want the freshest data, queue_size=0 actually means infinite queue size, which is really bad.
Publisher
Subscriber
Catkin
Catkin is the ROS build system
The set of tools that ROS uses to generate executable programs, libraries and interfaces
catkin = CMake + X
Two mandatory files:
package.xml
CMAKEList.txt
Ros code is grouped at two different levels:
Packages
Stacks
Stack = collection of packages (ex: Perception Stack)