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

相关文章

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Java如何将文件内容转换为MD5哈希值

《Java如何将文件内容转换为MD5哈希值》:本文主要介绍Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java文件内容转换为MD5哈希值一个完整的Java示例代码代码解释注意事项总结Java文件内容转换为MD5

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

Java实现视频格式转换的完整指南

《Java实现视频格式转换的完整指南》在Java中实现视频格式的转换,通常需要借助第三方工具或库,因为视频的编解码操作复杂且性能需求较高,以下是实现视频格式转换的常用方法和步骤,需要的朋友可以参考下... 目录核心思路方法一:通过调用 FFmpeg 命令步骤示例代码说明优点方法二:使用 Jaffree(FF

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs