robot:
  type: uf::robot
  id: "uf_robot"
  robot_dof: 7
  control_space: "joint"
  robot_ip: "192.168.1.245"
  gripper_type: 1
  enable_logs: false
  # Up to 60 Hz goal updates; the first command after idle is immediate.
  # Keeping the gripper below its 5000 maximum speed avoids C19 in testing.
  gripper_command_interval_s: 0.0166667
  # Avoid the previous maximum-speed (5000) default on the tool RS485 device.
  gripper_speed: 1500
  # Use the high-frequency servo interface for lower-latency GELLO tracking.
  joint_command_mode: 1
  max_joint_velocity: 120
  # TCP z floor in the xArm base coordinate system (mm).
  min_tcp_z_mm: -2.0
  # CPU-local FK/Jacobian projection keeps ServoJ free of synchronous SDK queries.
  tcp_z_guard_backend: "local_projection"
  tcp_z_soft_margin_mm: 5.0
  local_kinematics_max_error_mm: 2.0
  controller_safety_boundary: true
  # Append gripper initialization/read/write failures here.
  gripper_error_log_path: "logs/xarm7_gripper_errors.log"
  cameras:
    camera:
      type: intelrealsense
      serial_number_or_name: "242622070583"
      width: 640
      height: 480
      fps: 30
    camera2:
      type: intelrealsense
      serial_number_or_name: "148522072685"
      width: 640
      height: 480
      fps: 30
  # Redundant args, indicating the initial pose of xarm7. Set by 192.168.1.245:18333
  # start_joints: [0, -30, 0, 0, 0, 30, 0]
# make sure to edit with your correct configurations!
teleop:
  type: uf::gello_teleop
  id: "gello_teleop"
  # Independent GELLO -> xArm command loop; dataset.fps remains the recording rate.
  realtime_control_fps: 60
  port: "/dev/serial/by-id/usb-FTDI_USB__-__Serial_Converter_FTB9HYVD-if00-port0"
  joint_ids: [1, 2, 3, 4, 5, 6, 7]
  joint_signs: [1, 1, 1, 1, 1, 1, 1]
  gripper_id: 8
  gripper_open_deg: 198.28125
  gripper_close_deg: 155.75

dataset:
  # Dataset path relative to the directory where the command is started.
  root: "datasets/xarm7_gello_joint_safe_datas"
  repo_id: "ufactory/xarm7_gello_joint_safe_datas"
  single_task: "Pick up the purple grape and drop into the box on the left."
  # Cameras deliver 30 Hz; arm ServoJ remains independently fixed at 60 Hz.
  fps: 30
  episode_time_s: 60  # max duration for one episode
  reset_time_s: 20    # time for resetting env between episodes
  push_to_hub: False
