def run_main(): fa = FrankaArm() fa.reset_pose() fa.reset_joints() magnetic_calibration = MagneticCalibration() fa.apply_effector_forces_torques(45, 0, 0, 0) magnetic_calibration.calibrate()
import numpy as np from frankapy import FrankaArm, SensorDataMessageType from frankapy import FrankaConstants as FC from frankapy.proto_utils import sensor_proto2ros_msg, make_sensor_group_msg from frankapy.proto import JointPositionSensorMessage, ShouldTerminateSensorMessage from franka_interface_msgs.msg import SensorDataGroup from frankapy.utils import min_jerk import rospy if __name__ == "__main__": fa = FrankaArm() fa.reset_joints() rospy.loginfo('Generating Trajectory') joints_0 = fa.get_joints() p = fa.get_pose() p.translation[2] -= 0.2 fa.goto_pose(p) joints_1 = fa.get_joints() T = 5 dt = 0.02 ts = np.arange(0, T, dt) joints_traj = [min_jerk(joints_1, joints_0, t, T) for t in ts] rospy.loginfo('Initializing Sensor Publisher') pub = rospy.Publisher(FC.DEFAULT_SENSOR_PUBLISHER_TOPIC, SensorDataGroup,
""" parser = argparse.ArgumentParser() parser.add_argument('--pose_dmp_weights_path', '-w', type=str, default='') parser.add_argument('--time', '-t', type=float, default=10) args = parser.parse_args() gains = [2000, 2000, 2000, 1500, 1500, 1000, 1000] #joint impedances # load the dmp weights if not args.pose_dmp_weights_path: args.pose_dmp_weights_path = './data/dmp/IROS2020_dmp_data_goal_position_weights.pkl' pose_dmp_file = open(args.pose_dmp_weights_path, "rb") pose_dmp_info = pickle.load(pose_dmp_file) print('Starting robot') fa = FrankaArm() # Reset robot pose and joints print('Opening Grippers') fa.goto_gripper(0.08, grasp=False) print('Reset with pose') fa.reset_pose(duration=10) print('Reset with joints') fa.reset_joints() # instantiate object for AR tag detection frank = realpeginsert.Robot() # get transforms tag2worldTF = frank.detect_ar_world_pos(straighten=True, shape_class=shapes.Circle,
logging.getLogger().setLevel(logging.INFO) parser = argparse.ArgumentParser() parser.add_argument( '--cfg', '-c', type=str, default= '/home/stevenl3/Documents/planorparam/scripts/real_robot/april_tag_pick_place_azure_kinect_cfg.yaml' ) parser.add_argument('--no_grasp', '-ng', action='store_true') args = parser.parse_args() cfg = YamlConfig(args.cfg) T_camera_world = RigidTransform.load(cfg['T_k4a_franka_path']) logging.info('Starting robot') fa = FrankaArm() # fa.reset_joints() # fa.reset_pose() # fa.open_gripper() T_ready_world = fa.get_pose() T_ready_world.translation[0] += 0.25 T_ready_world.translation[2] = 0.4 #ret = fa.goto_pose(T_ready_world) logging.info('Init camera') #sensor = get_first_realsense_sensor(cfg['rs']) #original sensor = Kinect2SensorFactory.sensor('bridged', cfg) #Kinect sensor object
if __name__ == "__main__": logging.getLogger().setLevel(logging.INFO) parser = argparse.ArgumentParser() parser.add_argument('--cfg', '-c', type=str, default='cfg/examples/april_tag_pick_place_cfg.yaml') parser.add_argument('--no_grasp', '-ng', action='store_true') args = parser.parse_args() cfg = YamlConfig(args.cfg) T_camera_ee = RigidTransform.load(cfg['T_camera_ee_path']) T_camera_mount_delta = RigidTransform.load(cfg['T_camera_mount_path']) logging.info('Starting robot') fa = FrankaArm() fa.set_tool_delta_pose(T_camera_mount_delta) fa.reset_joints() fa.open_gripper() T_ready_world = fa.get_pose() T_ready_world.translation[0] += 0.25 T_ready_world.translation[2] = 0.4 ret = fa.goto_pose(T_ready_world) logging.info('Init camera') sensor = get_first_realsense_sensor(cfg['rs']) sensor.start() logging.info('Detecting April Tags')
import numpy as np from frankapy import FrankaArm from autolab_core import RigidTransform if __name__ == '__main__': print('Starting robot') fa = FrankaArm() fa.reset_pose() fa.reset_joints() print('Opening Grippers') fa.open_gripper() # random_position = RigidTransform(rotation=np.array([ # [1, 0, 0], # [0, -1, 0], # [0, 0, -1] # ]), translation=np.array([0.3069, 0, 0.2867]), # from_frame='franka_tool', to_frame='world') # fa.goto_pose_with_cartesian_control(random_position, 10) fa.apply_effector_forces_torques(10, 0, 0, 0)
import time import numpy as np from frankapy import FrankaArm fa = FrankaArm() time.sleep(6) fa.open_gripper()
from frankapy import FrankaArm import numpy as np fa = FrankaArm() for i in range(20): input("Prepare to move arm") fa.apply_effector_forces_torques(3, 0, 0, 0) rt = fa.get_pose() print(rt)
from autolab_core import RigidTransform, Point from frankapy import FrankaArm if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--pose_dmp_weights_file_path', type=str, default='') args = parser.parse_args() if not args.pose_dmp_weights_file_path: args.pose_dmp_weights_file_path = '/home/sony/logs/robot_state_data_0_pose_weights.pkl' pose_dmp_file = open(args.pose_dmp_weights_file_path, "rb") pose_dmp_info = pickle.load(pose_dmp_file) print('Starting robot') fa = FrankaArm() fa.reset_pose() fa.reset_joints() print('Opening Grippers') fa.open_gripper() # random_position = RigidTransform(rotation=np.array([ # [1, 0, 0], # [0, -1, 0], # [0, 0, -1] # ]), translation=np.array([0.3069, 0, 0.2867]), # from_frame='franka_tool', to_frame='world')
import argparse from frankapy import FrankaArm if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--time', '-t', type=float, default=100) parser.add_argument('--open_gripper', '-o', action='store_true') args = parser.parse_args() print('Starting robot') fa = FrankaArm() if args.open_gripper: fa.open_gripper() print('Applying 0 force torque control for {}s'.format(args.time)) fa.run_guide_mode(args.time)
def run_main(): parser = argparse.ArgumentParser() parser.add_argument('--filename', type=str, default=None) args = parser.parse_args() fa = FrankaArm() fa.open_gripper() # fa.reset_pose() fa.reset_joints(10) initial_magnet_position1 = RigidTransform( rotation=np.array([[0, -1, 0], [0, 0, 1], [-1, 0, 0]]), translation=np.array([0.38592997, 0.10820438, 0.08264024]), from_frame='franka_tool', to_frame='world') initial_magnet_position2 = RigidTransform( rotation=np.array([[0, -1, 0], [0, 0, 1], [-1, 0, 0]]), translation=np.array([0.38592997, 0.20820438, 0.08264024]), from_frame='franka_tool', to_frame='world') squeeze_position1 = RigidTransform( rotation=np.array([[0, 1, 0], [0, 0, 1], [1, 0, 0]]), translation=np.array([0.54900978, 0.20820438, 0.20654183]), from_frame='franka_tool', to_frame='world') squeeze_position2 = RigidTransform( rotation=np.array([[0, 1, 0], [0, 0, 1], [1, 0, 0]]), translation=np.array([0.54900978, 0.20820438, 0.15654183]), from_frame='franka_tool', to_frame='world') relative_pos_dist_z = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, 0.1]), from_frame='franka_tool', to_frame='franka_tool') relative_pos_dist_y = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.1, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_rotation_z = RigidTransform(rotation=np.array([[0, 1, 0], [-1, 0, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_rotation_z = RigidTransform(rotation=np.array([[0, -1, 0], [1, 0, 0], [0, 0, 1]]), translation=np.array( [0.0, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_y = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, -0.1, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_z = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, -0.1]), from_frame='franka_tool', to_frame='franka_tool') relative_pos_dist_x = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.075, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_x = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([-0.03, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') fa.goto_pose_with_cartesian_control(initial_magnet_position1) fa.goto_pose_with_cartesian_control(initial_magnet_position2) magnetic_calibration = MagneticCalibration() filename = '../calibration/2020-01-14 11-08 E1 2X Board Calibration.npz' magnetic_calibration.load_calibration_file(filename) # Close the gripper and save corresponding robot state, gripper state, and magnetic state data magnetic_calibration.start_recording_data() time.sleep(1) # fa.goto_pose_delta_with_cartesian_control(relative_x_dist, 10) # max width is about 0.080 m gripper_step_size = 0.002 # in meters num_samples = 30 noise_level = 13 # uT force_threshold = 1.05 GRIPPER_CONTACT = False min_contact = None min_gripper_width = None global_min = None current_force_estimate = 1 while (GRIPPER_CONTACT == False): current_width = magnetic_calibration.get_current_gripper_width() print(current_width) fa.goto_gripper(current_width - gripper_step_size) #magnetic_calibration.get_last_magnetic_data() mag_data = magnetic_calibration.get_previous_magnetic_samples( num_samples) # grab last ten samples xyz_mag_data = mag_data[:, 6] print(xyz_mag_data) #slope = np.diff(xyz_mag_data, axis=0) #print(slope) # asign = np.sign(slope) # signchange = ((np.roll(asign, 1) - asign) != 0).astype(int) # print(signchange) # first make sure the signal changes are large enough to not just be noise jitter # then see if there is a signal change in slope - this signifies a contact. #if(np.any(abs(np.diff(mag_data)>noise_level))): #if(abs(np.sum(np.sign(np.diff(mag_data)))<numSamples) & abs(np.diff(mag_data))>noise_level): if global_min is None: global_min = np.min(xyz_mag_data, axis=0) elif global_min > np.min(xyz_mag_data, axis=0): global_min = np.min(xyz_mag_data, axis=0) if xyz_mag_data[-1] - global_min > noise_level: GRIPPER_CONTACT = True min_gripper_width = current_width - 2 * gripper_step_size print(min_gripper_width) print("Min Magnetic Values: ") print(min_contact) gripper_step_size -= 0.00003 # if (np.any(np.logical_and((abs(slope)>noise_level), (slope > 0)))): # # if last value is negative, contact. if last value is positive, release. # # save max value so we can compare current value and strength of grip # GRIPPER_CONTACT = True # min_contact = np.min(xyz_mag_data, axis=0) # min_gripper_width = current_width-gripper_step_size # print(min_gripper_width) # print("Min Magnetic Values: ") # print(min_contact) #input("Press enter to continue to next step") #magnetic_calibration.close_gripper_magnetic_feedback() # current_width = min_gripper_width # num_samples = 100 # while(current_force_estimate < force_threshold): # current_width -= gripper_step_size # print(current_width) # fa.goto_gripper(current_width) # mag_data = magnetic_calibration.get_previous_magnetic_samples(num_samples) # grab last ten samples # z_mag_data = np.max(mag_data[:,6]) # print(z_mag_data) # current_force_estimate = global_min / z_mag_data # print(current_force_estimate) fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_z) current_joints = fa.get_joints() current_joints[6] -= math.pi fa.goto_joints(list(current_joints)) current_position = fa.get_pose() fa.goto_pose_with_cartesian_control(squeeze_position1) fa.goto_pose_with_cartesian_control(squeeze_position2) for i in range(3): for j in range(i + 1): fa.goto_gripper(0.0, force=20) fa.goto_gripper(min_gripper_width) if i < 2: fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_x) fa.goto_pose_with_cartesian_control(current_position, 5) current_joints = fa.get_joints() current_joints[6] += math.pi fa.goto_joints(list(current_joints)) fa.goto_pose_delta_with_cartesian_control(relative_neg_dist_z) fa.open_gripper() fa.goto_pose_with_cartesian_control(initial_magnet_position1) #fa.goto_pose_delta_with_cartesian_control(relative_neg_dist_z) magnetic_calibration.stop_recording_data() #fa.open_gripper() print(magnetic_calibration.magnetic_data[0, :]) if args.filename is not None: magnetic_calibration.saveData(args.filename, min_contact, min_gripper_width) magnetic_calibration.plotData(magnetic_calibration.magnetic_data, 'Raw Data Over Time') magnetic_calibration.plotGripperData( magnetic_calibration.gripper_state_data, 'Raw Data Over Time') magnetic_calibration.plotGripperData(magnetic_calibration.robot_state_data, 'Raw Data Over Time')
from frankapy import FrankaArm if __name__ == '__main__': fa = FrankaArm() fa.reset_joints() fa.open_gripper()
def run_main(): parser = argparse.ArgumentParser() parser.add_argument('--filename', type=str, default=None) args = parser.parse_args() fa = FrankaArm() fa.open_gripper() # fa.reset_pose() fa.reset_joints(10) pipette_rotation = np.array([[1, 0, 0], [0, -1, 0], [0, 0, -1]]) initial_magnet_position1 = RigidTransform( rotation=pipette_rotation, translation=np.array([0.45683638, 0.06513334, 0.20451204]), from_frame='franka_tool', to_frame='world') initial_magnet_position2 = RigidTransform( rotation=pipette_rotation, translation=np.array([0.45683638, 0.06513334, 0.15451204]), from_frame='franka_tool', to_frame='world') initial_magnet_position3 = RigidTransform( rotation=pipette_rotation, translation=np.array([0.45683638, 0.06513334, 0.33451204]), from_frame='franka_tool', to_frame='world') beaker_position1 = RigidTransform(rotation=pipette_rotation, translation=np.array( [0.44724006, 0.2870516, 0.33210899]), from_frame='franka_tool', to_frame='world') beaker_position2 = RigidTransform(rotation=pipette_rotation, translation=np.array( [0.44724006, 0.2870516, 0.16210899]), from_frame='franka_tool', to_frame='world') test_tube_1 = RigidTransform(rotation=pipette_rotation, translation=np.array( [0.54359048, 0.17224207, 0.19106597]), from_frame='franka_tool', to_frame='world') test_tube_2 = RigidTransform(rotation=pipette_rotation, translation=np.array( [0.56359048, 0.17224207, 0.19106597]), from_frame='franka_tool', to_frame='world') test_tube_3 = RigidTransform(rotation=pipette_rotation, translation=np.array( [0.58359048, 0.17224207, 0.19106597]), from_frame='franka_tool', to_frame='world') relative_pos_dist_z = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, 0.175]), from_frame='franka_tool', to_frame='franka_tool') relative_pos_dist_y = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.02, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_rotation_z = RigidTransform(rotation=np.array([[0, 1, 0], [-1, 0, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_rotation_z = RigidTransform(rotation=np.array([[0, -1, 0], [1, 0, 0], [0, 0, 1]]), translation=np.array( [0.0, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_y = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, -0.1, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_z = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, -0.175]), from_frame='franka_tool', to_frame='franka_tool') relative_pos_dist_x = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.075, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_x = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([-0.03, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') fa.goto_pose_with_cartesian_control(initial_magnet_position1) fa.goto_pose_with_cartesian_control(initial_magnet_position2) magnetic_calibration = MagneticCalibration() filename = '../calibration/2020-01-14 11-08 E1 2X Board Calibration.npz' magnetic_calibration.load_calibration_file(filename) # Close the gripper and save corresponding robot state, gripper state, and magnetic state data magnetic_calibration.start_recording_data() time.sleep(1) # fa.goto_pose_delta_with_cartesian_control(relative_x_dist, 10) # max width is about 0.080 m gripper_step_size = 0.005 # in meters num_samples = 30 noise_level = 15 # uT force_threshold = 1.05 GRIPPER_CONTACT = False min_contact = None min_gripper_width = None global_max = None current_force_estimate = 1 while (GRIPPER_CONTACT == False): current_width = magnetic_calibration.get_current_gripper_width() print(current_width) fa.goto_gripper(current_width - gripper_step_size) #magnetic_calibration.get_last_magnetic_data() mag_data = magnetic_calibration.get_previous_magnetic_samples( num_samples) # grab last ten samples xyz_mag_data = mag_data[:, 6] print(xyz_mag_data) #slope = np.diff(xyz_mag_data, axis=0) #print(slope) # asign = np.sign(slope) # signchange = ((np.roll(asign, 1) - asign) != 0).astype(int) # print(signchange) # first make sure the signal changes are large enough to not just be noise jitter # then see if there is a signal change in slope - this signifies a contact. #if(np.any(abs(np.diff(mag_data)>noise_level))): #if(abs(np.sum(np.sign(np.diff(mag_data)))<numSamples) & abs(np.diff(mag_data))>noise_level): if global_max is None: global_max = np.max(xyz_mag_data, axis=0) elif global_max < np.max(xyz_mag_data, axis=0): global_max = np.max(xyz_mag_data, axis=0) if global_max - xyz_mag_data[-1] > noise_level: GRIPPER_CONTACT = True min_gripper_width = current_width fa.goto_gripper(min_gripper_width) #min_contact = xyz_mag_data[-1] print(min_gripper_width) print("Global Max: ") print(global_max) gripper_step_size -= 0.0001 # if (np.any(np.logical_and((abs(slope)>noise_level), (slope > 0)))): # # if last value is negative, contact. if last value is positive, release. # # save max value so we can compare current value and strength of grip # GRIPPER_CONTACT = True # min_contact = np.min(xyz_mag_data, axis=0) # min_gripper_width = current_width-gripper_step_size # print(min_gripper_width) # print("Min Magnetic Values: ") # print(min_contact) #input("Press enter to continue to next step") #magnetic_calibration.close_gripper_magnetic_feedback() # current_width = min_gripper_width # num_samples = 100 # while(current_force_estimate < force_threshold): # current_width -= gripper_step_size # print(current_width) # fa.goto_gripper(current_width) # mag_data = magnetic_calibration.get_previous_magnetic_samples(num_samples) # grab last ten samples # z_mag_data = np.max(mag_data[:,6]) # print(z_mag_data) # current_force_estimate = global_min / z_mag_data # print(current_force_estimate) fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_z) for i in range(3): fa.goto_pose_with_cartesian_control(beaker_position1) fa.goto_pose_with_cartesian_control(beaker_position2) fa.goto_gripper(0.0, force=20) fa.goto_gripper(min_gripper_width) fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_z) if i == 0: force_value = 15 fa.goto_pose_with_cartesian_control(test_tube_1) elif i == 1: force_value = 30 fa.goto_pose_with_cartesian_control(test_tube_2) elif i == 2: force_value = 50 fa.goto_pose_with_cartesian_control(test_tube_3) force_gripper_width = min_gripper_width for j in range(5): mag_data = magnetic_calibration.get_previous_magnetic_samples( num_samples) max_data = np.max(mag_data[:, 6], axis=0) current_force_estimate = max_data - force_value print("Force Threshold:") print(current_force_estimate) force_achieved = False gripper_step_size = 0.0003 num_samples = 30 while (force_achieved == False): force_gripper_width -= gripper_step_size fa.goto_gripper(force_gripper_width) #magnetic_calibration.get_last_magnetic_data() mag_data = magnetic_calibration.get_previous_magnetic_samples( num_samples) # grab last ten samples print(np.mean(mag_data[:, 6])) #slope = np.diff(xyz_mag_data, axis=0) #print(slope) # asign = np.sign(slope) # signchange = ((np.roll(asign, 1) - asign) != 0).astype(int) # print(signchange) # first make sure the signal changes are large enough to not just be noise jitter # then see if there is a signal change in slope - this signifies a contact. #if(np.any(abs(np.diff(mag_data)>noise_level))): #if(abs(np.sum(np.sign(np.diff(mag_data)))<numSamples) & abs(np.diff(mag_data))>noise_level): if np.mean(mag_data[:, 6]) < current_force_estimate: force_achieved = True print(force_gripper_width) if (j < 4): fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_y) fa.goto_gripper(min_gripper_width) fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_z) # for i in range(5): # fa.goto_pose_with_cartesian_control(beaker_position1) # fa.goto_pose_with_cartesian_control(beaker_position2) # fa.goto_gripper(0.0, force = 20) # fa.goto_gripper(min_gripper_width) # fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_z) # #fa.goto_gripper(min_gripper_width) # fa.goto_pose_with_cartesian_control(test_tube_1) # fa.goto_gripper(force_gripper_width) # fa.goto_gripper(min_gripper_width) fa.goto_pose_with_cartesian_control(beaker_position1) fa.goto_pose_with_cartesian_control(beaker_position2) fa.goto_gripper(0.0, force=20) fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_z) fa.goto_gripper(min_gripper_width) fa.goto_pose_with_cartesian_control(initial_magnet_position3) fa.goto_pose_with_cartesian_control(initial_magnet_position1) fa.goto_pose_with_cartesian_control(initial_magnet_position2) fa.open_gripper() fa.goto_pose_with_cartesian_control(initial_magnet_position1) # for i in range(3): # for j in range(i+1): # fa.goto_gripper(0.0, force = 20) # fa.goto_gripper(min_gripper_width) # if i < 2: # fa.goto_pose_delta_with_cartesian_control(relative_pos_dist_x) # fa.goto_pose_with_cartesian_control(current_position,5) # current_joints = fa.get_joints() # current_joints[6] += math.pi # fa.goto_joints(list(current_joints)) # fa.goto_pose_delta_with_cartesian_control(relative_neg_dist_z) # fa.open_gripper() # fa.goto_pose_with_cartesian_control(initial_magnet_position1) #fa.goto_pose_delta_with_cartesian_control(relative_neg_dist_z) magnetic_calibration.stop_recording_data() #fa.open_gripper() print(magnetic_calibration.magnetic_data[0, :]) if args.filename is not None: magnetic_calibration.saveData(args.filename, global_max, min_gripper_width) magnetic_calibration.plotData(magnetic_calibration.magnetic_data, 'Raw Data Over Time') magnetic_calibration.plotGripperData( magnetic_calibration.gripper_state_data, 'Raw Data Over Time') magnetic_calibration.plotGripperData(magnetic_calibration.robot_state_data, 'Raw Data Over Time')
def run_main(): parser = argparse.ArgumentParser() parser.add_argument('--filename', type=str, default=None) args = parser.parse_args() fa = FrankaArm(async_cmds=True) fa.close_gripper() while fa.is_skill_done() == False: time.sleep(1) # fa.reset_pose() # fa.reset_joints() drawer_2_z_height = 0.12919677 drawer_3_z_height = 0.08264024 drawer_height = drawer_3_z_height initial_magnet_position1 = RigidTransform( rotation=np.array([[0, -1, 0], [0, 0, 1], [-1, 0, 0]]), translation=np.array([0.40926815, 0.20738414, drawer_height]), from_frame='franka_tool', to_frame='world') initial_magnet_position2 = RigidTransform( rotation=np.array([[0, -1, 0], [0, 0, 1], [-1, 0, 0]]), translation=np.array([0.40926815, 0.23738414, drawer_height]), from_frame='franka_tool', to_frame='world') relative_pos_dist_z = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, 0.08]), from_frame='franka_tool', to_frame='franka_tool') relative_pos_dist_y = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.08, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_rotation_z = RigidTransform(rotation=np.array([[0, 1, 0], [-1, 0, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_rotation_z = RigidTransform(rotation=np.array([[0, -1, 0], [1, 0, 0], [0, 0, 1]]), translation=np.array( [0.0, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_y = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, -0.13, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_z = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.0, 0.0, -0.08]), from_frame='franka_tool', to_frame='franka_tool') relative_pos_dist_x = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.03, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') relative_neg_dist_x = RigidTransform( rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([-0.03, 0.0, 0.0]), from_frame='franka_tool', to_frame='franka_tool') fa.goto_pose_with_cartesian_control(initial_magnet_position1) while fa.is_skill_done() == False: time.sleep(1) fa.goto_pose_with_cartesian_control(initial_magnet_position2) while fa.is_skill_done() == False: time.sleep(1) magnetic_calibration = MagneticCalibration() filename = '../calibration/2020-01-14 11-08 E1 2X Board Calibration.npz' magnetic_calibration.load_calibration_file(filename) num_samples = 10 noise_level = 1 # uT #fa.goto_gripper(0.0, force=160) # while fa.is_skill_done() == False: # time.sleep(1) magnetic_calibration.start_recording_data() time.sleep(0.5) greater_than_noise = False fa.goto_pose_delta_with_cartesian_control( relative_pos_dist_y, 5, stop_on_contact_forces=[20, 2, 20, 20, 20, 20]) while fa.is_skill_done() == False: mag_data = magnetic_calibration.get_previous_magnetic_samples( num_samples) dif_mag_data = np.diff(mag_data[:, 5]) mean_change = np.mean(dif_mag_data) print(mean_change) if (abs(mean_change) > noise_level) and not greater_than_noise: greater_than_noise = True if greater_than_noise and abs(mean_change) < 1: print("stopped skill") fa.stop_skill() time.sleep(0.01) # while fa.is_skill_done() == False: # time.sleep(1) fa.goto_pose_delta_with_cartesian_control(relative_neg_dist_y, 5) while fa.is_skill_done() == False: time.sleep(1) magnetic_calibration.stop_recording_data() #fa.open_gripper() while fa.is_skill_done() == False: time.sleep(1) print(magnetic_calibration.magnetic_data[0, :]) if args.filename is not None: magnetic_calibration.saveData(args.filename) magnetic_calibration.plotDataVsRobotState( magnetic_calibration.magnetic_data, magnetic_calibration.robot_state_data, 'Raw Data Over Distance') magnetic_calibration.plotData(magnetic_calibration.magnetic_data, 'Raw Data Over Time') magnetic_calibration.plotForceData(magnetic_calibration.force_state_data, 'Raw Data Over Time') magnetic_calibration.plotRobotStateData( magnetic_calibration.robot_state_data, 'Raw Data Over Time')
from frankapy import FrankaArm if __name__ == '__main__': print('Starting robot') fa = FrankaArm() fa.reset_joints() pose = fa.get_pose() pose.translation[0] = 0.75 # This should trigger an error fa.goto_pose(pose)
if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--intrinsics_file_path', type=str, default=AZURE_KINECT_CALIB_DATA) parser.add_argument('--transform_file_path', type=str, default=AZURE_KINECT_EXTRINSICS) parser.add_argument('--filename', type=str, default=None) args = parser.parse_args() # rospy.init_node("Test azure kinect calibration") print('Starting robot') fa = FrankaArm() cv_bridge = CvBridge() ir_intrinsics = CameraIntrinsics.load(args.intrinsics_file_path) kinect2_overhead_to_world_transform = RigidTransform.load( args.transform_file_path) print('Opening Grippers') fa.open_gripper() print('Reset with pose') fa.reset_pose(10) print('Reset with joints') fa.reset_joints()
import argparse from frankapy import FrankaArm if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--time', '-t', type=float, default=100) parser.add_argument('--open_gripper', '-o', action='store_true') args = parser.parse_args() print('Starting robot') fa = FrankaArm() if args.open_gripper: fa.open_gripper() fa.selective_guidance_mode( args.time, use_impedance=True, use_ee_frame=True, cartesian_impedances=[600.0, 0.0, 0.0, 0.0, 0.0, 0.0])
from frankapy import FrankaArm import numpy as np from autolab_core import RigidTransform if __name__ == '__main__': print('Starting robot') fa = FrankaArm() xtranslation_3cm = RigidTransform(rotation=np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), translation=np.array([0.03, 0, 0]), from_frame='franka_tool', to_frame='world') random_position = RigidTransform( rotation=np.array([[0.9323473, -0.35858258, 0.04612846], [-0.35996283, -0.93259467, 0.02597504], [0.03370496, -0.04082229, -0.99859775]]), translation=np.array([0.39247965, -0.21613652, 0.3882055]), from_frame='franka_tool', to_frame='world') print(fa.get_pose().translation) print(fa.get_joints()) desired_joints_1 = [ -0.52733715, 0.25603565, 0.47721503, -1.26705864, 0.00600359, 1.60788199, 0.63019184 ]
import numpy as np from autolab_core import RigidTransform from frankapy import FrankaArm if __name__ == "__main__": fa = FrankaArm() # reset franka to its home joints fa.reset_joints() # read functions T_ee_world = fa.get_pose() print('Translation: {} | Rotation: {}'.format(T_ee_world.translation, T_ee_world.quaternion)) joints = fa.get_joints() print('Joints: {}'.format(joints)) gripper_width = fa.get_gripper_width() print('Gripper width: {}'.format(gripper_width)) # gripper controls print('Closing gripper') fa.close_gripper() print('Opening gripper to a specified position') fa.goto_gripper(0.02) print('Opening gripper all the way') fa.open_gripper()
from frankapy import FrankaArm import numpy as np from autolab_core import RigidTransform fa = FrankaArm() trans, rot = np.load("above_pose.npy") #fa.close_gripper() above_position = RigidTransform(rotation=rot, translation=trans, from_frame='franka_tool', to_frame='world') fa.goto_pose_with_cartesian_control( above_position, cartesian_impedances=[3000, 3000, 100, 300, 300, 300]) fa.open_gripper() input("Add gripper") fa.close_gripper() trans, rot = np.load("insert_pose.npy") insert_position = RigidTransform(rotation=rot, translation=trans, from_frame='franka_tool', to_frame='world') insert_position.translation[-1] -= 0.01 # manual adjustment fa.goto_pose_with_cartesian_control( insert_position, cartesian_impedances=[20, 20, 2000, 300, 300, 300] ) #one of these but with impedance control? compliance comes from the matrix so I think that's good enough
magnetic_data = calibrated[4:7]-transform_ref[0:3] return magnetic_data if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--intrinsics_file_path', type=str, default=AZURE_KINECT_CALIB_DATA) parser.add_argument('--transform_file_path', type=str, default=AZURE_KINECT_EXTRINSICS) parser.add_argument('--object', type=str, default=AZURE_KINECT_EXTRINSICS) args = parser.parse_args() # rospy.init_node("Test azure kinect calibration") print('Starting robot') fa = FrankaArm() cv_bridge = CvBridge() ir_intrinsics = CameraIntrinsics.load(args.intrinsics_file_path) kinect2_overhead_to_world_transform = RigidTransform.load(args.transform_file_path) print('Opening Grippers') fa.open_gripper() print('Reset with pose') fa.reset_pose() print('Reset with joints') fa.reset_joints()
import numpy as np from autolab_core import RigidTransform from frankapy import FrankaArm, SensorDataMessageType from frankapy import FrankaConstants as FC from frankapy.proto_utils import sensor_proto2ros_msg, make_sensor_group_msg from frankapy.proto import PosePositionSensorMessage, ShouldTerminateSensorMessage, CartesianImpedanceSensorMessage from franka_interface_msgs.msg import SensorDataGroup from frankapy.utils import min_jerk, min_jerk_weight import rospy if __name__ == "__main__": fa = FrankaArm() fa.reset_joints() rospy.loginfo('Generating Trajectory') p0 = fa.get_pose() p1 = p0.copy() T_delta = RigidTransform(translation=np.array([0, 0, 0.2]), rotation=RigidTransform.z_axis_rotation( np.deg2rad(30)), from_frame=p1.from_frame, to_frame=p1.from_frame) p1 = p1 * T_delta fa.goto_pose(p1) T = 5 dt = 0.02 ts = np.arange(0, T, dt)
'/path/to/azure_kinect_calibration/calib/azure_kinect_left/kinect2_left_to_world.tf' if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--intrinsics_file_path', type=str, default=AZURE_KINECT_CALIB_DATA) parser.add_argument('--transform_file_path', type=str, default=AZURE_KINECT_EXTRINSICS) parser.add_argument('--filename', type=str, default=None) args = parser.parse_args() # rospy.init_node("Test azure kinect calibration") print('Starting robot') fa = FrankaArm() cv_bridge = CvBridge() ir_intrinsics = CameraIntrinsics.load(args.intrinsics_file_path) kinect2_left_to_world_transform = RigidTransform.load( args.transform_file_path) # print('Opening Grippers') # fa.open_gripper() print('Reset with pose') fa.reset_pose() print('Reset with joints') fa.reset_joints()
import numpy as np from frankapy import FrankaArm, SensorDataMessageType from frankapy import FrankaConstants as FC from frankapy.proto_utils import sensor_proto2ros_msg, make_sensor_group_msg from frankapy.proto import ForcePositionSensorMessage, ForcePositionControllerSensorMessage from franka_interface_msgs.msg import SensorDataGroup from frankapy.utils import transform_to_list, min_jerk from tqdm import trange import rospy if __name__ == "__main__": fa = FrankaArm() fa.reset_joints() fa.close_gripper() while True: input( 'Presse [Enter] to enter guide mode and move robot to be on top of a flat surface.' ) fa.run_guide_mode() while True: inp = input('[r]etry or [c]ontinue? ') if inp not in ('r', 'c'): print('Please give valid input!') else: break if inp == 'c': break
import GPy as gpy from autolab_core import RigidTransform, YamlConfig from visualization import Visualizer3D as vis3d from perception_utils.apriltags import AprilTagDetector from perception_utils.realsense import get_first_realsense_sensor from modelfree import processimgs, vae from modelfree.ILPolicy import ILPolicy, process_action_data #from test_module.test_behaviour_cloning import test_behaviour_cloning as get_il_policy from perception import Kinect2SensorFactory, KinectSensorBridged from sensor_msgs.msg import Image from perception.camera_intrinsics import CameraIntrinsics robot = True if robot: from frankapy import FrankaArm fa = FrankaArm() import ipdb ipdb.set_trace() else: rospy.init_node("fo") class Robot(): def __init__(self, visualize=False, setup_pb=True): self.contact_threshold = -3.5 # less than is in contact self.autoencoder = None self.il_policy = None self.bridge = cv_bridge.CvBridge() self.shape_to_goal_loc = {} self.shape_type_to_ids = {Rectangle: (0, 1, 2, 3)} self.shape_goal_type_to_ids = {Rectangle: 1}
import argparse from frankapy import FrankaArm if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--use_pose', '-u', action='store_true') parser.add_argument('--close_gripers', '-c', action='store_true') args = parser.parse_args() print('Starting robot') fa = FrankaArm() if args.use_pose: print('Reset with pose') fa.reset_pose() else: print('Reset with joints') fa.reset_joints() if args.close_gripers: print('Closing Grippers') fa.close_gripper() else: print('Opening Grippers') fa.open_gripper()
def wait_for_enter(): if sys.version_info[0] < 3: raw_input('Press Enter to continue:') else: input('Press Enter to continue:') if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--time', '-t', type=float, default=10) parser.add_argument('--open_gripper', '-o', action='store_true') args = parser.parse_args() print('Starting robot') fa = FrankaArm() if args.open_gripper: fa.open_gripper() print( 'Be very careful!! Make sure the robot can safely move to HOME JOINTS Position.' ) wait_for_enter() fa.reset_joints() print('Using default joint impedances to move back and forth.') wait_for_enter() fa.goto_joints(FC.READY_JOINTS, joint_impedances=FC.DEFAULT_JOINT_IMPEDANCES) fa.goto_joints(FC.HOME_JOINTS) print('Now using different joint impedances to move back and forth.')
translation=np.array([0.52567046, 0.28332678, 0.37527456]), from_frame='franka_tool', to_frame='world') fa.goto_pose_with_cartesian_control(desired_tool_pose, duration=duration, cartesian_impedances=gains) if open_gripper: fa.open_gripper() if __name__ == '__main__': # Examples and for collecting robot poses # Everything is hard coded :/ print('Starting robot') fa = FrankaArm() go2start(fa) dw = DoorWorld() print(fa.get_pose()) print(fa.get_joints()) input("Press enter to continue") go2door(fa, close_gripper=True, use_planner = True, world=dw) fa.close_gripper() res = turn_knob(fa, use_planner = True, world = dw) if res == "expected_model_failure" or res == "model_deviation": gains1 = [1000,1000,1000,1,1,1] dmp_info2 = "/home/stevenl3/misc_backups/robot_data_door_turn2_position_weights.pkl" fa.execute_position_dmp(dmp_info2, duration=10, skill_desc='position_dmp', cartesian_impedance=gains1)
import numpy as np import math import rospy import argparse import pickle from autolab_core import RigidTransform, Point from frankapy import FrankaArm if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--pose_dmp_weights_file_path', '-f', type=str) args = parser.parse_args() print('Starting robot') fa = FrankaArm() pose_dmp_file = open(args.pose_dmp_weights_file_path, "rb") pose_dmp_info = pickle.load(pose_dmp_file) fa.execute_pose_dmp(pose_dmp_info, duration=4.2)
import argparse from frankapy import FrankaArm if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--time', '-t', type=float, default=100) parser.add_argument('--open_gripper', '-o', action='store_true') args = parser.parse_args() print('Starting robot') fa = FrankaArm() if args.open_gripper: fa.open_gripper() print('Applying 0 force torque control for {}s'.format(args.time)) fa.apply_effector_forces_torques(args.time, 0, 0, 0)