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
.srv
files with request and response fields5.
7. Bags
Purpose: Files (with
.bag
extension) 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
Last updated