diff --git a/calibrations/r2_tforms_alt.yaml b/calibrations/r2_tforms_alt.yaml
index 11fc58411a490c748086555cf2187f180bfea029..d68f4ba495114d6360d4b7f02f4bb3cf80885e9c 100644
--- a/calibrations/r2_tforms_alt.yaml
+++ b/calibrations/r2_tforms_alt.yaml
@@ -4,28 +4,21 @@ calibration:
   quat_ET: [-0.2705980500730985, -0.6532814824381882, 0.27059805007309845, 0.6532814824381883]
   quat_WR: [0.005077893908742152, 0.007918175551724624, 0.013359410788764806, 0.9998665129069784]
 measurements:
-  errors:
-  - [-0.0002168960447584468, -0.0010668195200736752, 0.00018006898437752938]
-  - [0.00016928366139346007, 0.0005170638802264593, 0.00037850513702630817]
-  - [0.0011599950953162796, 0.0003526010651510314, -0.00012294180296171242]
-  - [-0.0003939341283262232, -0.00011329636962762249, -0.00038522469969973216]
-  - [-0.0007184485836231325, 0.00031045094431508824, -5.0407618752634775e-05]
   pos_RE:
-  - [0.0584231472040356, -0.7888108610213361, 0.29224624613259653]
-  - [-0.1453238446293856, -0.35482213917107674, 0.28432730816842033]
-  - [0.2834969700403753, -0.36612935013429077, 0.291672094257169]
-  - [-0.3807992876767562, -0.566308084352216, 0.28314301995943336]
-  - [0.4842187683428001, -0.2379454794306125, 0.19894353741958098]
+  - [-0.2516333141744929, -0.4116135285217244, 0.2838269936302523]
+  - [-0.03569841229825402, -0.4168126158425754, 0.28734125017362583]
   quat_RE:
-  - [0.27030443249517855, 0.6529994452370946, -0.2706893166892845, 0.6536471006007708]
-  - [0.2702398705984472, 0.6530912744201057, -0.27078819741106336, 0.6535410865111108]
-  - [0.27031418268873514, 0.653199293004063, -0.2706655963918572, 0.6534531820919948]
-  - [0.3529762575660405, 0.353731950105599, -0.1464218844920094, 0.8537224963716084]
-  - [0.0744084309460823, 0.7683808434582252, -0.5132226899090738, 0.3750423114437397]
+  - [-0.7125705366105385, 0.012338676350220358, 0.7014665647172886, 0.005970427473748586]
+  - [-0.712339087472529, 0.012479682698013866, 0.7017001944059005, 0.005841159926140043]
 targets:
   pos_W:
-  - [0, -0.215, 0]
   - [-0.215, 0.215, 0]
+  - [0, 0.215, 0]
   - [0.215, 0.215, 0]
-  - [-0.322, 0, 0]
+  - [0.215, 0, 0]
+  - [0.215, -0.215, 0]
+  - [0, -0.215, 0]
+  - [-0.215, -0.215, 0]
+  - [-0.215, 0, 0]
   - [0.322, 0.322, 0]
+  - [-0.322, 0, 0]
diff --git a/src/Calibrator.py b/src/Calibrator.py
index b0b67596956f85ffec5a68c7a05763ef6b3a00b9..a3dda9cb300cc91a594e10cd11bb27a3961d647c 100644
--- a/src/Calibrator.py
+++ b/src/Calibrator.py
@@ -28,7 +28,7 @@ class Calibrator(object):
         self.controller = None
 
 
