UR机器人旋转矢量和俯仰角的转换

2024-01-08 15:28

本文主要是介绍UR机器人旋转矢量和俯仰角的转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       我们在使用机器人的时候,总是习惯使用俯仰角来描述机器人末端姿态的变换。这样更直观,但是机器人为了插值方便计算,总是采用旋转矢量来来描述机器人的姿态。该旋转矢量及不直观,单一轴角度旋转时还可以理解,当两个轴或三个轴一起旋转,值的偏离很大。

1.找到机器人中如何描述旋转矢量和俯仰角

在此页面中,TCP中的RX,RY,RZ就是旋转矢量,而非俯仰角,点击此处任何输入框,可以跳转到点编辑界面。

此处,明确显示了该值为旋转矢量,下拉选择俯仰角,即可以通过编辑俯仰角,改变旋转矢量。

2.如何在UR-script,对应的指令是哪一个呢?

       在e系列中对应的是如下截图,CB系列中也是类似的,可以自己查询。通过这两个指令,我们就可以在工控机中自己的代码中嵌入,计算完机器人的姿态后,进行最后的旋转。

 

3.这些概念的深层解释,官网描述如下

 

EXPLANATION ON ROBOT ORIENTATION

This is an explanation on robot orientation

A robot has position and orientation. In particular, one of advantages in 6-axis robotic arm is to pose diverse orientation. This article is written for better understanding of robot orientation.

机器人具有位置和方向。特别是,六轴机械臂的一个优点是能够呈现不同的方向。本文旨在更好地理解机器人的方向。

Rotation Matrix

旋转矩阵

A rotation is represented in a matrix. In Cartesian space, a robot orientation is decided by a combination of rotations in X, Y, and Z direction, and we can have a 3-by-3 rotation matrix for each orientation.

旋转以矩阵表示。在笛卡尔空间中,机器人的方向由X、Y和Z方向的旋转组合决定,我们可以为每个方向设置一个3乘3的旋转矩阵。

 

(Refer to Rotation matrix, wikipedia)

ROTATION VECTOR

旋转矢量 (轴角/四元数)

In Universal Robots, the axis-angle representation is used for robot orientation. As a brief explanation, let me assume that there is a direction vector. Around the vector, an orientation can be rotated by a certain angle, theta. As a result of rotation, we can have a different orientation. The axis-angle representation is useful for robotics calculation such as kinematics and dynamics. 

在Universal Robots中,轴角表示用于机器人方向。简单来说,假设有一个方向向量。围绕该向量,方向可以旋转一定的角度θ。作为旋转的结果,我们可以得到不同的方向。轴角表示对于机器人运动学和动力学等计算很有用。

 

Rotation vector is a representation of the unit direction vector multiplied by the angle in the axis-angle representation.

旋转向量是单位方向向量乘以轴角表示中的角度的表示。

In order to define an orientation with the axis-angle representation, we need 4 values in total; three elements of unit direction vector and rotation angle. That is the reason why the values of rotation vector are not intuitive.

为了用轴角表示法定义方向,我们总共需要4个值;单位方向向量和旋转角度的3个元素。这就是为什么旋转向量的值不直观的原因。

(Refer to Axis-angle representation, wikipedia)

RPY

You may be more familiar with roll, pitch, and yaw to represent the robot orientation. In RPY, the order of rotation should be critical. For instance, despite the same amount of angles, the result of rotation roll->pitch would be different from that of pitch->roll.

你可能更熟悉用roll、pitch和yaw来表示机器人的方向。在RPY中,旋转顺序至关重要。例如,尽管角度相同,但旋转roll->pitch的结果与pitch->roll的结果不同。

Although the rotation vector is used in Universal Robots by default, you should be able to see the RPY values in Move tab of Polyscope. In addition, you can use the URScript functions to convert the representation between RPY and rotation vector. 

虽然Universal Robots默认使用旋转矢量,但您应该能够在Polyscope的Move选项卡中看到RPY值。此外,您可以使用URScript函数在RPY和旋转矢量之间进行转换。

rotvec2rpy(rotation vector)

