Concepts and Packages
Core Concepts of ROS 1
Tutorials: https://wiki.ros.org/ROS/Tutorials
ROS 1 is structured around several key concepts that enable modular, distributed, and scalable robot software development. The main ideas are organized at different levels25:
1. Nodes
Definition: Nodes are independent processes that perform computation. Each node is typically responsible for a single task (e.g., reading sensor data, controlling motors, localization).
Implementation: Nodes are written using ROS client libraries such as
roscpp(C++) orrospy(Python).
2. Master
Role: The ROS Master provides name registration and lookup for nodes, topics, and services, enabling nodes to discover and connect with each other.
Operation: Nodes register themselves and their communication interfaces with the Master, which acts like a DNS server for the ROS network. After discovery, nodes communicate directly25.
3. Parameter Server
Purpose: Stores global parameters (key-value pairs) accessible at runtime by all nodes. Used for configuration and tuning of nodes without code changes25.
4. Topics
Mechanism: Topics are named message buses for asynchronous, many-to-many communication. Nodes publish messages to topics, and other nodes subscribe to receive those messages.
Strong Typing: Each topic enforces a specific message type for data consistency.
5. Messages
6. Services
Mechanism: Synchronous, request/response interactions for tasks that require confirmation or a result (e.g., requesting a sensor reading).
Definition: Defined in
.srvfiles with request and response fields5.
7. Bags
Purpose: Files (with
.bagextension) for recording and replaying topic data. Essential for debugging, simulation, and development5.
8. Filesystem Level
Packages: The basic unit of ROS software organization, containing nodes, libraries, configuration files, and more.
Workspaces: Directories for building and managing multiple packages together5.
Popular and Essential ROS 1 Packages
While the importance of a package depends on your application, the following are widely used and considered essential in most ROS 1 projects467:
tf / tf2
Coordinate frame transforms (essential for robot kinematics)
rviz
3D visualization tool for sensor data, robot models, and planning
ros_control
Framework for controller management and hardware abstraction
moveit
Motion planning and manipulation for robotic arms
navigation
Autonomous navigation stack for mobile robots
gazebo_ros_pkgs
Integration between ROS and Gazebo simulator
urdf
Unified Robot Description Format for robot models
robot_localization
State estimation from multiple sensors
rosbag
Data recording and playback
sensor_msgs, geometry_msgs, std_msgs
Standard message types for sensors, geometry, etc.
image_transport, cv_bridge
Tools for handling images and computer vision
robot_state_publisher
Publishes robot joint states to tf
actionlib
Tools for asynchronous task execution
ros_perception
Perception stack for vision and point cloud processing
rosparam, rosnode, rostopic, rosservice
Core tools for managing ROS system
ROS Industrial
Packages for industrial robot support
rqt
GUI plugins for introspection, plotting, and debugging
Other Notable Packages (from usage statistics)6:
cv_bridge,image_transport(vision)robot_state_publisher,joint_state_publisher(robot state)dynamic_reconfigure(runtime parameter tuning)catkin(build system)roslaunch,rosbag,rosmsg,rostopic,rosservice,rosnode(core utilities)urdf_tutorial,turtlesim(learning and demos)
References and Further Reading
ROS 2 Concepts and Popular Packages
ROS 2 Tutorials: https://docs.ros.org/en/humble/Tutorials.html
Core Concepts of ROS 2
ROS 2 is a modern, distributed robotics middleware designed for flexibility, scalability, and real-time performance. It builds on the lessons of ROS 1 and introduces several key architectural and functional improvements.
1. Nodes
Definition: Nodes are independent, modular processes that perform computation. Each node can handle a specific function, such as sensor reading, data processing, or actuator control.
2. Topics
3. Services
Implementation: Defined using
.srvfiles specifying request and response types.
4. Actions
Purpose: Actions allow for asynchronous, long-running tasks with feedback and the ability to cancel (e.g., navigation goals, manipulation tasks).
5. Parameters
6. Quality of Service (QoS)
7. Launch System
8. Security
9. Tools and Ecosystem
Community: A vibrant, global community contributes to a rich repository of open-source packages, ensuring continuous improvement and innovation7.
Popular and Essential ROS 2 Packages
The following packages are widely used and form the backbone of most ROS 2 applications. Your choice may vary depending on your robot and application, but these are considered foundational:
rclcpp / rclpy
Core C++ and Python client libraries for node development
tf2
Coordinate frame transformations for robot kinematics and sensor fusion
RViz2
3D visualization tool for sensor data, robot models, and planning
ros2_control
Modular, extensible robot control framework
Nav2
Navigation stack for autonomous mobile robots
MoveIt 2
Advanced motion planning and manipulation for robotic arms
Gazebo / Ignition
High-fidelity robot simulation environments
sensor_msgs, geometry_msgs, std_msgs
Standard message types for sensors, geometry, and basic data
image_tools, camera_info_manager
Vision and sensor integration tools
rosbag2
Data recording and playback for ROS 2 messages
robot_state_publisher
Publishes robot joint states to tf2
action_msgs, lifecycle_msgs
Standard messages for actions and node lifecycle management
rqt, RViz2 plugins
GUI tools for introspection, plotting, debugging, and visualization
slam_toolbox
SLAM (Simultaneous Localization and Mapping) for mapping and localization
navigation2 (Nav2)
Advanced navigation and path planning for mobile robots
Perception packages
Includes packages for vision, point cloud processing, and object detection
Other Notable Packages:
micro_ros(ROS 2 for microcontrollers)ament_cmake(build system)colcon(build tool)ros2launch(launch management)ros2param(parameter management)ros2topic,ros2service,ros2bag(core CLI tools)
References and Further Reading
Last updated