Skip to content

Commit

Permalink
Configured for bimanual operation
Browse files Browse the repository at this point in the history
  • Loading branch information
jackvial committed Oct 12, 2024
1 parent 97b1feb commit e36d80b
Show file tree
Hide file tree
Showing 7 changed files with 184 additions and 0 deletions.
1 change: 1 addition & 0 deletions .cache/calibration/koch_bimanual/left_follower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"homing_offset": [-2048, 3072, 2048, -2048, 2048, 2048], "drive_mode": [0, 1, 1, 0, 1, 1], "start_pos": [2059, 3063, 2027, 2042, 2041, 2068], "end_pos": [3088, -1957, -904, 2947, -988, -986], "calib_mode": ["DEGREE", "DEGREE", "DEGREE", "DEGREE", "DEGREE", "DEGREE"], "motor_names": ["shoulder_pan", "shoulder_lift", "elbow_flex", "wrist_flex", "wrist_roll", "gripper"]}
1 change: 1 addition & 0 deletions .cache/calibration/koch_bimanual/left_leader.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"homing_offset": [-4096, 3072, 3072, 0, 4096, -2048], "drive_mode": [0, 1, 1, 0, 1, 0], "start_pos": [4085, 3048, 3014, -85, 3914, 1945], "end_pos": [5102, -2053, -2063, 1064, -2976, 2666], "calib_mode": ["DEGREE", "DEGREE", "DEGREE", "DEGREE", "DEGREE", "DEGREE"], "motor_names": ["shoulder_pan", "shoulder_lift", "elbow_flex", "wrist_flex", "wrist_roll", "gripper"]}
50 changes: 50 additions & 0 deletions .cache/calibration/koch_bimanual/right_follower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"homing_offset": [
2048,
2048,
3072,
-2048,
-3072,
3072
],
"drive_mode": [
1,
1,
1,
0,
0,
1
],
"start_pos": [
2083,
2022,
2978,
1919,
3054,
3079
],
"end_pos": [
-1069,
-995,
-1928,
2944,
4125,
-2109
],
"calib_mode": [
"DEGREE",
"DEGREE",
"DEGREE",
"DEGREE",
"DEGREE",
"DEGREE"
],
"motor_names": [
"shoulder_pan",
"shoulder_lift",
"elbow_flex",
"wrist_flex",
"wrist_roll",
"gripper"
]
}
50 changes: 50 additions & 0 deletions .cache/calibration/koch_bimanual/right_leader.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"homing_offset": [
2048,
3072,
-1024,
-2048,
-4096,
-3072
],
"drive_mode": [
1,
1,
0,
0,
0,
0
],
"start_pos": [
2016,
3110,
1081,
1674,
4111,
2955
],
"end_pos": [
-1067,
-1989,
2089,
2995,
5149,
3672
],
"calib_mode": [
"DEGREE",
"DEGREE",
"DEGREE",
"DEGREE",
"DEGREE",
"DEGREE"
],
"motor_names": [
"shoulder_pan",
"shoulder_lift",
"elbow_flex",
"wrist_flex",
"wrist_roll",
"gripper"
]
}
3 changes: 3 additions & 0 deletions calibrate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#/bin/bash

python lerobot/scripts/control_robot.py calibrate --robot-path lerobot/configs/robot/koch_bimanual_jack.yaml --arms left_follower left_leader
75 changes: 75 additions & 0 deletions lerobot/configs/robot/koch_bimanual_jack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
_target_: lerobot.common.robot_devices.robots.manipulator.ManipulatorRobot
robot_type: koch
calibration_dir: .cache/calibration/koch_bimanual

# `max_relative_target` limits the magnitude of the relative positional target vector for safety purposes.
# Set this to a positive scalar to have the same value for all motors, or a list that is the same length as
# the number of motors in your follower arms.
max_relative_target: null

leader_arms:
left:
_target_: lerobot.common.robot_devices.motors.dynamixel.DynamixelMotorsBus
port: /dev/ttyACM1
motors:
# name: (index, model)
shoulder_pan: [1, "xl330-m077"]
shoulder_lift: [2, "xl330-m077"]
elbow_flex: [3, "xl330-m077"]
wrist_flex: [4, "xl330-m077"]
wrist_roll: [5, "xl330-m077"]
gripper: [6, "xl330-m077"]
right:
_target_: lerobot.common.robot_devices.motors.dynamixel.DynamixelMotorsBus
port: /dev/ttyACM3
motors:
# name: (index, model)
shoulder_pan: [1, "xl330-m077"]
shoulder_lift: [2, "xl330-m077"]
elbow_flex: [3, "xl330-m077"]
wrist_flex: [4, "xl330-m077"]
wrist_roll: [5, "xl330-m077"]
gripper: [6, "xl330-m077"]

follower_arms:
left:
_target_: lerobot.common.robot_devices.motors.dynamixel.DynamixelMotorsBus
port: /dev/ttyACM2
motors:
# name: (index, model)
shoulder_pan: [1, "xl430-w250"]
shoulder_lift: [2, "xl430-w250"]
elbow_flex: [3, "xl330-m288"]
wrist_flex: [4, "xl330-m288"]
wrist_roll: [5, "xl330-m288"]
gripper: [6, "xl330-m288"]
right:
_target_: lerobot.common.robot_devices.motors.dynamixel.DynamixelMotorsBus
port: /dev/ttyACM0
motors:
# name: (index, model)
shoulder_pan: [1, "xl430-w250"]
shoulder_lift: [2, "xl430-w250"]
elbow_flex: [3, "xl330-m288"]
wrist_flex: [4, "xl330-m288"]
wrist_roll: [5, "xl330-m288"]
gripper: [6, "xl330-m288"]

cameras:
elp0:
_target_: lerobot.common.robot_devices.cameras.opencv.OpenCVCamera
camera_index: 0
fps: 15
width: 800
height: 600
elp1:
_target_: lerobot.common.robot_devices.cameras.opencv.OpenCVCamera
camera_index: 4
fps: 15
width: 800
height: 600

# ~ Koch specific settings ~
# Sets the leader arm in torque mode with the gripper motor set to this angle. This makes it possible
# to squeeze the gripper and have it spring back to an open position on its own.
gripper_open_degree: 35.156
4 changes: 4 additions & 0 deletions teleoperate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#/bin/bash

python lerobot/scripts/control_robot.py teleoperate --robot-path lerobot/configs/robot/koch_bimanual_jack.yaml --robot-overrides '~cameras' --fps 30
# python lerobot/scripts/control_robot.py teleoperate --robot-path lerobot/configs/robot/koch_jack.yaml --robot-overrides '~cameras' --fps 30

0 comments on commit e36d80b

Please sign in to comment.