rpy2rotvec(rpy vector)

 

TRANSFORMATION MATRIX

变换矩阵

For calculation of kinematics, a transformation matrix can be defined as a 4-by-4 matrix, consisting of rotation matrix and position vector. The rotation vector and/or RPY will be converted to the rotation matrix. We can calculate the robot position and orientation based on the transformation matrix multiplication.

为了计算运动学,可以将变换矩阵定义为4乘4矩阵,由旋转矩阵和位置向量组成。旋转向量和/或RPY将被转换为旋转矩阵。我们可以根据变换矩阵的乘法计算机器人的位置和方向。

pose_trans() is using the principle of the transformation matrix. The calculated position and orientation is referred to the tool frame. With respect to pose_add(), the calculated position is ths sum of two position inputs, but the resulted orientation is the matrix multiplication of two rotation matrix. In other words, in pose_add(), the position is corresponding to the base frame but the orientation is referred to the tool frame.

pose_trans()使用的是变换矩阵的原理。计算出的位置和方向是指向工具坐标系的。相对于pose_add(),计算出的位置是两个位置输入的总和,但产生的方向是两个旋转矩阵的矩阵乘积。换句话说,在pose_add()中,位置对应于基座标系,但方向是指向工具坐标系的。

这篇关于UR机器人旋转矢量和俯仰角的转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583906

相关文章

poj 2187 凸包or旋转qia壳法

题意: 给n(50000)个点,求这些点与点之间距离最大的距离。 解析: 先求凸包然后暴力。 或者旋转卡壳大法。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <s

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

基于树梅派的视频监控机器人Verybot

最近这段时间做了一个基于树梅派 ( raspberry pi ) 的视频监控机器人平台 Verybot ,现在打算把这个机器人的一些图片、视频、设计思路进行公开,并且希望跟大家一起研究相关的各种问题,下面是两张机器人的照片:         图片1:                   图片2                    这个平台的基本组成是:

数据流与Bitmap之间相互转换

把获得的数据流转换成一副图片(Bitmap) 其原理就是把获得倒的数据流序列化到内存中,然后经过加工,在把数据从内存中反序列化出来就行了。 难点就是在如何实现加工。因为Bitmap有一个专有的格式,我们常称这个格式为数据头。加工的过程就是要把这个数据头与我们之前获得的数据流合并起来。(也就是要把这个头加入到我们之前获得的数据流的前面)      那么这个头是

二维旋转公式

二维旋转公式 ros的tf工具包可以很方便的实现任意坐标系之间的坐标转换。但是,如果只是想简单的测试想法,而又不想编写过于庞杂的代码,考虑自己写二维旋转的函数。而与二维旋转问题对偶的另一个问题便是二维坐标系旋转变换。这两个问题的形式基本一样,只是旋转的角度相差一个负号。就是这个容易搞混,所以做个笔记,以备查用。 1. 二维旋转公式(算法) 而(此文只针对二维)旋转则是表示某一坐标点 ( x

高斯平面直角坐标讲解,以及地理坐标转换高斯平面直角坐标

高斯平面直角坐标系(Gauss-Krüger 坐标系)是基于 高斯-克吕格投影 的一种常见的平面坐标系统,主要用于地理信息系统 (GIS)、测绘和工程等领域。该坐标系将地球表面的经纬度(地理坐标)通过一种投影方式转换为平面直角坐标,以便在二维平面中进行距离、面积和角度的计算。 一 投影原理 高斯平面直角坐标系使用的是 高斯-克吕格投影(Gauss-Krüger Projection),这是 横

VC环境下整型转换为字符串型(2)

在串口下位机的发送中,可能会用到需要发送数字,显示为字符串型的 和上一篇文字《串口中字符串转换为整型》一正一反,知识点学习会了: #include<iostream.h> #include <stdio.h> #include <string.h>   void inttostr(int m,unsigned char * str) { int length=0;   int tmp,te

时间日期与时间戳转换(Linux C)

本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。 本文参考了《UNP》以及 http://blog.csdn.net/foxir/article/details/43916601 http://blog.csdn.net/ljafl9988/article/details/16847935 一、