The Smart Arm Stack (sas) is a modular robotics software framework designed for rapid prototyping,
testing, and deployment of robot control algorithms.
See the website below for installation instructions and docker images.
- Website: https://smartarmstack.github.io
- API documentation: https://marinholab.github.io/sas_devel/index.html
For bug reports or issues in any of the packages, please use the following GitHub issue tracker:
The core philosophy of sas_devel is to separate application logic from ROS 2 communication using a client–server architecture. Developers interact through clients and servers, which handle all ROS 2 communication internally, eliminating the need to manually create publishers, subscribers, or services. This simplifies development and allows the same code to run seamlessly across hardware and simulation.
As a rule, each sas functionality is available via a public cpp header in the relevant package. The user of each
functionality uses a client or server as applicable. For most client--server pairs, a pybind11 wrapper allows the
same functionality in python.
Below, each package is listed. For more details, see the README.md in each package.
| Package | Summary |
|---|---|
| sas_core | Core C++ library providing fundamental functionality independent of ROS 2. |
| sas_common | Shared ROS 2 utilities and helper abstractions used across all packages. |
| sas_msgs | Wrapper package providing simplified or legacy-compatible ROS message definitions. |
| sas_conversions | Utilities for converting ROS 2 messages into primitive and DQ Robotics types. |
| sas_robot_driver | Framework for configuration-space robot control via ROS 2 client–server nodes. |
| sas_robot_kinematics | Framework for task-space (kinematic-level) robot monitoring and control. |
| sas_datalogger | Tools for logging and recording system data during experiments or execution. |
| sas_operator_side_receiver | Receives operator-side input data and exposes it as ROS 2 interfaces. |
| sas_patient_side_manager | Coordinates teleoperation by linking operator inputs with multiple robots. |
| sas_robot_kinematics_constrained_multiarm | Provides centralized kinematic control for multiple robots with constraints. |
Vendor packages provide concrete implementations of the sas_robot_driver interface for specific robot manufacturers or simulation environments.
| Package | Summary |
|---|---|
| sas_robot_driver_ur | Client–server driver implementation for controlling Universal Robots (UR) manipulators. |
| sas_robot_driver_kuka | Client–server driver implementation for controlling KUKA robotic manipulators. |
| sas_robot_driver_coppeliasim | Client–server driver implementation for CoppeliaSim simulation. |
| sas_robot_driver_gazebo | Client–server driver implementation for Gazebo simulation. |
Packages to clone as a template and edit to your needs. They include simulation and hardware examples. Videos only render on the website or GitHub, not in these doxygen docs.
| Package | Summary |
|---|---|
| sas_kuka_control_template | Template package for controlling KUKA robots using the sas_robot_driver_kuka interface. |
| sas_ur_control_template | Template package for controlling UR robots using the sas_robot_driver_ur interface. |
dqrobotics: https://github.com/dqrobotics/containerros: https://github.com/marinholab/rosgazebo: https://github.com/marinholab/gazebo
PPAanddocker: https://github.com/SmartArmStack/smart_arm_stack_ROS2- website devel: https://github.com/SmartArmStack/SmartArmStack.github.io