Get actual Euler and Quaternion angles
Hello,
I have a list of targets(Targets 001-127), and I have a TRAP routine set up to constantly update and print out the position (X,Y,Z) of the robot, even while it is in the middle of a move. My question is, can I also update and print out the current Euler and Quaternion Angles, even while the robot is moving? I am updating the status 10 times a second, and I am trying to compare the commanded vs. actual for position and the angles. I got the position part, just not sure what to do about the angles?
Thanks for any help,
SM
I have a list of targets(Targets 001-127), and I have a TRAP routine set up to constantly update and print out the position (X,Y,Z) of the robot, even while it is in the middle of a move. My question is, can I also update and print out the current Euler and Quaternion Angles, even while the robot is moving? I am updating the status 10 times a second, and I am trying to compare the commanded vs. actual for position and the angles. I got the position part, just not sure what to do about the angles?
Thanks for any help,
SM
Tagged:
0
Best Answer
-
You can access each component of the the RobTarget record before converting to a string, which will result in shorter stings.
In the header, add:VAR robtarget currentRT;
In the procedure, add:
VAR string posStr;
VAR string orientStr;
VAR string confdataStr;
VAR string extjointStr;currentRT := CRobT(\Tool:=tool0 \WObj:=wobj0); !read current robtarget
posStr:=ValToStr(currentRT.trans); !current robot position
orientStr:=ValToStr(currentRT.rot); !current robot orientation
confdataStr:=ValToStr(currentRT.robconf); !current robot configuration
extjointStr:=ValToStr(currentRT.extax); !current external axis positionOr you could go even further down, if required, e.g.xStr := NumToStr(currentRT.trans.x,3);
The function EulerZYX can into an Euler angle component from an orient-type variable.anglex := EulerZYX(\X, currentRT.rot);
angley := EulerZYX(\Y, currentRT.rot);
anglez := EulerZYX(\Z, currentRT.rot);These nums could then be converted to strings and concatenated if you wish, although I would be temped to do the conversion to Euler angles in LabVIEW or even in Excel after recording the data.
Hope this helps. Note, the code is untested.
Regards,
Joseph5
Answers
-
Yes, you can use the RAPID function CRobT, which "returns a robtarget value with position (x, y, z), orientation (q1 ... q4), robot axes configuration, and external axes position." It would then be straightforward to convert the orientations into Euler angles, if required.0
-
jsph,
Thank you for your reply. I am using CRobT just like you said. I am trying to send the data as a string to LabVIEW via sockets. I get an error saying that the string is too long. How can I break the data into multiple strings, 1 string for position, 1 string for quaternions, etc.?
Also, how can I parse the Quaternion angles and then convert to Euler angles?
Thanks for the help!
SM
Post edited by SteveMob on0 -
Or is there a way to eliminate some of the values from CRobT, such as the External Axes values or Axis Configurations? That would shorten the string.
Thanks,
SM
0
Categories
- All Categories
- 5.5K RobotStudio
- 396 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 250 ScreenMaker
- 2.8K Robot Controller
- 316 IRC5
- 61 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 798 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 5 Job listings