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 .
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
Munich Institute of Robotics and Machine Intelligence (MIRMI), Technische Universität München (TUM), Germany. · Mohamed Bin Zayed University of Artificial Intelligence, UAE