From 87e9efe74eaa5759fedc0f1e152fd66f442125c7 Mon Sep 17 00:00:00 2001
From: Olivier R-D <olivier@dummy.com>
Date: Fri, 7 Jun 2013 21:52:10 +0200
Subject: [PATCH] add tanslate_tool, some cleanup

---
 urx/urx.py | 33 ++++++++++++++++++++++++++++-----
 1 file changed, 28 insertions(+), 5 deletions(-)

diff --git a/urx/urx.py b/urx/urx.py
index bf4d53f..d414765 100644
--- a/urx/urx.py
+++ b/urx/urx.py
@@ -432,15 +432,32 @@ class Robot(URRobot):
         self.orient(orient, acc, vel, wait)
 
     def translate(self, vect, acc=None, vel=None, wait=True):
-        trans = self.get_transform()
-        trans.pos += m3d.Vector(vect)
-        return self.apply_transform(trans, acc, vel, wait)
+        """
+        move tool in base coordinate, keeping orientation
+        """
+        t = m3d.Transform()
+        t.pos += vect
+        return self.add_transform_base(t, acc, vel, wait)
+
+    def translate_tool(self, vect, acc=None, vel=None, wait=True):
+        """
+        move tool in tool coordinate, keeping orientation
+        """
+        t = m3d.Transform()
+        t.pos += vect
+        return self.add_transform_tool(t, acc, vel, wait)
 
     def set_pos(self, vect, acc=None, vel=None, wait=True):
+        """
+        set tool to given pos, keeping constant orientation
+        """
         trans = m3d.Transform(self.get_orientation(), m3d.Vector(vect))
         return self.apply_transform(trans, acc, vel, wait)
 
     def apply_transform(self, trans, acc=None, vel=None, wait=True):
+        """
+        move tcp to point and orientation defined by a transformation
+        """
         if not acc: 
             acc = self.default_linear_acceleration
         if not vel: 
@@ -450,7 +467,7 @@ class Robot(URRobot):
         if pose != None : #movel does not return anything when wait is False
             return self.csys_inv * m3d.Transform(pose)
 
-    def add_transform_b(self, trans, acc=None, vel=None, wait=True):
+    def add_transform_base(self, trans, acc=None, vel=None, wait=True):
         """
         Add transform expressed in base coordinate
         """
@@ -465,11 +482,17 @@ class Robot(URRobot):
         return self.apply_transform(pose * trans, acc, vel, wait)
 
     def get_transform(self, wait=False):
+        """
+        get current transform from base to to tcp
+        """
         pose = URRobot.getl(self, wait)
         trans = self.csys_inv * m3d.Transform(pose) 
         return trans
 
     def get_pose(self, wait=False):
+        """
+        get current transform from base to to tcp
+        """
         return self.get_transform(wait)
 
     def get_orientation(self, wait=False):
@@ -507,7 +530,7 @@ class Robot(URRobot):
             return self.movels(pose, acc, vel, radius, wait)
         t = m3d.Transform(pose)
         if relative:
-            return self.add_transform_b(t, acc, vel, wait)
+            return self.add_transform_base(t, acc, vel, wait)
         else:
             return self.apply_transform(t, acc, vel, wait)