> For the complete documentation index, see [llms.txt](https://panav.gitbook.io/robotics-handbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://panav.gitbook.io/robotics-handbook/ros-2/important-packages-and-libraries.md).

# Important Packages and Libraries

### **Essential ROS & ROS 2 Packages: A Developer's Curated Guide** <a href="#undefined" id="undefined"></a>

The Robot Operating System (ROS and its successor ROS 2) offers a powerful and flexible framework for robotics software development. This ecosystem is enriched by a vast collection of open-source packages that provide functionalities for a wide array of robotics tasks. This guide, drawing from community-curated lists like "awesome-ros," "awesome-ros2," and "awesome-robotics-libraries," highlights essential and foundational packages across various categories.

***

### **1. Core ROS Infrastructure & Communication**

These packages form the bedrock of any ROS/ROS 2 system, enabling communication, node management, and system configuration.

| Package/Tool Name                                        | Description & Key Features                                                                                                                                                                          | ROS Version(s) | Primary Link/Resource                                                                                                                                                                            |
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **ROS (Robot Operating System)**                         | An open-source, flexible framework providing libraries and tools to build robot applications. Includes message passing, package management, hardware abstraction, and more 1.                       | ROS 1, ROS 2   | [ROS Official Website](https://www.ros.org/)                                                                                                                                                     |
| **ROS Wiki**                                             | The primary documentation hub for ROS 1 packages, tutorials, and community information 1.                                                                                                           | ROS 1          | [ROS Wiki](http://wiki.ros.org/)                                                                                                                                                                 |
| **ROS 2 Documentation**                                  | Official documentation for ROS 2, covering concepts, tutorials, design, and migration from ROS 1 2.                                                                                                 | ROS 2          | [ROS 2 Documentation](https://docs.ros.org/)                                                                                                                                                     |
| **`ros_core` / `ros_base` (ROS 1)**                      | Metapackages. `ros_core` includes essential communication (roscore, rosmaster, topics, services, parameters) and build tools. `ros_base` adds common tools like `tf` and `actionlib` 1.             | ROS 1          | [ros\_core (ROS Wiki)](http://wiki.ros.org/ros_core)                                                                                                                                             |
| **`ros2_core` (ROS 2)**                                  | Metapackage (defined in REP 2001) including core client libraries (rclcpp, rclpy), CLI tools (ros2cli), build system (ament), middleware interface (rmw), message generation 2.                     | ROS 2          | [REP 2001: ROS 2 Variants](https://www.ros.org/reps/rep-2001.html)                                                                                                                               |
| **Client Libraries (`roscpp`, `rospy`)**                 | (ROS 1) Core C++ (`roscpp`) and Python (`rospy`) libraries for writing ROS nodes, handling topics, services, parameters, and managing callbacks and timing 1.                                       | ROS 1          | <p><a href="http://wiki.ros.org/roscpp">roscpp (ROS Wiki)</a><br><a href="http://wiki.ros.org/rospy">rospy (ROS Wiki)</a></p>                                                                    |
| **Client Libraries (`rclcpp`, `rclpy`, `rclc`)**         | (ROS 2) Core C++ (`rclcpp`), Python (`rclpy`), and C (`rclc`) client libraries for ROS 2 development 2.                                                                                             | ROS 2          | <p><a href="https://github.com/ros2/rclcpp">rclcpp (GitHub)</a><br><a href="https://github.com/ros2/rclpy">rclpy (GitHub)</a><br><a href="https://github.com/ros2/rclc">rclc (GitHub)</a></p>    |
| **`roslib`**                                             | (ROS 1) Base dependency for ROS Client Libraries and tools. Contains common data structures (e.g., `ros::Time`, `ros::Duration`) and tools for message/service generation and path bootstrapping 1. | ROS 1          | [roslib (ROS Wiki)](http://wiki.ros.org/roslib)                                                                                                                                                  |
| **`rcutils` (ROS 2)**                                    | (ROS 2) Common C utility functions and data structures used across ROS 2 core packages and client libraries 2.                                                                                      | ROS 2          | [rcutils (GitHub - part of ros2/ros2)](https://github.com/ros2/rcutils)                                                                                                                          |
| **Message Definitions (`common_interfaces`)**            | Standardized message types (e.g., `std_msgs`, `sensor_msgs`, `geometry_msgs`, `nav_msgs`) for common data structures ensuring interoperability. Grouped under `common_interfaces` in ROS 2 12.      | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/common_msgs">common\_msgs (ROS Wiki)</a><br><a href="https://github.com/ros2/common_interfaces">common\_interfaces (GitHub)</a></p>                              |
| **IDL Generators (`rosidl_generator_*`)**                | (ROS 2) Packages that generate language-specific code (C++, Python, C, Java, etc.) from ROS Interface Definition Language (.msg, .srv, .action) files 2.                                            | ROS 2          | [rosidl (GitHub)](https://github.com/ros2/rosidl)                                                                                                                                                |
| **tf2 (Transform Library)**                              | Manages coordinate frame transformations in 3D space over time. Successor to `tf`. `geometry2` is the metapackage for tf2 in ROS 2 12.                                                              | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/tf2">tf2 (ROS Wiki)</a><br><a href="https://github.com/ros2/geometry2">geometry2 (GitHub)</a></p>                                                                |
| **Launch System (`roslaunch`, `ros2 launch`)**           | Tools for starting and managing multiple ROS nodes concurrently, often with parameters and configurations defined in XML (ROS 1) or Python/XML/YAML (ROS 2) launch files 12.                        | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/roslaunch">roslaunch (ROS Wiki)</a><br><a href="https://docs.ros.org/en/rolling/Tutorials/Intermediate/Launch/Launch-Main.html">ROS 2 Launch System Docs</a></p> |
| **Parameter System (`rosparam`, `ros2 param`)**          | Allows nodes to store and retrieve configuration parameters dynamically or from YAML files at runtime 12.                                                                                           | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/rosparam">rosparam (ROS Wiki)</a><br><a href="https://docs.ros.org/en/rolling/Concepts/Basic/About-Parameters.html">ROS 2 Parameters Docs</a></p>                |
| **Actions (`actionlib`, `ros2 action`)**                 | Mechanism for long-running, preemptible tasks (actions) with feedback, such as navigation or manipulation goals 12.                                                                                 | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/actionlib">actionlib (ROS Wiki)</a><br><a href="https://docs.ros.org/en/rolling/Concepts/Basic/About-Actions.html">ROS 2 Actions Docs</a></p>                    |
| **Dynamic Reconfigure (`dynamic_reconfigure`)**          | (ROS 1) Allows parameters of a running node to be changed dynamically without restarting. Useful for tuning. (ROS 2 uses parameter event handlers) 1.                                               | ROS 1          | [dynamic\_reconfigure (ROS Wiki)](http://wiki.ros.org/dynamic_reconfigure)                                                                                                                       |
| **`message_filters` / `ros2_message_filters`**           | Synchronizes messages arriving on different topics, often based on timestamps. Crucial for fusing data from multiple sensors 12.                                                                    | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/message_filters">message\_filters (ROS Wiki)</a><br><a href="https://github.com/ros2/message_filters">ros2\_message\_filters (GitHub)</a></p>                    |
| **RMW (ROS Middleware Interface) & DDS Implementations** | (ROS 2) RMW provides an abstraction layer for different DDS (Data Distribution Service) implementations like Fast-RTPS (default), Cyclone DDS, Connext DDS, etc. 2.                                 | ROS 2          | <p><a href="https://github.com/ros2/rmw">rmw (GitHub)</a><br><a href="https://index.ros.org/p/rmw_fastrtps_cpp/">Fast RTPS RMW (ROS Index)</a></p>                                               |
| **Eclipse Zenoh**                                        | A scalable, performant protocol for pub/sub, store/query, compute. Can integrate with ROS 2 (e.g., `rmw_zenoh`, `zenoh-plugin-dds`) for WAN communication 2.                                        | ROS 2          | [Eclipse Zenoh (GitHub)](https://github.com/eclipse-zenoh/zenoh)                                                                                                                                 |
| **rosbridge\_suite**                                     | Provides a JSON API to ROS functionality for non-ROS programs (e.g., web browsers, external applications) via WebSockets 12.                                                                        | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/rosbridge_suite">rosbridge\_suite (ROS Wiki)</a><br><a href="https://github.com/RobotWebTools/rosbridge_suite">rosbridge\_suite (GitHub)</a></p>                 |
| **SOSS (System of Systems Synthesizer)**                 | (ROS 2) Integrates ROS 2 with other communication systems via the ROS 2 Integration Service 2.                                                                                                      | ROS 2          | [SOSS (GitHub)](https://github.com/osrf/soss)                                                                                                                                                    |

***

### **2. Build Systems & Package Management**

| Package/Tool Name            | Description & Key Features                                                                                                                                                                              | ROS Version(s) | Primary Link/Resource                                                                                                                              |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Catkin**                   | (ROS 1) The primary build system for ROS 1, based on CMake. Manages package compilation, linking, and generation of messages, services, and actions 1.                                                  | ROS 1          | [Catkin (ROS Wiki)](http://wiki.ros.org/catkin)                                                                                                    |
| **Ament**                    | (ROS 2) The build system for ROS 2, designed for more flexibility and support for multiple build types (e.g., `ament_cmake`, `ament_python`). It supports features like isolated builds and overlays 2. | ROS 2          | [ament\_cmake (ROS Index)](https://index.ros.org/p/ament_cmake/)                                                                                   |
| **`rosdep`**                 | Command-line tool for installing system dependencies for ROS packages based on `package.xml` files 1.                                                                                                   | ROS 1, ROS 2   | [rosdep (ROS Wiki)](http://wiki.ros.org/rosdep)                                                                                                    |
| **`rosinstall` / `vcstool`** | `rosinstall` (ROS 1) and `vcstool` (ROS 1 & ROS 2) are command-line tools for managing multiple SCM repositories (Git, SVN, etc.) within a ROS workspace 1.                                             | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/rosinstall">rosinstall (ROS Wiki)</a><br><a href="https://github.com/dirk-thomas/vcstool">vcstool (GitHub)</a></p> |
| **Colcon**                   | (ROS 2) A command-line tool to build, test, and deploy sets of software packages. It is the recommended build tool for ROS 2 workspaces 2.                                                              | ROS 2          | [Colcon Documentation](https://colcon.readthedocs.io/)                                                                                             |
| **`bloom`**                  | Tool for releasing catkin (ROS 1) and ament (ROS 2) packages into `rosdistro` for binary distribution (e.g., via `apt`) 1.                                                                              | ROS 1, ROS 2   | [bloom (ROS Wiki)](http://wiki.ros.org/bloom)                                                                                                      |
| **`rosdistro`**              | Defines ROS distributions, listing packages and their versions for each distribution 1.                                                                                                                 | ROS 1, ROS 2   | [rosdistro (GitHub)](https://github.com/ros/rosdistro)                                                                                             |

***

### **3. Robot Modeling & Description**

| Package/Tool Name                                         | Description & Key Features                                                                                                                                                        | ROS Version(s)            | Primary Link/Resource                                                           |
| --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------- |
| **URDF (Unified Robot Description Format)**               | XML format for describing the kinematics, dynamics, visual, and collision properties of a robot model. Parsed by libraries like `urdfdom` and `urdfdom_headers` 1.                | ROS 1, ROS 2              | [URDF (ROS Wiki)](http://wiki.ros.org/urdf)                                     |
| **`urdfdom` / `urdfdom_headers`**                         | Core C++ libraries for parsing URDF files 12.                                                                                                                                     | ROS 1, ROS 2              | [urdfdom (GitHub)](https://github.com/ros/urdfdom)                              |
| **Xacro (XML Macros)**                                    | An XML macro language used to create more modular, readable, and maintainable URDF files by defining reusable macros and using properties 1.                                      | ROS 1, ROS 2              | [Xacro (ROS Wiki)](http://wiki.ros.org/xacro)                                   |
| **SDF (Simulation Description Format)**                   | An XML format that describes objects and environments for robot simulators (like Gazebo), visualization, and control. More expressive than URDF for simulation environments 1.    | ROS 1, ROS 2 (via Gazebo) | [SDFormat Official Site](http://sdformat.org/)                                  |
| **`robot_state_publisher`**                               | Reads the robot's URDF and joint states (from `sensor_msgs/JointState`) to publish the `tf2` transformations of the robot's links. Essential for visualization and kinematics 12. | ROS 1, ROS 2              | [robot\_state\_publisher (ROS Wiki)](http://wiki.ros.org/robot_state_publisher) |
| **`joint_state_publisher` / `joint_state_publisher_gui`** | Publishes `sensor_msgs/JointState` messages. The GUI version provides sliders for manually setting joint positions, useful for testing URDFs and simple control 1.                | ROS 1, ROS 2              | [joint\_state\_publisher (ROS Wiki)](http://wiki.ros.org/joint_state_publisher) |
| **Phobos (Blender Add-on)**                               | An add-on for Blender for creating URDF and SMURF (Supplementary Model URDF Format) robot models 1.                                                                               | N/A (Tool)                | [Phobos (GitHub)](https://github.com/dfki-ric/phobos)                           |
| **onshape-to-robot**                                      | Tool for converting OnShape CAD assemblies to robot definition files (SDF or URDF) 1.                                                                                             | N/A (Tool)                | [onshape-to-robot (GitHub)](https://github.com/ros-sports/onshape-to-robot)     |

***

### **4. Visualization, Introspection & Debugging Tools**

| Package/Tool Name                                                 | Description & Key Features                                                                                                                                                                                    | ROS Version(s) | Primary Link/Resource                                                                                                                                                                          |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **RViz / RViz2**                                                  | A powerful 3D visualization tool. Displays sensor data (laser scans, point clouds, images), robot models (URDF), coordinate frames (tf), navigation paths, markers, and custom visualizations via plugins 12. | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/rviz">RViz (ROS Wiki)</a><br><a href="https://github.com/ros2/rviz">RViz (GitHub - ROS 2)</a></p>                                                              |
| **rqt (Framework & Common Plugins)**                              | A Qt-based GUI framework for developing plugins and tools for ROS. Common plugins include `rqt_graph`, `rqt_plot`, `rqt_console`, `rqt_image_view`, `rqt_publisher`, `rqt_reconfigure`, `rqt_bag` 1.          | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/rqt">rqt (ROS Wiki)</a><br><a href="http://wiki.ros.org/rqt_common_plugins">rqt\_common\_plugins (ROS Wiki)</a></p>                                            |
| **rosbag / rosbag2**                                              | Command-line tools and APIs for recording messages published on ROS topics to a file (`.bag`) and replaying them. Invaluable for debugging, testing, and data analysis 12. `rosbag2` is the ROS 2 version.    | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/rosbag">rosbag (ROS Wiki)</a><br><a href="https://github.com/ros2/rosbag2">rosbag2 (GitHub)</a></p>                                                            |
| **ROS Command-Line Tools (`ros*` / `ros2 *`)**                    | Suite of command-line utilities for introspecting and interacting with a running ROS system: listing topics, publishing messages, calling services, viewing node info, managing parameters, etc 12.           | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/ROS/CommandLineTools">ROS CLI Tools (ROS Wiki)</a><br><a href="https://docs.ros.org/en/rolling/Tutorials/Beginner-CLI-Tools.html">ROS 2 CLI Tools Docs</a></p> |
| **PlotJuggler**                                                   | A Qt-based tool for visualizing time series data, particularly useful for plotting data from ROS topics or `rosbag` files. More feature-rich than `rqt_plot` 1.                                               | ROS 1, ROS 2   | [PlotJuggler (GitHub)](https://github.com/facontidavide/PlotJuggler)                                                                                                                           |
| **Foxglove Studio**                                               | Integrated visualization and debugging desktop/web app for robotics data. Combines functionality of tools like RViz, rqt, and more. Supports ROS 1 & 2, MCAP 2.                                               | ROS 1, ROS 2   | [Foxglove Studio](https://foxglove.dev/studio)                                                                                                                                                 |
| **Webviz (Cruise)**                                               | Web-based application for inspecting and visualizing ROS 1 bag files 1.                                                                                                                                       | ROS 1          | <p><a href="https://webviz.io/">Webviz Official Site</a><br><a href="https://github.com/cruise-automation/webviz">Webviz (GitHub)</a></p>                                                      |
| **`diagnostics` (`diagnostic_updater`, `diagnostic_aggregator`)** | Framework for collecting, publishing, and analyzing diagnostic data from robot hardware and software components. Helps monitor system health 12.                                                              | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/diagnostics">diagnostics (ROS Wiki)</a><br><a href="https://github.com/ros/diagnostics">diagnostics (GitHub - ROS 2)</a></p>                                   |

***

### **5. Simulation Environments & Tools**

| Package/Tool Name                                 | Description & Key Features                                                                                                                                                                            | ROS Version(s)    | Primary Link/Resource                                                                                                                                                                                                                                                              |
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Gazebo (Classic & Ignition/Gazebo Sim)**        | A powerful 3D robotics simulator with physics engines, sensor simulation, and extensive ROS integration via `gazebo_ros_pkgs` (ROS 1) or `ros_gz` (ROS 2) 12. Ignition Gazebo is the next generation. | ROS 1, ROS 2      | <p><a href="https://gazebosim.org/">Gazebo Simulator</a><br><a href="http://classic.gazebosim.org/">Gazebo Classic</a><br><a href="http://wiki.ros.org/gazebo_ros_pkgs">gazebo\_ros\_pkgs (ROS Wiki)</a><br><a href="https://github.com/gazebosim/ros_gz">ros\_gz (GitHub)</a></p> |
| **Webots**                                        | A professional open-source robot simulator widely used for R\&D and education. Provides ROS and ROS 2 interfaces 12.                                                                                  | ROS 1, ROS 2      | <p><a href="https://cyberbotics.com/">Webots</a><br><a href="http://wiki.ros.org/webots_ros">webots\_ros (ROS Wiki)</a><br><a href="http://wiki.ros.org/webots_ros2">webots\_ros2 (ROS Wiki)</a></p>                                                                               |
| **Unity Robotics Hub**                            | Tools, tutorials, and resources for robotics simulation in the Unity game engine, including high-performance communication with ROS/ROS 2 12.                                                         | ROS 1, ROS 2      | [Unity Robotics Hub (GitHub)](https://github.com/Unity-Technologies/Unity-Robotics-Hub)                                                                                                                                                                                            |
| **NVIDIA Isaac Sim**                              | NVIDIA’s robotics simulation application and synthetic data generation tool, built on Omniverse. Offers photorealistic rendering and physics simulation with ROS/ROS 2 support 1.                     | ROS 1, ROS 2      | [NVIDIA Isaac Sim](https://developer.nvidia.com/isaac-sim)                                                                                                                                                                                                                         |
| **CoppeliaSim (formerly V-REP)**                  | A versatile and scalable robot simulation framework with ROS and ROS 2 interfaces 1.                                                                                                                  | ROS 1, ROS 2      | [CoppeliaSim](https://www.coppeliarobotics.com/)                                                                                                                                                                                                                                   |
| **AirSim (Microsoft)**                            | Open-source simulator for autonomous vehicles (drones, cars) based on Unreal Engine, with ROS support 1.                                                                                              | ROS 1, ROS 2      | [AirSim (GitHub)](https://github.com/microsoft/AirSim)                                                                                                                                                                                                                             |
| **CARLA Simulator**                               | Open-source simulator for autonomous driving research, built on Unreal Engine, with ROS integration 1.                                                                                                | ROS 1, ROS 2      | [CARLA Simulator (GitHub)](https://github.com/carla-simulator/carla)                                                                                                                                                                                                               |
| **Habitat-Sim**                                   | A flexible, high-performance 3D simulator for embodied AI research (navigation, instruction following) with a Python API 1.                                                                           | Python            | [Habitat-Sim (GitHub)](https://github.com/facebookresearch/habitat-sim)                                                                                                                                                                                                            |
| **PyBullet**                                      | Python bindings for the Bullet Physics SDK, enabling quick prototyping of robotics, reinforcement learning, and VR 1.                                                                                 | Python            | <p><a href="https://pybullet.org/">PyBullet</a><br><a href="https://github.com/bulletphysics/bullet3">Bullet Physics (GitHub)</a></p>                                                                                                                                              |
| **Stage (`stage_ros`)**                           | A lightweight 2D multi-robot simulator, suitable for testing 2D navigation and SLAM algorithms with less computational overhead than 3D simulators 1.                                                 | ROS 1             | [stage\_ros (ROS Wiki)](http://wiki.ros.org/stage_ros)                                                                                                                                                                                                                             |
| **ARGoS**                                         | A physics-based simulator designed for large-scale heterogeneous robot swarms 1.                                                                                                                      | C++               | [ARGoS (GitHub)](https://github.com/ilpincy/argos3)                                                                                                                                                                                                                                |
| **MORSE (Modular Open Robots Simulation Engine)** | A generic simulator for academic robotics, allowing simulation of small to large indoor and outdoor environments, with various robots and sensors 1.                                                  | ROS 1 (primarily) | <p><a href="https://www.openrobots.org/morse/">MORSE Simulator</a><br><a href="https://github.com/morse-simulator/morse">MORSE (GitHub)</a></p>                                                                                                                                    |

***

### **6. Navigation, SLAM & Localization (Mobile Robots)**

Core packages for enabling mobile robots to perceive their environment, determine their location, build maps, and move autonomously.

| Package/Stack Name                                                | Description & Key Features                                                                                                                                                                                 | ROS Version(s)                 | Primary Link/Resource                                                                                                                                                                                                                             |
| ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Navigation Stack (ROS 1) / Navigation2 (`nav2_bringup`, etc.)** | Comprehensive software stacks for 2D mobile robot navigation. Includes global/local planners, costmap layers, localization (AMCL), recovery behaviors 12. `nav2_bringup` is key for launching Navigation2. | ROS 1, ROS 2                   | <p><a href="http://wiki.ros.org/navigation">Navigation (ROS Wiki)</a><br><a href="https://navigation.ros.org/">Navigation2 Official Site</a><br><a href="https://github.com/ros-planning/navigation2">Navigation2 (GitHub)</a></p>                |
| **AMCL (Adaptive Monte Carlo Localization)**                      | A probabilistic 2D localization algorithm using a particle filter to track a robot's pose against a known map, based on sensor data (typically laser scans) and odometry 12.                               | ROS 1, ROS 2                   | <p><a href="http://wiki.ros.org/amcl">AMCL (ROS Wiki)</a> (ROS 1)<br><a href="https://github.com/ros-planning/navigation2/tree/main/nav2_amcl">nav2\_amcl (GitHub)</a> (ROS 2)</p>                                                                |
| **GMapping (`slam_gmapping`)**                                    | A widely used laser-based SLAM (Simultaneous Localization and Mapping) algorithm that creates 2D occupancy grid maps using a Rao-Blackwellized particle filter 12.                                         | ROS 1, (ROS 2 community ports) | <p><a href="http://wiki.ros.org/gmapping">GMapping (ROS Wiki)</a><br><a href="https://github.com/Project-MANAS/slam_gmapping">slam\_gmapping (ROS 2 Port - GitHub)</a></p>                                                                        |
| **Cartographer ROS (`cartographer_ros`)**                         | Google's system for real-time SLAM in 2D and 3D across multiple platforms and sensor configurations (LiDAR, IMU, odometry, cameras). Produces globally consistent maps 12.                                 | ROS 1, ROS 2                   | [Cartographer ROS (GitHub)](https://github.com/cartographer-project/cartographer_ros)                                                                                                                                                             |
| **SLAM Toolbox**                                                  | A set of tools and capabilities for 2D SLAM (based on Karto), offering features like lifelong mapping, map editing, robust localization, and map merging 12.                                               | ROS 1, ROS 2                   | [SLAM Toolbox (GitHub)](https://github.com/SteveMacenski/slam_toolbox)                                                                                                                                                                            |
| **Hector SLAM (`hector_slam`)**                                   | A SLAM approach primarily for laser scanners that can operate without odometry, relying on high scan matching rates. Useful for platforms like handheld mapping systems or UAVs 1.                         | ROS 1                          | [Hector SLAM (ROS Wiki)](http://wiki.ros.org/hector_slam)                                                                                                                                                                                         |
| **ORB-SLAM2 / ORB-SLAM3 (ROS Wrappers)**                          | Highly acclaimed visual SLAM systems that compute camera trajectory and a sparse 3D reconstruction with monocular, stereo, or RGB-D cameras 12. ROS wrappers facilitate integration.                       | ROS 1, ROS 2 (community ports) | <p><a href="https://github.com/UZ-SLAMLab/ORB_SLAM2">ORB-SLAM2 (GitHub)</a><br><a href="https://github.com/UZ-SLAMLab/ORB_SLAM3">ORB-SLAM3 (GitHub)</a><br><a href="https://github.com/alsora/ros2-ORB_SLAM2">ros2-ORB\_SLAM2 (GitHub)</a></p>    |
| **RTAB-Map (Real-Time Appearance-Based Mapping)**                 | Graph-based SLAM for RGB-D and stereo cameras, capable of large-scale, long-term mapping with loop closure. Generates 2D occupancy grids and 3D point clouds 1.                                            | ROS 1, ROS 2                   | <p><a href="http://wiki.ros.org/rtabmap_ros">RTAB-Map ROS (ROS Wiki)</a><br><a href="https://github.com/introlab/rtabmap_ros">RTAB-Map ROS (GitHub)</a></p>                                                                                       |
| **`robot_localization`**                                          | Provides sensor fusion (EKF, UKF) for estimating a robot's 3D pose by fusing odometry, IMU, GPS, and visual odometry data 1.                                                                               | ROS 1, ROS 2                   | <p><a href="http://wiki.ros.org/robot_localization">robot\_localization (ROS Wiki)</a><br><a href="https://github.com/cra-ros-pkg/robot_localization">robot\_localization (GitHub - ROS 2)</a></p>                                                |
| **`move_base` (ROS 1)**                                           | The central node in the ROS 1 Navigation Stack that links global/local planners with a costmap to achieve navigation goals. Replaced by a modular architecture in Navigation2 1.                           | ROS 1                          | [move\_base (ROS Wiki)](http://wiki.ros.org/move_base)                                                                                                                                                                                            |
| **`teb_local_planner`**                                           | A local planner plugin for `move_base` (ROS 1) and Navigation2 (ROS 2) that optimizes trajectories considering time, obstacles, and kinematic constraints (Timed Elastic Band) 1.                          | ROS 1, ROS 2                   | [teb\_local\_planner (ROS Wiki)](http://wiki.ros.org/teb_local_planner)                                                                                                                                                                           |
| **DWB\_controller (Navigation2)**                                 | A highly configurable local planner in Navigation2, successor to DWA and Eband planners, using plugin-based critics to score trajectories 2.                                                               | ROS 2                          | [DWB Controller Docs (Navigation2)](https://navigation.ros.org/plugins/controller/dwb_controller.html)                                                                                                                                            |
| **OctoMap (`octomap_server`, `octomap_mapping`)**                 | Efficient probabilistic 3D mapping framework based on octrees. Represents free, occupied, and unknown space. `octomap_server` provides ROS integration 12. `octomap_server2` is a ROS 2 port.              | ROS 1, ROS 2                   | <p><a href="https://octomap.github.io/">OctoMap Official Site</a><br><a href="https://github.com/OctoMap/octomap_mapping">octomap\_mapping (GitHub)</a><br><a href="https://github.com/OctoMap/octomap_server2">octomap\_server2 (GitHub)</a></p> |
| **LIO-SAM (`LIO-SAM`)**                                           | A tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping system for robust navigation in complex environments 1. ROS packages available.                                                        | ROS 1                          | [LIO-SAM (GitHub)](https://github.com/TixiaoShan/LIO-SAM)                                                                                                                                                                                         |
| **FAST\_LIO (`FAST_LIO`)**                                        | A computationally efficient and robust Lidar-inertial odometry package 1. ROS packages available.                                                                                                          | ROS 1                          | [FAST\_LIO (GitHub)](https://github.com/hku-mars/FAST_LIO)                                                                                                                                                                                        |
| **VINS-Mono / VINS-Fusion**                                       | Robust and versatile monocular/stereo visual-inertial state estimator 1. ROS packages available.                                                                                                           | ROS 1                          | <p><a href="https://github.com/HKUST-Aerial-Robotics/VINS-Mono">VINS-Mono (GitHub)</a><br><a href="https://github.com/HKUST-Aerial-Robotics/VINS-Fusion">VINS-Fusion (GitHub)</a></p>                                                             |
| **LeGO-LOAM**                                                     | Lightweight and Ground-Optimized Lidar Odometry and Mapping for UAVs or ground vehicles 1. ROS packages available.                                                                                         | ROS 1                          | [LeGO-LOAM (GitHub)](https://github.com/RobustFieldAutonomyLab/LeGO-LOAM)                                                                                                                                                                         |
| **NDT (Normal Distributions Transform)**                          | A scan matching algorithm often used for localization and mapping, particularly with 3D LiDAR data. Various ROS implementations exist.                                                                     | ROS 1, ROS 2                   | *(Search "NDT SLAM ROS" or "NDT localization ROS")*                                                                                                                                                                                               |
| **ICP (Iterative Closest Point)**                                 | A widely used algorithm for aligning 3D point clouds. Used in SLAM and registration tasks. PCL provides implementations.                                                                                   | ROS 1, ROS 2 (via PCL)         | *(Refer to PCL ROS packages)*                                                                                                                                                                                                                     |

***

### **7. Manipulation, Control & Kinematics (Robot Arms)**

| Package/Stack Name                                              | Description & Key Features                                                                                                                                                                                                                                  | ROS Version(s)          | Primary Link/Resource                                                                                                                                                                     |
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **MoveIt**                                                      | A comprehensive and widely used open-source software platform for mobile manipulation. Incorporates motion planning, manipulation, 3D perception, kinematics, control, and navigation 12.                                                                   | ROS 1, ROS 2            | [MoveIt Official Site](https://moveit.ros.org/)                                                                                                                                           |
| **ros\_control / ros2\_control**                                | A framework for real-time robot control in ROS/ROS 2. It provides a set of controllers, transmissions, and hardware interfaces, making controllers generic and reusable across different robots. Essential for interfacing with physical robot hardware 12. | ROS 1, ROS 2            | <p><a href="http://wiki.ros.org/ros_control">ros\_control (ROS Wiki)</a><br><a href="https://control.ros.org/">ros2\_control Official Site</a></p>                                        |
| **`ros_controllers` / `ros2_controllers`**                      | A library of standard controllers for `ros_control`/`ros2_control`, including joint state, effort, velocity, position, and joint trajectory controllers 12.                                                                                                 | ROS 1, ROS 2            | <p><a href="http://wiki.ros.org/ros_controllers">ros\_controllers (ROS Wiki)</a><br><a href="https://github.com/ros-controls/ros2_controllers">ros2\_controllers (GitHub)</a></p>         |
| **KDL (Orocos Kinematics and Dynamics Library) (`orocos_kdl`)** | C++ library for kinematics and dynamics of rigid body systems. Provides solvers for FK, IK (Jacobian-based), dynamics. Often used by MoveIt. ROS wrappers like `python_kdl` and `kdl_parser` exist 12.                                                      | ROS 1, ROS 2            | <p><a href="https://github.com/orocos/orocos_kinematics_dynamics">Orocos KDL (GitHub)</a> (Core)<br><a href="http://wiki.ros.org/kdl_parser">kdl\_parser (ROS Wiki)</a> (ROS wrapper)</p> |
| **Trac-IK (`trac_ik_kinematics_plugin`)**                       | An inverse kinematics solver, often faster and more robust than the default KDL solver, especially near singularities or for redundant manipulators. Usable as a MoveIt plugin 1.                                                                           | ROS 1, ROS 2            | [Trac-IK (Bitbucket)](https://bitbucket.org/traclabs/trac_ik/src/master/)                                                                                                                 |
| **IKFast (OpenRAVE)**                                           | A powerful analytical inverse kinematics solver generator. Generates optimized C++ code for fast, reliable IK solutions for specific robot kinematic chains by analyzing the URDF 1.                                                                        | ROS 1 (often used with) | <p><a href="http://openrave.org/docs/latest_stable/openravepy/ikfast/">OpenRAVE IKFast</a><br><em>(Search tutorials on generating IKFast plugins for MoveIt)</em></p>                     |
| **Pinocchio**                                                   | C++ library with Python bindings for poly-articulated systems based on rigid body dynamics. Implements efficient algorithms for kinematics, dynamics, and their analytical derivatives. Supports URDF 1.                                                    | C++/Python              | [Pinocchio (GitHub)](https://github.com/stack-of-tasks/pinocchio)                                                                                                                         |
| **Robotics Library (RL)**                                       | A self-contained C++ library for robot kinematics, motion planning, and control 1.                                                                                                                                                                          | C++                     | <p><a href="https://www.roboticslibrary.org/">Robotics Library Official Site</a><br><a href="https://github.com/roboticslibrary/rl">Robotics Library (GitHub)</a></p>                     |
| **RBDL (Rigid Body Dynamics Library)**                          | C++ library with Python bindings for efficient forward and inverse dynamics of articulated rigid body systems. Supports URDF 1.                                                                                                                             | C++/Python              | [RBDL (GitHub)](https://github.com/rbdl/rbdl)                                                                                                                                             |
| **OMPL (Open Motion Planning Library)**                         | A library of sampling-based motion planning algorithms (RRT, PRM, etc.). Heavily used by MoveIt for path planning 1.                                                                                                                                        | C++                     | <p><a href="https://ompl.kavrakilab.org/">OMPL Official Site</a><br><a href="https://github.com/ompl/ompl">OMPL (GitHub)</a></p>                                                          |
| **GraspIt!**                                                    | A simulation environment specifically for robotic grasping research. Allows for designing robot hands, importing object models, and testing grasp planning algorithms 1.                                                                                    | ROS 1 (integration)     | [GraspIt! Simulator (GitHub)](https://graspit-simulator.github.io/)                                                                                                                       |
| **`agile_grasp`**                                               | ROS package for finding antipodal grasps in 3D point clouds, useful for robotic picking applications 1.                                                                                                                                                     | ROS 1                   | [agile\_grasp (GitHub)](https://github.com/atenpas/agile_grasp)                                                                                                                           |
| **`moveit_simple_grasps`**                                      | (ROS 1) A basic grasp generator for MoveIt, for simple objects like blocks or cylinders 1.                                                                                                                                                                  | ROS 1                   | [moveit\_simple\_grasps (GitHub)](https://github.com/davetcoleman/moveit_simple_grasps)                                                                                                   |
| **PID Controller (`pid` package / `ros2_control` PID)**         | Packages/implementations providing Proportional-Integral-Derivative (PID) controllers for ROS/ROS 2, widely used for closed-loop control of joints or other systems 12.                                                                                     | ROS 1, ROS 2            | <p><a href="http://wiki.ros.org/pid">pid (ROS Wiki - ROS 1)</a><br><a href="https://github.com/ros-controls/ros2_controllers">ros2\_controllers (GitHub - includes PID)</a></p>           |
| **`ros2_SimRealRobotControl`**                                  | ROS 2 (Humble) packages for controlling various industrial and collaborative robots (ABB IRB-120, UR3) in simulation (Gazebo) and real-world, using MoveIt!2 2.                                                                                             | ROS 2                   | [ros2\_SimRealRobotControl (GitHub)](https://github.com/IFRA-Cranfield/ros2_SimRealRobotControl)                                                                                          |
| **PyKDL**                                                       | Python bindings for the Orocos KDL library, allowing kinematic calculations in Python.                                                                                                                                                                      | Python                  | <p><code><http://wiki.ros.org/pykdl_utils></code> (ROS wrapper example)<br><em>(Usually installed with KDL ROS packages)</em></p>                                                         |

***

### **8. Perception (Vision, Point Clouds, Sensors)**

Libraries and packages crucial for enabling robots to "see" and interpret their environment.

| Package/Stack Name                  | Description & Key Features                                                                                                                                                                                                                | ROS Version(s) | Primary Link/Resource                                                                                                                                                                |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **OpenCV (`vision_opencv`)**        | ROS wrappers for the OpenCV library. `cv_bridge` converts between ROS images and OpenCV images. `image_geometry` handles camera models 12.                                                                                                | ROS 1, ROS 2   | <p><a href="https://opencv.org/">OpenCV Official Site</a><br><a href="http://wiki.ros.org/vision_opencv">vision\_opencv (ROS Wiki)</a></p>                                           |
| **PCL ROS (`perception_pcl`)**      | ROS integration for the Point Cloud Library (PCL), for processing 3D point cloud data (filtering, segmentation, registration, etc.) 1.                                                                                                    | ROS 1, ROS 2   | <p><a href="https://pointclouds.org/">Point Cloud Library (PCL)</a><br><a href="http://wiki.ros.org/perception_pcl">perception\_pcl (ROS Wiki)</a></p>                               |
| **`image_common`**                  | Metapackage including `image_transport` (compressed image transport), `camera_info_manager` (handles camera calibration data), `cv_bridge` 12.                                                                                            | ROS 1, ROS 2   | [image\_common (ROS Wiki)](http://wiki.ros.org/image_common)                                                                                                                         |
| **`image_pipeline` (ROS 1)**        | (ROS 1) Collection of nodes for common image processing: `camera_calibration`, `image_proc` (rectification, color processing), `depth_image_proc` (depth to point cloud) 1. Functionality often split or integrated differently in ROS 2. | ROS 1          | [image\_pipeline (ROS Wiki)](http://wiki.ros.org/image_pipeline)                                                                                                                     |
| **`camera_calibration`**            | Tools for calibrating monocular and stereo cameras using a checkerboard pattern 12.                                                                                                                                                       | ROS 1, ROS 2   | [camera\_calibration (ROS Wiki)](http://wiki.ros.org/camera_calibration)                                                                                                             |
| **Kalibr**                          | Advanced toolbox for calibrating multiple cameras, camera-IMU systems, and rolling shutter cameras 1.                                                                                                                                     | ROS 1          | [Kalibr (GitHub)](https://github.com/ethz-asl/kalibr)                                                                                                                                |
| **`easy_handeye`**                  | ROS package wrapping hand-eye calibration routines (e.g., from ViSP) to find the transform between a robot's end-effector and a sensor 1.                                                                                                 | ROS 1, ROS 2   | [easy\_handeye (GitHub)](https://github.com/IFL-CAMP/easy_handeye)                                                                                                                   |
| **`find_object_2d`**                | Simple Qt interface to try OpenCV feature detectors/descriptors (SIFT, SURF, ORB, FAST, BRIEF) for 2D object detection 1.                                                                                                                 | ROS 1          | [find\_object\_2d (ROS Wiki)](http://wiki.ros.org/find_object_2d)                                                                                                                    |
| **AprilTag ROS (`apriltag_ros`)**   | ROS/ROS 2 wrapper for AprilTag fiducial marker detection, providing pose estimation 12.                                                                                                                                                   | ROS 1, ROS 2   | [AprilTag ROS (GitHub)](https://github.com/AprilRobotics/apriltag_ros)                                                                                                               |
| **Darknet ROS (`darknet_ros`)**     | ROS/ROS 2 wrapper for Darknet (YOLO object detection) 2.                                                                                                                                                                                  | ROS 1, ROS 2   | [Darknet ROS (GitHub)](https://github.com/leggedrobotics/darknet_ros)                                                                                                                |
| **Specific Camera Drivers**         | `realsense-ros`, `zed-ros-wrapper`/`zed-ros2-wrapper`, `libuvc_camera`, `pylon_camera` (Basler), `camera_aravis` (GigE), `ros2_raspicam_node`, `ros_astra_camera`, `ros2_usb_camera` 12.                                                  | ROS 1, ROS 2   | *(Search ROS Index or GitHub for specific camera models, e.g.,* [*realsense-ros (GitHub)*](https://github.com/IntelRealSense/realsense-ros)*)*                                       |
| **Specific LiDAR Drivers**          | `velodyne_driver`, `sick_scan`/`sick_scan2`, `urg_node`, `ouster_ros`/`ros2_ouster_drivers`, `ydlidar_ros2_driver`, `hesai_lidar`, `livox_ros_driver` 12.                                                                                 | ROS 1, ROS 2   | *(Search ROS Index or GitHub for specific LiDAR models, e.g.,* [*Velodyne (GitHub)*](https://github.com/ros-drivers/velodyne)*)*                                                     |
| **ViSP (`visp_ros`)**               | Visual Servoing Platform with ROS integration for vision-based control tasks 1.                                                                                                                                                           | ROS 1, ROS 2   | <p><a href="https://visp.inria.fr/">ViSP Official Site</a><br><a href="http://wiki.ros.org/visp_ros">visp\_ros (ROS Wiki)</a></p>                                                    |
| **`image_view`**                    | A simple tool to display images published on a ROS topic 1.                                                                                                                                                                               | ROS 1, ROS 2   | [image\_view (ROS Wiki)](http://wiki.ros.org/image_view)                                                                                                                             |
| **`stereo_image_proc`**             | Processes stereo camera images to produce disparity images and point clouds 1.                                                                                                                                                            | ROS 1, ROS 2   | [stereo\_image\_proc (ROS Wiki)](http://wiki.ros.org/stereo_image_proc)                                                                                                              |
| **`depth_image_proc`**              | Processes depth images from RGB-D cameras, enabling conversion to point clouds, registration with color images, etc 1.                                                                                                                    | ROS 1, ROS 2   | [depth\_image\_proc (ROS Wiki)](http://wiki.ros.org/depth_image_proc)                                                                                                                |
| **Basalt VIO (`basalt_ros2`)**      | ROS 2 wrapper for Basalt Visual-Inertial Odometry 2.                                                                                                                                                                                      | ROS 2          | <p><a href="https://github.com/VladyslavUsenko/basalt-mirror">Basalt (Core - GitHub)</a><br><a href="https://github.com/TUM-AVS/basalt_ros2">basalt\_ros2 (Wrapper - GitHub)</a></p> |
| **`fiducials` (Ubiquity Robotics)** | SLAM and localization using fiducial markers (e.g., ArUco) 1.                                                                                                                                                                             | ROS 1          | [fiducials (GitHub)](https://github.com/UbiquityRobotics/fiducials)                                                                                                                  |
| **`image_recognition_openvino`**    | ROS2 wrapper for OpenVINO™ toolkit for image recognition tasks.                                                                                                                                                                           | ROS 2          | `https://github.com/intel/ros2_openvino_toolkit/tree/main/openvino_node_demos/image_recognition_openvino`                                                                            |

***

### **9. Hardware Interfacing, Drivers & Communication**

| Package/Tool Name                                       | Description & Key Features                                                                                                                                                 | ROS Version(s) | Primary Link/Resource                                                                                                                                                                                                                                                         |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`joy` / `joystick_drivers`**                          | Generic ROS driver for joysticks/gamepads, publishing `sensor_msgs/Joy`. `teleop_twist_joy` converts Joy to Twist for robot control 12.                                    | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/joy">joy (ROS Wiki)</a><br><a href="https://github.com/ros-drivers/joystick_drivers">joystick\_drivers (GitHub - ROS 2)</a><br><a href="http://wiki.ros.org/teleop_twist_joy">teleop\_twist\_joy (ROS Wiki)</a></p>                           |
| **`rosserial`**                                         | (ROS 1) ROS communication with microcontrollers (Arduino, ESP32) over serial, allowing MCUs to act as ROS nodes 1.                                                         | ROS 1          | <p><a href="http://wiki.ros.org/rosserial">rosserial (ROS Wiki)</a><br><a href="http://wiki.ros.org/rosserial_arduino">rosserial\_arduino (ROS Wiki)</a></p>                                                                                                                  |
| **`micro-ROS`**                                         | (ROS 2) Framework to bring ROS 2 to microcontrollers (STM32, ESP32, RPi Pico). Uses Micro XRCE-DDS. Supported by FreeRTOS, Zephyr, NuttX 2. Includes `micro_ros_arduino` . | ROS 2          | <p><a href="https://micro.ros.org/">micro-ROS Official Site</a><br><a href="https://github.com/micro-ROS">micro-ROS (GitHub)</a></p>                                                                                                                                          |
| **`ros_canopen` / `ros2_canopen`**                      | Packages for integrating CANopen devices (common in industrial automation) with ROS/ROS 2 1.                                                                               | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/ros_canopen">ros\_canopen (ROS Wiki)</a><br><a href="https://github.com/ros-industrial/ros2_canopen">ros2\_canopen (GitHub)</a></p>                                                                                                           |
| **SocketCAN (`socketcan_interface`, `ros2_socketcan`)** | Provides an interface to CAN bus devices using SocketCAN drivers in Linux 1.                                                                                               | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/socketcan_interface">socketcan\_interface (ROS Wiki)</a><br><a href="https://github.com/autowarefoundation/ros2_socketcan">ros2\_socketcan (GitHub)</a></p>                                                                                   |
| **EtherCAT (`ros_ethercat`, `ethercat_driver_ros2`)**   | Packages for interfacing with EtherCAT devices, a high-performance industrial Ethernet protocol 1.                                                                         | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/ros_ethercat">ros\_ethercat (ROS Wiki)</a><br><a href="https://github.com/ICRAR/ethercat_driver_ros2">ethercat\_driver\_ros2 (GitHub)</a></p>                                                                                                 |
| **Modbus (`modbus`, `modbus_ros`)**                     | Libraries and ROS wrappers for Modbus TCP/IP and serial communication, common in industrial settings 1.                                                                    | ROS 1, ROS 2   | <p><a href="https://github.com/stephane/libmodbus">libmodbus</a> (Core library)<br><a href="http://wiki.ros.org/modbus">modbus (ROS Wiki - ROS 1)</a></p>                                                                                                                     |
| **ROS-Industrial (`ros_industrial`)**                   | Open-source project extending ROS to industrial robots and automation (Fanuc, ABB, Motoman, Universal Robots). `Universal_Robots_ROS2_Driver` is a key example 12.         | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/Industrial">ROS-Industrial (ROS Wiki)</a><br><a href="https://rosindustrial.org/">ROS-Industrial Consortium</a><br><a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver">Universal\_Robots\_ROS2\_Driver (GitHub)</a></p> |
| **Dynamixel SDK / Dynamixel Workbench**                 | Libraries and ROS packages for controlling Dynamixel smart servo motors 1.                                                                                                 | ROS 1, ROS 2   | <p><a href="https://github.com/ROBOTIS-GIT/DynamixelSDK">Dynamixel SDK (GitHub)</a><br><a href="http://wiki.ros.org/dynamixel_workbench">Dynamixel Workbench (ROS Wiki)</a></p>                                                                                               |
| **HRIM (Hardware Robot Information Model)**             | A standard interface for robot modules, aiming to improve interoperability in modular robotics 2.                                                                          | ROS 2          | <p><a href="https://github.com/erlerobot/HRIM">HRIM (GitHub - Erle Robotics, original)</a><br><em>(Search for current community efforts)</em></p>                                                                                                                             |
| **`serial` (ROS 1) / `serial_driver` (ROS 2)**          | Libraries for serial port communication, often used for custom hardware interfaces. `serial_driver` in ROS 2 is part of `ros-drivers`.                                     | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/serial">serial (ROS Wiki - ROS 1)</a><br><a href="https://github.com/ros-drivers/serial">ros-drivers/serial (GitHub - ROS 2)</a></p>                                                                                                          |
| **Husarnet VPN**                                        | P2P, secure VPN for ROS & ROS 2, facilitating multi-robot communication over various networks 2.                                                                           | ROS 1, ROS 2   | [Husarnet](https://husarnet.com/)                                                                                                                                                                                                                                             |
| **FIROS2**                                              | ROS 2 integrable tool for intercommunication between ROS 2 and FIWARE (open source platform for smart solutions) 2.                                                        | ROS 2          | [FIROS (GitHub)](https://github.com/FIWARE/firos)                                                                                                                                                                                                                             |
| **PX4 ROSCom (`mavros`, `px4_ros_com`)**                | `mavros` (ROS 1) and `px4_ros_com` / `px4_msgs` (ROS 2) bridge for communication between ROS/ROS 2 and PX4 Autopilot (for drones) 12.                                      | ROS 1, ROS 2   | <p><a href="http://wiki.ros.org/mavros">mavros (ROS Wiki)</a><br><a href="https://github.com/PX4/px4_ros_com">px4\_ros\_com (GitHub)</a></p>                                                                                                                                  |
| **ODrive (`odrive_ros2_control`)**                      | ROS 2 driver for ODrive motor controllers 2.                                                                                                                               | ROS 2          | [odrive\_ros2\_control (GitHub)](https://github.com/Factor-Robotics/odrive_ros2_control)                                                                                                                                                                                      |
| **Phidgets ROS (`phidgets_drivers`)**                   | ROS packages for Phidgets sensors and interface kits.                                                                                                                      | ROS 1, ROS 2   | [phidgets\_drivers (GitHub)](https://github.com/ros-drivers/phidgets_drivers)                                                                                                                                                                                                 |

***

### **10. Machine Learning & AI Integration**

Packages that bridge ROS with popular machine learning frameworks.

| Package/Stack Name                                           | Description & Key Features                                                                                                                                          | ROS Version(s) | Primary Link/Resource                                                                                                                                                                                      |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **TensorFlow ROS (`tensorflow_ros_cpp`, `ros2-tensorflow`)** | Bindings and wrappers for using TensorFlow within ROS/ROS 2 C++ or Python nodes, often for computer vision and perception tasks 12.                                 | ROS 1, ROS 2   | <p><a href="https://github.com/tradr-project/tensorflow_ros_cpp">tensorflow\_ros\_cpp (GitHub - ROS 1)</a><br><a href="https://github.com/niosop/ros2-tensorflow">ros2-tensorflow (GitHub - ROS 2)</a></p> |
| **PyTorch ROS (`ros2_pytorch`, `ros2_pytorch_cuda`)**        | ROS 2 nodes for computer vision tasks using PyTorch, with CUDA support extensions 2.                                                                                | ROS 2          | <p><a href="https://github.com/ika-rwth-aachen/ros2_pytorch">ros2\_pytorch (GitHub)</a><br><a href="https://github.com/NVIDIA-AI-IOT/ros2_pytorch_cuda">ros2\_pytorch\_cuda (GitHub)</a></p>               |
| **OpenAI Gym ROS (`openai_ros`, `gym-gazebo`)**              | (ROS 1) Provides a common structure and tools for training reinforcement learning agents with robots in simulation (e.g., Gazebo) using the OpenAI Gym interface 1. | ROS 1          | <p><a href="http://wiki.ros.org/openai_ros">openai\_ros (ROS Wiki)</a><br><a href="https://github.com/erlerobot/gym-gazebo">gym-gazebo (GitHub)</a></p>                                                    |
| **OpenVINO Toolkit ROS (`ros2_openvino_toolkit`)**           | ROS 2 wrapper for Intel's OpenVINO™ toolkit for optimizing and deploying deep learning inference for computer vision applications 2.                                | ROS 2          | [ros2\_openvino\_toolkit (GitHub)](https://github.com/intel/ros2_openvino_toolkit)                                                                                                                         |
| **Intel Movidius NCS ROS (`ros2_intel_movidius_ncs`)**       | ROS 2 wrapper for Movidius™ Neural Compute Stick (NCS) Neuronal Compute API, for hardware-accelerated deep learning inference 2.                                    | ROS 2          | [ros2\_intel\_movidius\_ncs (GitHub)](https://github.com/intel/ros2_intel_movidius_ncs)                                                                                                                    |
| **`easy_perception_deployment`**                             | (ROS 2) Package aimed at accelerating training and deployment of Computer Vision models for industrial applications 2.                                              | ROS 2          | *(See Awesome ROS 2 list for potential links - specific public repo may vary)*                                                                                                                             |
| **`easy_manipulation_deployment`**                           | (ROS 2) Package that integrates perception elements to establish an end-to-end pick and place task, likely leveraging ML for perception 2.                          | ROS 2          | *(See Awesome ROS 2 list for potential links - specific public repo may vary)*                                                                                                                             |
| **`ros2_object_analytics`**                                  | ROS 2 wrapper for real-time object detection, localization, and tracking, often leveraging underlying ML models 2.                                                  | ROS 2          | [ros2\_object\_analytics (GitHub)](https://github.com/intel/ros2_object_analytics)                                                                                                                         |
| **Edge Impulse for Linux ROS Node**                          | Brings Edge Impulse's embedded machine learning capabilities to ROS, enabling ML on edge devices 2.                                                                 | ROS 2          | `https://github.com/edgeimpulse/linux-ros` (Check for ROS 2 specific branches/info)                                                                                                                        |

This expanded guide provides a more comprehensive starting point for exploring the rich ecosystem of ROS and ROS 2 packages. The "Awesome" lists from which this is derived are excellent resources for discovering even more specialized tools and libraries. Always refer to the official documentation for each package for the most up-to-date information and usage guidelines.

ShareExportRewrite<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://panav.gitbook.io/robotics-handbook/ros-2/important-packages-and-libraries.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
