Positions and frames of reference

General Robotics Forum - All aspects of robots and their applications. 

Bookmark this page:  YahooMyWeb Yahoo!  Google Google  Windows Live Favorites Windows Live  del.icio.us del.icio.us  digg digg  Add to Netscape Netscape
Subject Author Date
Positions and frames of reference David McMillan 09-13-2008
If you were  Registered and logged in, you could reply and use other advanced thread options
Posted by David McMillan on September 13, 2008, 7:57 am



    I'm trying to work with pairs of industrial robots that need to move to
specific positions relative to each other within a given frame of
reference. To do this, I need a means to (among other things) take the
6DOF (3d location and Euler-angle orientation) position of one robot and
translate it into the other robot's frame of reference. And just to
frost the cake, I sometimes need to match the two robots orientation in
two axes but not the third (think of two pencils held point-to-point --
their long axes must be kept parallel, but they are free to rotate
*around* their long axes).
    I've done days and weeks of Googling, and found lots of articles on
matrix algebra and converting vectors between reference frames, but
nothing directly applicable to what I need. And I don't have the time,
resources, or skills to derive the entire process from first principles.
    I figure I can't be the first person to need to do something like this,
so somewhere there must be an algorithm or a set of guidelines from
someone else's previous experience that I just haven't been able to find.
    Anyone ever see something like this?



Posted by D Herring on September 14, 2008, 1:30 am


David McMillan wrote:
>
> I'm trying to work with pairs of industrial robots that need to move
> to specific positions relative to each other within a given frame of
> reference. To do this, I need a means to (among other things) take the
> 6DOF (3d location and Euler-angle orientation) position of one robot and
> translate it into the other robot's frame of reference. And just to
> frost the cake, I sometimes need to match the two robots orientation in
> two axes but not the third (think of two pencils held point-to-point --
> their long axes must be kept parallel, but they are free to rotate
> *around* their long axes).
> I've done days and weeks of Googling, and found lots of articles on
> matrix algebra and converting vectors between reference frames, but
> nothing directly applicable to what I need. And I don't have the time,
> resources, or skills to derive the entire process from first principles.
> I figure I can't be the first person to need to do something like
> this, so somewhere there must be an algorithm or a set of guidelines
> from someone else's previous experience that I just haven't been able to
> find.
> Anyone ever see something like this?

Try calculating all coordinates in a "world frame" that contains the
base of each arm. Look up "Denavit-Hartenberg Parameters" if you're
having trouble calculating the transformation matrix for an arm.

Start with the following homogeneous transformation matrices.
Pa, Pb - base of each arm in the world frame [known]
Ta, Tb - arm transformation matrices [unknown]
Px, Py - ends of an object in the world frame [known]

Then you need to solve Pa*Ta=Px and Pb*Tb=Py for Ta and Tb to get the
arms holding both ends of the object.

Given a spherical wrist, there are closed-form solutions for the
inverse kinematics of 6-DOF arms given a desired transformation matrix.

Does that help?

- Daniel

Posted by John Nagle on September 14, 2008, 2:50 pm


D Herring wrote:
> David McMillan wrote:
>> I'm trying to work with pairs of industrial robots that need to
>> move to specific positions relative to each other within a given frame
>> of reference. To do this, I need a means to (among other things) take
>> the 6DOF (3d location and Euler-angle orientation) position of one
>> robot and translate it into the other robot's frame of reference. And
>> just to frost the cake, I sometimes need to match the two robots
>> orientation in two axes but not the third (think of two pencils held
>> point-to-point -- their long axes must be kept parallel, but they are
>> free to rotate *around* their long axes).
>> I've done days and weeks of Googling, and found lots of articles
>> on matrix algebra and converting vectors between reference frames, but
>> nothing directly applicable to what I need. And I don't have the
>> time, resources, or skills to derive the entire process from first
>> principles.
>> I figure I can't be the first person to need to do something like
>> this, so somewhere there must be an algorithm or a set of guidelines
>> from someone else's previous experience that I just haven't been able
>> to find.
>> Anyone ever see something like this?
>

There are lots of forward and reverse kinematic packages available
for converting between cartesian coordinates in world space and robot
joint coordinates. That's something you can buy or maybe download.
But two-arm coordination is rare. There are research papers
available, though.

Motoman (Yuskawa) does this on a regular basis, because they sell
two-armed robots. Maybe they can help you.

If you need a quick solution, the best I can suggest is to get an
inverse kinematics package and drive both robots based on desired
end effector positions. Or consider the Robotics Toolbox for
Matlab.

                John Nagle


Posted by David McMillan on September 15, 2008, 10:08 am


