This document provides instructions for teleoperation and policy rollout with the Franka Emika Panda robot using our VR teleoperation framework.
Before starting, ensure you have completed the following:
-
Franka Emika Panda robot and FrankaHand
- Configure your Franka Emika Panda Robot according to the official libfranka documentation.
-
A desktop with realtime kernel installed apart from your own workstation.
- This desktop is directly connected to the Franka Emika robot and is responsible for high-frequency (1000Hz) control signal transmission between the workstation and the Franka Emika.
- You can install realtime kernel on your desktop according to the official libfranka documentation.
- a NUC is recommended.
-
Meta Quest 3 VR headset.
- The desktop installed with the realtime kernel must be directly connected to the Franka Emika via Ethernet cable, ensuring a stable and fast network connection.
- For specific IP configuration steps and network diagnostics, please refer to the official libfranka documentation.
- The connection between your workstation and the desktop with realtime kernel could be wireless, but it's encouraged to connect directly with Ethernet cable for better connection.
- Ensure Meta Quest 3 and your workstation under the same network segment.
- We use Polymetis to write policy for Franka teleoperation. Polymetis supports Python3.8. It's recommended to create a Conda environment and directly install Polymetis from Conda.
conda create -n polymetis python=3.8
conda activate polymetis
conda install -c pytorch -c fair-robotics -c aihabitat -c conda-forge polymetisFor more information about Polymetis, please refer to the Polymetis GitHub repository and the official documentation for more details and advanced setup instructions.
Note: You should install Polymetis on both of your workstation and the desktop with realtime kernel!
-
Refer to the official libfranka documentation to power on the Franka Emika robot:
- Turn on the Franka Emika power switch.
- Wait until the indicator light on the robot base turns yellow and stops blinking.
- In your browser, enter the configured Franka Emika IP address to access the Franka Desk.
- Confirm that both the Franka arm and gripper are properly connected.
-
On the Franka Desk, unlock the joints and wait until the indicator light on the robot base turns blue.
-
Click "Activate FCI" and keep this page open.
-
In two separate terminals, enter the following commands respectively:
# Start the polymetis robot interface server
launch_robot.py robot_client=franka_hardware
# Start the polymetis robot interface server
launch_gripper.py gripper=<franka_hand|robotiq_2f>Wait for these two servers to ready.
The environment and the task have to be configured first and then start service for teleoperating robots.
- Environment and Task Configuration.
- Environment Configuration.
Edit reactive_diffusion_policy/config/task/real_franka_env.yaml
to configure the environment settings including
host_ip,robot_ip,vr_server_ipandcalibration_path. - Task Configuration. Create task config file which assigns the camera and sensor to use. You can take reactive_diffusion_policy/config/task/real_franka_env.yaml as an example. Refer to docs/customized_deployment_guide.md for more details. Edit reactive_diffusion_policy/config/task/real_world_env.yaml by replacing the default task with your own task config.(e.g. real_franka_env)
- Start service for teleoperation
# start teleoperation server
python teleop.py task=[task_config_file_name]Follow the user guide in our Unity Repo to run the TactAR APP.
- We use the Franka Research 3 with the FrankaHand gripper. Other hardwares should also work in principle.
- Theoretically, the closer the control signal frequency sent by the FrankaServer is to 1000Hz, the more controllable the policy will be. If your hardware allows, you may increase the "frequency" parameter in franka_server.py.
For troubleshooting and advanced usage, please refer to the full documentation or contact the maintainers.