Organizations: Department of Information Engineering, Electrical Engineering, and Applied Mathematics (DIEM), University of Salerno, 84084 Fisciano, Italy
This paper presents an open-source software stack that restores ROS 2 support for the Franka Emika Panda robot while resolving the long-standing unreliability of its external position control interface. We first analyze the root causes of unstable position control and show that the observed vibrations and protective stops arise from the timing of the external control loop and sampling jitter, rather than from limitations of the robot itself. Building on this analysis, we introduce an asynchronous hardware interface that decouples real-time communication from the ROS 2 control loop, a rate-matching mechanism for slower command sources, and a position-domain reference generation strategy that produces reliable, smooth position commands. Experimental validation shows that the proposed architecture reliably tracks velocity references by reducing motion artifacts introduced by the official implementation, and the stack is validated across motion planning, compliance control, position-controlled manipulation, and haptic teleoperation on two independent Panda platforms. By restoring a modern, reliable, and open ROS 2 ecosystem for the Panda, this work lowers the barrier to developing safe, responsive, and reproducible human-robot collaboration applications that integrate planning, perception, interaction, and shared autonomy. Code and videos are available on our website at https://sites.google.com/view/fer-ros2/.
Figures & tables
Figure 1: External control over the FCI (nominal synchronous model). Every Tδ , INT measures the state of the robot (R) and applies the command returned by EXT one or more cycles earlier. The vertical arrows represent the periodic exchange of state and commands between INT and R (via an undisclosed interface); the diagonal arrows represent the transmission of states from INT to EXT and the corresponding command from EXT to INT through UDP. A command is applied only if its round trip meets the budget of ( 1 ); otherwise it is discarded and INT holds the last commanded acceleration.
LF
RS
RA
dEXT median [ ms ]
0.012
0.065
0.013
dEXT p99 [ ms ]
0.040
0.137
0.048
dEXT max [ ms ]
0.087
2.174
0.141
unserved cycles [ % ]
0.18
5.91
0.41
Table 1: Loop timings over the benchmark runs. LF: bare libfranka motion-generation example; RS: official synchronous ROS 2 implementation executing a joint trajectory; RA: our asynchronous ROS 2 implementation executing the same joint trajectory as RS. Measurements are obtained with the LTTng tracer.
Figure 2: Distribution of the read-to-read interval, normalized by the number of measurements of each capture. For the synchronous implementation, the distribution peaks at multiples of Tδ (labeled as A, B and C). Measurements are obtained with the LTTng tracer.
Figure 3: Reference distortion under sampling jitter. EXT samples the trajectory after each INT tick, at instants whose jitter displaces the samples (dotted lines); INT files them on its uniform grid and differences them, so the reconstructed reference (red) departs from the desired one (dashed). On a steep segment (inset) the resulting increment leaves the admissible cone and aborts the motion. Jitter amplitude exaggerated for legibility.
Figure 4: Proposed architecture. The ros2_control thread and the real-time thread run on the workstation (EXT); they exchange state and command through mutex-protected buffers, so ROS-side jitter never reaches the robot. The real-time thread talks to the onboard controller (INT) over the UDP link, and matches a slower command stream to 1kHz through the rate-matching stage on the write path.
Figure 5: Measured joint velocity (top) and its power spectral density (bottom) on joint 1, for the synchronous configuration, the proposed asynchronous one, and the proposed one with the low-pass filter enabled. The synchronous velocity tracks the reference, but is visibly rough; the filtered one is smooth, but follows a fraction of the commanded motion; the proposed one tracks and stays smooth.
Figure 6: Commanded joint velocity reaching the robot from a 125Hz source, with rate matching disabled and enabled. The two commands, from separate runs, are aligned to the reference. The envelopes coincide over the trajectory (main), while the detail shows the zero-order-held staircase, whose single riser spans the N=8 cycles that the rate-matched command crosses as a ramp.
Figure 7: MoveIt! planning and execution, reproduced on both Panda setups: (top) Lab A; (bottom) Lab B. Full videos at https://sites.google.com/view/fer-ros2/applications/moveit
Sec.
Axis
KP
KI
KD
5.1
1,2,3,4
600
0
30
5
250
0
10
6
150
0
10
7
50
0
5
5.2 A , C
x,y,z
1000
–
100
R,P,Y
100
–
10
Table 2: Control parameters: the Sec. column points to the subsection presenting the application; in the Axis column, numbers indicate joints, while {x,y,z} and {R,P,Y} represent Cartesian-space linear and angular components respectively.
Figure 8: Compliance control, reproduced on both Panda setups. Within each block: (top) standstill, (bottom) trajectory tracking, (left) stiff, (right) compliant. Full videos at https://sites.google.com/view/fer-ros2/applications/compliance-control .
Figure 9: Pick and place application on the Panda of Lab A; (top) execution, (bottom) planning with MoveIt! : current robot state and planned goal are shown solid and shaded, respectively. Arrows indicate the temporal sequence of operations. Full video at https://sites.google.com/view/fer-ros2/applications#h.q9xn7np3mlnj .
Figure 10: Teleoperation application in Lab A. Full video at https://sites.google.com/view/fer-ros2/applications#h.i21u2awf44m2 .
We present multipanda_ros2, a novel open-source ROS2 architecture for multi-robot control of Franka Robotics robots. Leveraging ros2 control, this framework provides native ROS2 interfaces for controlling any number of robots from a single process. Our core contributions address key challenges in real-time torque control, including interaction control and robot-environment modeling. A central focus of this work is sustaining a 1kHz control frequency, a necessity for real-time control and a minimum frequency required by safety standards. Moreover, we introduce a controllet-feature design pattern that enables controller-switching delays of ≤2 ms, facilitating reproducible benchmarking and complex multi-robot interaction scenarios. To bridge the simulation-to-reality (sim2real) gap, we integrate a high-fidelity MuJoCo simulation with quantitative metrics for both kinematic accuracy and dynamic consistency (torques, forces, and control errors). Furthermore, we demonstrate that real-world inertial parameter identification can significantly improve force and torque accuracy, providing a methodology for iterative physics refinement. Our work extends approaches from soft robotics to rigid dual-arm, contact-rich tasks, showcasing a promising method to reduce the sim2real gap and providing a robust, reproducible platform for advanced robotics research.
Jon Škerlj, Seongjin Bien, Abdeldjallil Naceri +1
Munich Institute of Robotics and Machine Intelligence (MIRMI), Technische Universität München (TUM), Germany · Technische Universität Nürnberg (UTN), Germany · Mohamed Bin Zayed University of Artificial Intelligence, UAE
Continuous physical human-robot interaction requires robots to rapidly adapt their control behaviour without interrupting task execution. However, existing ROS 2 control architectures rely on stop-to-switch mechanisms that introduce substantial delays and interrupt execution. We present an open-source, sub-millisecond reflex engine based on an enhanced ROS 2-compatible multimode controller that enables deterministic switching between control modalities and integrates reflex behaviours for mitigating contact hazards and kinematic limit violations. Experiments on a Franka Robotics manipulator demonstrate switching delays below 0.1 ms, more than four orders of magnitude faster than conventional ros2_control, while maintaining continuous operation during safety-critical events. In a multi-stage manipulation task, the proposed framework reduced execution time by 3.5% and peak trajectory jerk by more than threefold. By eliminating runtime middleware overhead, controller transitions are implemented as lock-free pointer operations, enabling reflex-level responsiveness within an open-source robotics framework.
Jon Škerlj, Sami Haddadin
Munich Institute of Robotics and Machine Intelligence (MIRMI), Technische Universität München (TUM), Germany. · Mohamed Bin Zayed University of Artificial Intelligence, UAE
This paper introduces a novel modular architecture for ROS2 that decouples the logic required to acquire, validate, and interpolate references from the control laws that track them. The design includes a dedicated component, named Reference Generator, that receives references, in the form of either single points or trajectories, from external nodes (e.g., planners), and writes single-point references at the controller's sampling period via the existing ros2_control chaining mechanism to downstream controllers. This separation removes duplicated reference-handling code from controllers and improves reusability across robot platforms. We implement two reference generators: one for handling joint-space references and one for Cartesian references, along with a set of new controllers (PD with gravity compensation, Cartesian pose, and admittance controllers) and validate the approach on simulated and real Universal Robots and Franka Emika manipulators. Results show that (i) references are tracked reliably in all tested scenarios, (ii) reference generators reduce duplicated reference-handling code across chained controllers to favor the construction and reuse of complex controller pipelines, and (iii) controller implementations remain focused only on control laws.
Davide Risi, Vincenzo Petrone, Antonio Langella +3
Department of Information Engineering, Electrical Engineering and Applied Mathematics (DIEM), University of Salerno, 84084 Fisciano, Italy