I need to get coordinates of the specific points from 2D CAD file and transform them so that I could use them to move the robotic arm to those points. The problem is that I only get x y z coordinates and the robotic arm needs x y z Tx Ty Tz coordinates to move to the certain position.

Any suggestions?


My task: I need robotic arm to go through certain points on PCB board and heat soldering paste. I could do it manually by setting points with pendant. But a much easier way would be to get coordinates of those points from CAD file and write a code using PC.

MOVL MotionSpeedType(0 - linear mm/s, 1 - angular °/s) Speed (0.1 - 1000 mm/s or Max angular 

speed) coordinate X Y Z Tx Ty Tz 

ToolNo [Type] (move robot in a cartesian coordinates in linear motion)

this is how code for linear motion to a certain point looks like

I only could find this manual.

This is pendant manual maybe it will be helpful.

I am second year student in "Robotics and mechatronics". I'm currently in a internship at the scientific research institution. I really appreciate your help!

  • $\begingroup$ What are Tx Ty and Tz? Rotations? Can you link to the protocol your arm is using? $\endgroup$ – Chuck Jun 12 '15 at 11:50
  • $\begingroup$ I'm using Motoman MH5S. motoman.com/datasheets/mh5s_mh5ls_dxm100.pdf Tx Ty Tz are rotations. Maybe u know some example of using information from some kind of CAD file for movement? $\endgroup$ – Simonas Vėželis Jun 12 '15 at 12:26
  • $\begingroup$ There are many formats for representing rotation. Unfortunately, most of them use 3 numbers, so it can be hard to differentiate which one it is without documentation. If it is Euler angles or Tait–Bryan angles, which format still has to be specified, there are 6 versions of each. It is also possible it is an axis angle with the angle multiplied into the normalized vector. $\endgroup$ – Ben Jun 12 '15 at 13:11
  • $\begingroup$ If you are getting coordinate points from a 2D CAD file, what kind of orientation can you get? Points in a plane don't have any orientation. So you might just need to pick some orientation that you want. If you are doing a machining operation like milling or routing, you only need to keep the tool vertical and rotation about the global z axis doesn't matter. So pick an orientation that is easy / good for your arm. $\endgroup$ – Ben Jun 12 '15 at 13:15

You linked a datasheet but not the protocol. I would need to see what the parameters x,y...Ty,Tz relate to specifically on the robot to be able to tell you exactly what to put for the rotations.

That said, I would assume that the rotations specify the end effector pose. Imagine holding a ball with both hands. With the ball in one location (x,y,z), your hands could be on the sides of the ball, or your left hand could be on top and right on bottom, or your left hand could be on bottom and your right on top. In actuality your hands could be anywhere on the ball; the orientation of your hands is called the pose.

Without any knowledge of the protocol, which joints correspond to which command inputs, no knowledge of the controller, and no knowledge of what you're trying to do with this (industrial!) robot, I would say to just put zeros for the Tx,Ty, and Tz parameters.

Zeros for all of the rotation parameters should have the end effector facing in some ordinal direction (straight down, up, forward, etc.). Once you see the "default" orientation, try setting one of the angles to 90 degrees (pi/2 radians). Setting Tx to 90 degrees should cause the end effector to rotate 90 degrees about its x-axis. You can run through all the rotations to identify the primary axes, then use Euler angles (presumably) to specify the pose for the end effector.

But again, this is all assuming the rotations affect the end effector. The rotation parameters could be in Euler anglges, or Tait-Bryan angles, but it's unlikely to be something too exotic.

If you could edit your question with more detail about what you're trying to do and link to the user manual or communication protocol I could give more help, but I don't really have any useful information about your problem, so at the moment all I can give are educated guesses.


Looking at the pendant manual you linked, section 2.3.2 describes operation in Cartesian mode, where operations occur relative to the XYZ axes defined at the base of the robot. I would probably use these to define the starting position of a board to be soldered (that is, the location of some indexing location on the board relative to the base of the robot), then switch to the tool coordinates mode described in 2.3.4. From here you could feed it information direct from the 2D file, adding Z up/down motions as necessary to contact or come close to the board, depending on heat source (torch v soldering iron).

Section 2.3.5 covers setting up user coordinates, where it looks like you can define zero-index locations and orientations for workstation planes. The graphic at the top of page 70 looks like what you would be after. The neat trick here is that, if you set up the starting locations correctly, once you go to tool mode everything is in tool coordinates, so you don't have to specify any rotations.

As others have mentioned, Euler angles and such can be tricky. I believe you will commonly find Tait-Bryan angles in an XYZ or ZYX arrangement or Euler angles in an XZX or ZXZ arrangement, but there are dozens of ways that these could be setup.

As a final reiteration, you shouldn't really need to worry about those angles. Set everything to zero to see what direction the end effector is pointing. Make adjustments to only one angle until you get "down" relative the board set, then use Cartesian mode to move the tool to the indexing position on the board to be soldered. Define that as the user coordinate, then enter tool mode and feed it X-Y coordinates to do the work.

Hope this helps!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.