# I have never met a Bayesian....

 Submitted by Dancy on Mon, 2009-03-23 02:44

Hope I don't sound like too much of a moron. I am new to robotics. I have just purchased two Nachi SA160-F industrial robots with AR controllers. My goal is to use them for light machining and plasma cutting applications. I work in a CNC shop and all of my equipment runs off of 'G' code. I have CAD/CAM programs that produce G code for me and I also write it by hand.

For those of you not familiar with it, the basics I want to imitate are from the G1 code. A typical command would be in the form of G1 X3.0550 Y-0.5000 F10. This would move the X axis to a position 3.0550 inches to the right of the current zero position and Y 1/2 inch below that same zero point, both at a rate of 10 inches per minute. The machine would move in a diagonal fashion.

My robot uses a command like MOVEJ L,(123.567,-123.456,deg,deg,deg,deg) A=1,S=500,H=0. Each 'deg' number represents one of the six joints and the angle in degrees that it should move to at speed 500.

My problem is how to get from a Cartesian coordinate system to this 'Arms of such and such length-degree thing'. I am thinking that is what these Bayesian/Kinematics stuff is. Am I correct? and if so can you show me how to use it?

I have made a living writing C code several years ago (no c++ stuff) so I do have some clue about writing code. Just not familiar with this robotics movement stuff.

Help, help...

Dancy

### I have never met a Bayesian....

On Mon, 23 Mar 2009, dancy_1 [..] ... wrote:

> Hope I don't sound like too much of a moron. I am new to robotics. I have
> just purchased two Nachi SA160-F industrial robots with AR controllers.
> My goal is to use them for light machining and plasma cutting
> applications. I work in a CNC shop and all of my equipment runs off of
> 'G' code. I have CAD/CAM programs that produce G code for me and I also
> write it by hand.

Then EMC2 might be the easier project for you:
<http://www.linuxcnc.org/>...

> For those of you not familiar with it, the basics I want to imitate are
> from the G1 code. A typical command would be in the form of G1 X3.0550
> Y-0.5000 F10. This would move the X axis to a position 3.0550 inches to
> the right of the current zero position and Y 1/2 inch below that same
> zero point, both at a rate of 10 inches per minute. The machine would
> move in a diagonal fashion.
>
> My robot uses a command like MOVEJ L,(123.567,-123.456,deg,deg,deg,deg)
> A=1,S=500,H=0. Each 'deg' number represents one of the six joints and the
> angle in degrees that it should move to at speed 500.
>
> My problem is how to get from a Cartesian coordinate system to this 'Arms
> of such and such length-degree thing'. I am thinking that is what these
> Bayesian/Kinematics stuff is. Am I correct? and if so can you show me how
> to use it?

You are not really correct :-) (As a minimal amount of search on the
Wikipedia would have revealed...)

> I have made a living writing C code several years ago (no c++ stuff) so I
> do have some clue about writing code. Just not familiar with this
> robotics movement stuff.
>
> Help, help...

Please do an effort to look into things a bit more, and then come back to

Herman

>
> Dancy
>

### Inverse kinematic

What you need is the inverse kinematics, ie calculate the position of joints in terms of a Cartesian coordinate. This requires knowledge of the kinematic model of your robot. Once you have the model, it's possible to use the KDL library to calculate numerical inverse kinematics. By against, before you invest in the modeling of your system, I strongly suggest to look at the manual of your robot, because it would be very surprising that there is no function to move the robot in Cartesian mode.

### When you say 'Kinematic

When you say 'Kinematic model' of my robot is that information that describes the distance between joints and rotation limits?

You are correct, there is a very basic set of cartesian movemtents called 'shift' where I can cause the robot to shift from the current pose in a simple X,Y,Z cloud. My end goal is to describe a path along a contour while keeping the tool tip at a constant tangent to the surface. Such as moving a router tip to cut the bust of Beethoven out of foam.

### When you say 'Kinematic

On Tue, 24 Mar 2009, dancy_1 [..] ... wrote:

> When you say 'Kinematic model' of my robot is that information that
> describes the distance between joints and rotation limits?

It describes the distances and _orientation_ between joints, as well as the
(mathematical) 'zeros' in the joint positions. The limits are one of the
many _properties_ of a given kinematic model.

> You are correct, there is a very basic set of cartesian movemtents called
> 'shift' where I can cause the robot to shift from the current pose in a
> simple X,Y,Z cloud. My end goal is to describe a path along a contour
> while keeping the tool tip at a constant tangent to the surface. Such as
> moving a router tip to cut the bust of Beethoven out of foam.

The latter paragraph is about the specification of a 'trajectory', which is
(to a large extent) independent of the kinematic model of the robot doing

Orocos has a rather extensive motion specification framework in the making,
to be integrated in KDL in the coming months...

Herman

### When you say 'Kinematic

As Herman saids, the trajectory is independant of the kinematic model of
your robot. However, you will need to inverse kinematics to calculate the
joint's position from the cartesian set point. This could be done
numerically, but you still need the parameters of your robot. You could use
the so popular DH parameters with Craig's method from :

http://www.amazon.com/Introduction-Robotics-Mechanics-Control-3rd/dp/020...

Apart of that, I still very surprised that the manufacturer doesn't gives
you the opportunity to use cartesian set points. Is there no function that
allows you to interpolate a linear path from a point to another? If it is
possible to do with the instructions at the joints, it is most likely that
the kinematic equation is in the controller.

Philippe

2009/3/24 Herman Bruyninckx <Herman [dot] Bruyninckx [..] ...>

> On Tue, 24 Mar 2009, dancy_1 [..] ... wrote:
>
> > When you say 'Kinematic model' of my robot is that information that
> > describes the distance between joints and rotation limits?
>
> It describes the distances and _orientation_ between joints, as well as the
> (mathematical) 'zeros' in the joint positions. The limits are one of the
> many _properties_ of a given kinematic model.
>
> > You are correct, there is a very basic set of cartesian movemtents called
> > 'shift' where I can cause the robot to shift from the current pose in a
> > simple X,Y,Z cloud. My end goal is to describe a path along a contour
> > while keeping the tool tip at a constant tangent to the surface. Such as
> > moving a router tip to cut the bust of Beethoven out of foam.
>
> The latter paragraph is about the specification of a 'trajectory', which is
> (to a large extent) independent of the kinematic model of the robot doing
>
> Orocos has a rather extensive motion specification framework in the making,
> to be integrated in KDL in the coming months...
>
> Herman
>
> > --
> > Orocos-Users mailing list
> > Orocos-Users [..] ...
> > http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
> >
> > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> >
> >
>
> --
> K.U.Leuven, Mechanical Eng., Mechatronics & Robotics Research Group
> <http://people.mech.kuleuven.be/~bruyninc<http://people.mech.kuleuven.be/%7Ebruyninc>>
> Tel: +32 16 322480
> Coordinator of EURON (European Robotics Research Network)
> <http://www.euron.org>
> Open Realtime Control Services <http://www.orocos.org>
>
> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
>
> --
> Orocos-Users mailing list
> Orocos-Users [..] ...
> http://lists.mech.kuleuven.be/mailman/listinfo/orocos-users
>
> Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
>
>