System and Robot setup
This guide walks through installing and setting up RoBits.
Warning
It is highly recommended to use a real-time (RT) kernel as otherwise the time-sensitive control tasks may fail.
Single machine setup
Make sure that the system has booted the real-time kernel by running
uname -a. To install a real-time kernel you can execute the scriptscripts/10_install_rt.sh(Optional) You can install the Nvidia drivers while also using the RT preempt patched kernel. This is a little bit hacky, but seems to work. Either execute
scripts/30_install_nvidia_dkms.shor install it manually. See Nvidia DKMS for further details.
Multi machine setup
The following assumes that you have at least two different machines, one for control with a RT preempt patched kernel and the other machine used for inference with a GPU. Configure networking for inter-machine communication. Ensure:
Both machines are on the same subnet or can reach each other.
Use a wired connection for lower latency and greater stability.
Control PC: Install the real-time kernel on this machine. See
scripts/10_install_rt.shand Real-time KernelPerception PC: Install the Nvidia drivers. You can use the ones that are shipped with your distribution
Next install RoBits on both machines. Start the service on the Control PC with rb service start <name>.
For example, rb service start robot_panda_real. Then copy and edit the robot_client configuration.
Use this configuration on the Perception PC to connect to the Control PC. You can test it with a simple command such
as rb move up --robot-name robot_client.
Real-time Kernel
See the Kernel wiki for
actively maintained PREEMPT_RT versions that match your current kernel version.
See the script scripts/20_install_rt_patch.sh for more details.
Nvidia DKMS
Note
Installing the Nvidia driver with DKMS is only required if you have a RT patched kernel.
If you are using a RT preempt patched kernel it is possible to install the
Nvidia driver by specifying the IGNORE_PREEMPT_RT_PRESENCE=1 flag (See this
gist).
Here is an alternative method using the Dynamic Kernel Module Support (DKMS).
DKMS is a framework to automatically rebuild and install kernel modules when
the kernel is updated.
You can also use the script scripts/30_nvidia_dkms.sh
Install the linux-headers metapackage for your kernel flavour and the Nvidia DKMS package with
export NVIDIA_DRIVER_VERSION=560
sudo apt install linux-headers-$(uname -r)
sudo apt install nvidia-dkms-${NVIDIA_DRIVER_VERSION}${SERVER}
Then build the module and load it
cat <<EOF | sudo patch /usr/src/nvidia-560.35.03/conftest.sh
--- a/conftest.sh
+++ b/conftest.sh
@@ -716,8 +716,9 @@
if [ -n "\$IGNORE_PREEMPT_RT_PRESENCE" ]; then
- exit 0
+ echo Skipping preempt RT check
fi
EOF
sudo sed -i '/if \[.*\$IGNORE_PREEMPT_RT_PRESENCE.*\]/,/fi/{
s/^ *exit 0 *$/ echo Skipping preempt RT check/
}' /usr/src/nvidia-560.35.03/conftest.sh
dkms status
sudo dkms install -m nvidia/560.35.03 -j 12
sudo depmod -a
sudo modprobe nvidia
Verify that everything is working with uname -a and nvidia-smi. You should be able to see something like this
markus @ computer ➜ sam2act git:(master) ✗ uname -r [2025-05-28 17:17:06]
6.8.0-59-generic
markus @ computer ➜ sam2act git:(master) ✗ nvidia-smi | head -n4 [2025-05-28 17:19:43]
Wed May 28 17:19:50 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
Franka Panda setup
Install the robot according to the manual. By default the webinterface of the Franka Panda is reachable at https://172.16.0.2. If you are using a different IP address make sure to update the configuration. If you want to use the CLI to unlock/lock the robot you need to specify the username and password in the configuration or create an rselab user with the robot’s web interface by clicking the “+” button.
Currently two different grippers are supported, the Franka default and Robotiq. Specify the one you are using in the robot’s configuration with the gripper keyword. If you are using a gripper other than the default make sure that you select the current end-effector other in the webinterface in the end-effector section and add the correct weight for compliance control.
Camera calibration
If you are using an Intel RealSense camera you need to extract the intrinsic parameters.
You can use rb camera calibrate intrinsics for this step.
To calibrate the extrinsic parameters run rb camera calibrate extrinsics.
Select the camera in the drop down menu and press “Connect” button. To refine
an existing calibration use the sliders to adjust the parameters and then press
“Save” button.
You can show the existing camera calibration either with rb config show or
rb camera info extrinsics/intrinsics.
You can display the current point cloud with rb camera point-cloud view as
a sanity check. The coordinate system should be in the robot’s base with x-axis
facing front.