-    def measureConfigurations(self, prompts, prior_calibs):
+    def measureConfigurations(self, prompts, prior_calibs, arm):
         """
         Calibrate the arm for the robot's pose relative to the world
         and the position of the tool tip relative to the end effector.
@@ -46,7 +46,7 @@ class Calibrator(object):
 
         # gather configurations
         # [ ( [joint angles] , ROS pose message ) , ... ]
-        configurations = self.controller.prompt_configurations(prompts, prior_calibs)
+        configurations = self.controller.prompt_configurations(prompts, prior_calibs, arm=arm)
 
         pos_RE = [[c[1].pose.position.x, c[1].pose.position.y, c[1].pose.position.z]
                 for c in configurations]
@@ -296,10 +296,16 @@ def main(calibFile_in, calibFile_out, calibData):
         calibData['calibration'] = calibration
 
     # If the number of measurements does not match the number of targets
+    arm = 0
+    print(calibFile_in)
+    if calibFile_in.split('/')[-1].startswith('r2'):
+        arm = 1
+    else:
+        sys.exit(0)
     if len(pos_RE) != nTarget or len(quat_RE) != nTarget:
         # Take measurements of the targets
         for i in range(len(pos_RE), nTarget):
-            (pos_RE_Mx3,quat_RE_Mx4) = cal.measureConfigurations([pos_W_Mx3[i,]], calibration)
+            (pos_RE_Mx3,quat_RE_Mx4) = cal.measureConfigurations([pos_W_Mx3[i,]], calibration, arm)
             pos_RE.extend(pos_RE_Mx3.tolist())
             quat_RE.extend(quat_RE_Mx4.tolist())
 
@@ -370,8 +376,7 @@ def main(calibFile_in, calibFile_out, calibData):
 
     # Save them to file
     with open(calibFile_out,'w') as file:
-        yaml.dump(calibData,file,
-            default_flow_style=None)
+        yaml.dump(calibData,file, default_flow_style=None)
 
 
 if __name__=="__main__":
@@ -395,8 +400,7 @@ if __name__=="__main__":
         calibFile_out = args.calibFile_in
 
     # Read calibration file
-    with open(calibFile_in,'r') as file:
-        calibData = yaml.load(file,
-            Loader=yaml.FullLoader)
+    with open(calibFile_in, 'r') as file:
+        calibData = yaml.load(file, Loader=yaml.FullLoader)
 
     main(calibFile_in, calibFile_out, calibData)
diff --git a/src/KeyboardController.py b/src/KeyboardController.py
index 1867ce38142b7f206b3ddb5527fec0da00376407..31208d276207ffc34ef7e48bbf1a0778f6b7e097 100644
--- a/src/KeyboardController.py
+++ b/src/KeyboardController.py
@@ -37,10 +37,14 @@ def getTransformMat(quat, pos):
     return np.linalg.inv(T)
 
 # also used for fast-calibration-ik
-_vert_or = np.array([[-6.74517010e-04,  8.33315658e-04, -9.99999404e-01, -2.90597873e-05],
+_vert_or = [np.array([[-6.74517010e-04,  8.33315658e-04, -9.99999404e-01, -2.90597873e-05],
                      [ 8.33732192e-04, -9.99999285e-01, -8.33877944e-04, -4.81068309e-05],
                      [-9.99999404e-01, -8.34294187e-04,  6.73821778e-04,  2.74792069e-06],
-                     [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00,  1.00000000e+00]])
+                     [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00,  1.00000000e+00]]),
+            np.array([[-6.74517010e-04, -8.33315658e-04,  9.99999404e-01, -2.90597873e-05], # 2nd arm
+                     [ 8.33732192e-04,  9.99999285e-01,  8.33877944e-04, -4.81068309e-05],
+                     [-9.99999404e-01,  8.34294187e-04, -6.73821778e-04,  2.74792069e-06],
+                     [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00,  1.00000000e+00]])]
 
 
 class KeyboardController(Controller):
@@ -542,7 +546,7 @@ class KeyboardController(Controller):
             pass
 
 
-    def prompt_configurations(self, prompt=None, prior_calibs=None):
+    def prompt_configurations(self, prompt=None, prior_calibs=None, arm=0):
         """
         Prompts user to control the robot to a series of configurations.
         Relative to robot base, the robot can be translated in the:
@@ -586,7 +590,6 @@ class KeyboardController(Controller):
         if isinstance(prompt, list):
 
             for p in prompt:
-                print(p)
                 print('Move robot tip to {}'.format(str(p)))
 
                 if priors:
@@ -594,7 +597,7 @@ class KeyboardController(Controller):
                     mat = np.identity(4)
                     p[2] += 0.01 # go 1cm above bed for safety
                     mat[:3,3] = p
-                    mat = world2armT.dot(mat).dot(_vert_or).dot(tip2armT)
+                    mat = world2armT.dot(mat).dot(_vert_or[arm]).dot(tip2armT)
                     q = Rotation.from_dcm(mat[:3,:3]).as_quat()
                     p_r = mat[0:3,3]
                     gpose = Pose()