The SmartArmStack (sas) has been developed (with this name) in support of the SmartArm robot described in Marinho et al. (2020),
at the University of Tokyo.
It has then been used in dozens of projects and updated in Marinho et al. (2024) for the AI Science Platform. Please cite one
of these references if you use sas in your own work.
Focus on your application🔍
sas is a C++ framework with Python bindings to enable fast prototyping using ROS 2 toolchain.
ROS 2 where it shines✨
Split away ROS 2 code into client and server classes, communicate via ROS 2 without ROS 2 code.
Multiple robots🤖
Enjoy drivers for DensoWave, UR, and KUKA. With ongoing developments for Franka Emika and Unitree robots.
Please note that sas is originally based on developments circa 2013 by Murilo M. Marinho.
Affiliation with the University of Tokyo has ceased on December 2023 and this project is currently affiliated with
the University of Manchester.
Docker¶
docker run -it murilomarinho/sas:jazzyInstallation¶
Pre-requisites¶
Click here for the pre-requisites
ROS 2 Jazzy¶
You can refer to the official documentation at https://
docs .ros .org /en /jazzy /Installation /Ubuntu -Install -Debs .html A softer explanation is available in https://
ros2 -tutorial .readthedocs .io /en /latest /installation .html.
DQ Robotics Development Version¶
C++¶
sudo add-apt-repository ppa:dqrobotics-dev/development
sudo apt-get update
sudo apt-get install libdqrobotics libdqrobotics-interface-json11 libdqrobotics-interface-coppeliasim libdqrobotics-interface-coppeliasim-zmqPython¶
python3 -m pip install dqrobotics --pre --break-system-packagesLGPL Packages¶
The command below will add and install the sas LGPL packages via apt-get.
curl -s --compressed "https://smartarmstack.github.io/smart_arm_stack_ROS2/KEY.gpg" \
| gpg --dearmor \
| sudo tee /etc/apt/trusted.gpg.d/smartarmstack_lgpl.gpg >/dev/null
sudo curl -s --compressed -o /etc/apt/sources.list.d/smartarmstack_lgpl.list \
"https://smartarmstack.github.io/smart_arm_stack_ROS2/smartarmstack_lgpl.list"
sudo apt update
sudo apt-get install ros-jazzy-sas-*Click here for the LGPL packages information
Copyright (C) 2025 Murilo M. Marinho.
| Package | License | Description |
|---|---|---|
sas_core | LGPL | The part of the library that does not depend on ROS2. |
sas_common | LGPL | Generic ROS2 code used throughout the packages. |
sas_msgs | LGPL | A wrapper for ROS messages that were made redundant in ROS2. |
sas_conversions | LGPL | Convert ROS2 messages into float, int, or dqrobotics elements. |
sas_robot_driver | LGPL | ROS2 nodes and libraries for creating servers and clients for robot configuration-space monitoring and control. |
sas_robot_kinematics | LGPL | ROS2 nodes and libraries for creating servers and clients for kinematic-level robot task-space monitoring and control. |
sas_robot_driver_denso | LGPL | A sas_robot_driver implementation for DensoWave’s bCap controlled robots |
sas_robot_driver_kuka | LGPL | A sas_robot_driver implementation for Kuka (Sunrise cabinet, FRI) |
sas_robot_driver_ur | LGPL | A sas_robot_driver implementation for UR |
CC BY-NC 4.0 Packages¶
The command below will add and install the sas CC BY-NC 4.0 packages via apt-get. Please note that they depend on sas LGPL packages.
curl -s --compressed "https://marinholab.github.io/sas_debian_builder_noncommercial/KEY.gpg" \
| gpg --dearmor \
| sudo tee /etc/apt/trusted.gpg.d/smartarmstack_cc_by_nc.gpg >/dev/null
sudo curl -s --compressed -o /etc/apt/sources.list.d/smartarmstack_cc_by_nc.list \
"https://marinholab.github.io/sas_debian_builder_noncommercial/smartarmstack_cc_by_nc.list"
sudo apt update
sudo apt-get install ros-jazzy-sas-*Click here for the CC BY-NC 4.0 packages information
Copyright (C) 2025 Murilo M. Marinho. Licensed under CC BY-NC 4.0 for noncommercial use.
Commercial licensing available by contacting contact@uominnovationfactory
| Package | License | Description |
|---|---|---|
sas_operator_side_receiver | CC BY-NC 4.0 | Receive messages from master devices and expose them as topics in ROS2. |
sas_patient_side_manager | CC BY-NC 4.0 | Manage master devices controlling sas_robot_kinematics and clutch state space. |
sas_robot_kinematics_constrained_multiarm | CC BY-NC 4.0 | A centralised solver for multiple robots with configurable vector-field inequalities. |
Updates¶
After installing the packages with the command above, you can update them with
sudo apt-get update && sudo apt-get upgrade ros-jazzy-sas-*License¶

Figure 1:SAS and ROS2
sas has worked in a dual-licensing scheme, described in the dropdown boxes below.
Tutorials¶
Please refer to https://
Packaging¶
LGPL¶
The PPA for the LGPL version is available at https://
CC BY-NC 4.0¶
The PPA for the CC BY-NC 4.0 version is available at https://
Older (and unsupported) versions
Acknowledgements¶

Figure 2:SAS Dependencies
The main dependencies to note are ROS2 described Macenski et al. (2022), DQ Robotics described in Adorno & Marques Marinho (2021), eigen3, and pybind11.
Packaging was made possible by instructive resources such as Hosting your own PPA repository on GitHub.
- Marinho, M. M., Harada, K., Morita, A., & Mitsuishi, M. (2020). SmartArm: Integration and validation of a versatile surgical robotic system for constrained workspaces. The International Journal of Medical Robotics and Computer Assisted Surgery, 16(2). 10.1002/rcs.2053
- Marinho, M. M., Quiroz-Omaña, J. J., & Harada, K. (2024). A Multiarm Robotic Platform for Scientific Exploration: Its Design, Digital Twins, and Validation. IEEE Robotics & Automation Magazine, 31(4), 10–20. 10.1109/mra.2023.3336472
- Macenski, S., Foote, T., Gerkey, B., Lalancette, C., & Woodall, W. (2022). Robot Operating System 2: Design, architecture, and uses in the wild. Science Robotics, 7(66). 10.1126/scirobotics.abm6074
- Adorno, B. V., & Marques Marinho, M. (2021). DQ Robotics: A Library for Robot Modeling and Control. IEEE Robotics & Automation Magazine, 28(3), 102–116. 10.1109/mra.2020.2997920