RCS FR3 Extension#

This extension provides support for the Franka Research 3 (FR3) robot in RCS.

Installation#

# from root directory
pip install -ve extensions/rcs_fr3 --no-build-isolation

Configuration#

Add your FR3 credentials to a .env file:

DESK_USERNAME=...
DESK_PASSWORD=...

Usage#

import rcs_fr3
from rcs_fr3._core import hw
from rcs_fr3.desk import FCI, ContextManager, Desk, load_creds_franka_desk
import rcs
import numpy as np

ROBOT_IP = "172.16.0.2" # Replace with your robot IP

user, pw = load_creds_franka_desk()
with FCI(Desk(ROBOT_IP, user, pw), unlock=False, lock_when_done=False):
    urdf_path = rcs.scenes["fr3_empty_world"].urdf
    ik = rcs.common.RL(str(urdf_path))
    
    # Configure Robot
    robot = hw.Franka(ROBOT_IP, ik)
    robot_cfg = hw.FR3Config()
    robot_cfg.tcp_offset = rcs.common.Pose(rcs.common.FrankaHandTCPOffset())
    robot.set_config(robot_cfg)

    # Configure Gripper
    gripper_cfg_hw = hw.FHConfig()
    gripper_cfg_hw.epsilon_inner = gripper_cfg_hw.epsilon_outer = 0.1
    gripper_cfg_hw.speed = 0.1
    gripper_cfg_hw.force = 30
    gripper = hw.FrankaHand(ROBOT_IP, gripper_cfg_hw)
    
    # Move Robot
    robot.set_cartesian_position(
        robot.get_cartesian_position() * rcs.common.Pose(translation=np.array([0.05, 0, 0]))
    )
    
    # Grasp
    gripper.grasp()

CLI#

The extension defines useful commands to handle the FR3 robot without the need to use the Desk Website.

python -m rcs_fr3 --help