John Nagle wrote:
> D Herring wrote:
>> David McMillan wrote:
>>> I'm trying to work with pairs of industrial robots that need to
>>> move to specific positions relative to each other within a given
>>> frame of reference. To do this, I need a means to (among other
>>> things) take the 6DOF (3d location and Euler-angle orientation)
>>> position of one robot and translate it into the other robot's frame
>>> of reference. And just to frost the cake, I sometimes need to match
>>> the two robots orientation in two axes but not the third (think of
>>> two pencils held point-to-point -- their long axes must be kept
>>> parallel, but they are free to rotate *around* their long axes).
>>> I've done days and weeks of Googling, and found lots of articles
>>> on matrix algebra and converting vectors between reference frames,
>>> but nothing directly applicable to what I need. And I don't have the
>>> time, resources, or skills to derive the entire process from first
>>> principles.
>>> I figure I can't be the first person to need to do something like
>>> this, so somewhere there must be an algorithm or a set of guidelines
>>> from someone else's previous experience that I just haven't been able
>>> to find.
>>> Anyone ever see something like this?
>
> There are lots of forward and reverse kinematic packages available
> for converting between cartesian coordinates in world space and robot
> joint coordinates. That's something you can buy or maybe download.
> But two-arm coordination is rare. There are research papers
> available, though.
>
> Motoman (Yuskawa) does this on a regular basis, because they sell
> two-armed robots. Maybe they can help you.
>
> If you need a quick solution, the best I can suggest is to get an
> inverse kinematics package and drive both robots based on desired
> end effector positions. Or consider the Robotics Toolbox for
> Matlab.
>
> John Nagle

    Any inverse kinematics packages you can recommend? Something gentle on
beginners? My needs are pretty basic -- stuff that would probably be
easy to do if I just knew the math.
    Robotics Toolbox for Matlab sounds good, but I suspect the whole
package (I don't have Matlab) costs a very pretty penny.


Posted by David McMillan on September 15, 2008, 10:06 am


D Herring wrote:
> David McMillan wrote:
>> I'm trying to work with pairs of industrial robots that need to
>> move to specific positions relative to each other within a given frame
>> of reference. To do this, I need a means to (among other things) take
>> the 6DOF (3d location and Euler-angle orientation) position of one
>> robot and translate it into the other robot's frame of reference. And
>> just to frost the cake, I sometimes need to match the two robots
>> orientation in two axes but not the third (think of two pencils held
>> point-to-point -- their long axes must be kept parallel, but they are
>> free to rotate *around* their long axes).
>> I've done days and weeks of Googling, and found lots of articles
>> on matrix algebra and converting vectors between reference frames, but
>> nothing directly applicable to what I need. And I don't have the
>> time, resources, or skills to derive the entire process from first
>> principles.
>> I figure I can't be the first person to need to do something like
>> this, so somewhere there must be an algorithm or a set of guidelines
>> from someone else's previous experience that I just haven't been able
>> to find.
>> Anyone ever see something like this?
>
> Try calculating all coordinates in a "world frame" that contains the
> base of each arm. Look up "Denavit-Hartenberg Parameters" if you're
> having trouble calculating the transformation matrix for an arm.
>
> Start with the following homogeneous transformation matrices.
> Pa, Pb - base of each arm in the world frame [known]
> Ta, Tb - arm transformation matrices [unknown]
> Px, Py - ends of an object in the world frame [known]
>
> Then you need to solve Pa*Ta=Px and Pb*Tb=Py for Ta and Tb to get the
> arms holding both ends of the object.
>
> Given a spherical wrist, there are closed-form solutions for the inverse
> kinematics of 6-DOF arms given a desired transformation matrix.
>
> Does that help?
>
> - Daniel

    Hmmm... maybe overkill for my needs. I could probably use that if I
had a few months to learn the math, but I'm a bit pressed for time these
days. :) Each robot is already doing its own kinematics internally --
any time I need to know the current position/orientation of a robot's
tool in its own reference frame, I can get it. What I need is to find a
way to convert that position from one robot's reference frame to the
other robot's reference frame, and modify it.
    Imagine that one robot is holding a bolt, and the other robot is
holding a nut. The tool Z axis is straight through both bolt and nut,
such that in any position where threading the bolt into the nut is
possible, the tool Z axes of both robots are perfectly parallel. If I
assume that both robots are operating in a common base frame of
reference, and I know the position of the nut-holding robot, I need to
generate a position for the bolt-holding robot that will allow the bolt
to be threaded. All orientation coords are in ZYX-ordered Euler angles.



The site map in XML format XML site map
other useful resources:
Official Robosapien Website
Lego Mindstorms Website

Contact Us | Privacy Policy