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

news2024/11/13 18:14:59

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

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()中,位置对应于基座标系,但方向是指向工具坐标系的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1365849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3中使用elementplus中的el-tree-select,自定义显示名称label

<el-tree-select v-model"addPval" node-key"id" :data"menulists" :render-after-expand"false" :props"menuProps" /> <el-divider />let menuProps {//自定义labellabel: (data: { name: any; }) > {ret…

c语言的一些题(2024_1_7)

变种水仙花数 #include <stdio.h>int main() {int a 10000;for (; a < 100000; a){if ((a / 10000) * (a % 10000) (a / 1000) * (a % 1000) (a / 100) * (a % 100) (a / 10) * (a % 10) a)printf("%d ", a);}return 0; } //变种水仙花数 - Lily Num…

第12课 实现桌面与摄像头叠加

在上一节&#xff0c;我们实现了桌面捕获功能&#xff0c;并成功把桌面图像和麦克风声音发送给对方。在实际应用中&#xff0c;有时候会需要把桌面与摄像头图像叠加在一起发送&#xff0c;这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo11并修改demo11为demo12…

部署可道云网盘的一个漏洞解决

目录 1漏洞展示 2.防范措施 1漏洞展示 因为可道云网盘的上传文档有保存在 /data/Group/public/home/文档/ 中,当别有用心之人知道个人部署的域名与上次的文件后&#xff0c;可以进行访问拿到uid。例我在我部署的网盘上上次一个aa.php 文件&#xff0c;然后拿来演示 然后通过…

听GPT 讲Rust源代码--compiler(37)

File: rust/compiler/rustc_expand/src/errors.rs 在Rust编译器的源代码中&#xff0c;rust/compiler/rustc_expand/src/errors.rs文件的作用是定义了各种错误类型和帮助信息&#xff0c;这些错误和帮助信息用于扩展宏时的错误处理和用户提示。 下面对每个struct进行一一介绍&a…

【产品人卫朋】硬件产品经理:从入门到精通

目录 本文目录 1. 前言说明 2. 内容说明 3. 资料包说明 作者简介 本文目录 1. 前言说明 2. 内容说明 3. 资料包说明 1. 前言说明 本篇内容节选自实体书《硬件产品经理&#xff1a;从入门到精通》。 2. 内容说明 鉴于硬件产品的特殊性&#xff0c;不同产品阶段的时间间…

开源内容管理框架Drupal在Docker本地部署并实现公网远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java研学-Cookie与Session

一 会话跟踪 1 HTTP 无状态 HTTP 协议是无状态的&#xff0c;一问一答没有记忆&#xff0c;无法确定发出请求的用户身份。即各个请求的请求对象所包含的信息并不相同&#xff0c;一个会话中的多个请求之间无法共享数据&#xff0c;此时可以使用会话跟踪技术 2 会话跟踪技术 C…

用Java爬取新房二手房数据看总体大环境

都说现在房市惨淡&#xff0c;导致很多人在观望&#xff0c;那么今天我写一段爬虫&#xff0c;主要是抓取各地新房以及二手房成交状况&#xff0c;然后了解总体楼市是否回暖上升。 以下是Java爬虫程序的代码示例&#xff0c;用于抓取贝壳网新房和二手房数据&#xff1a; impor…

并发(11)

目录 71.ConcurrentHashMap JDK1.7说说其put的机制&#xff1f; 72.ConcurrentHashMap JDK1.7是如何扩容的&#xff1f; 73.ConcurrentHashMap JDK1.8实现的原理是什么&#xff1f; 74.ConcurrentHashMap JDK1.8是如何扩容的&#xff1f; 75.ConcurrentHashMap JDK1.8链…

Maven之私服

1 介绍 团队开发现状分析私服是一台独立的服务器&#xff0c;用于解决团队内部的资源共享与资源同步问题Nexus Sonatype公司的一款maven私服产品 下载地址&#xff1a;https://help.sonatype.com/repomanager3/download win版安装包&#xff1a;https://pan.baidu.com/s/1wk…

【tensorflowflutterweb】机器学习模型怎样用到前端上(未写完)

书接上回 在上一章 我们谈了怎么根据项目需求构建一个简单的机器学习模型。 ​​​​​​ ​​​​​​【tensorflow&flutter】自己写个机器学习模型用在项目上&#xff1f;-CSDN博客文章浏览阅读852次&#xff0c;点赞22次&#xff0c;收藏15次。【tensorflow&flutter…

结队编程 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 某部门计划通过结队编程来进行项目开发,已知该部门有 N 名员工,每个员工有独一无二的职级,每三个员工形成一个小组进行结队编程,结队分组规则如下: 从部门中选出序号分别为 i、j、k 的3名员工,他们的职级分别为 level[…

在docker中搭建部署clickhouse

因需要给网关日志拉取并存储供数据分析师分析&#xff0c;由于几十个项目的网关请求数量很大&#xff0c;放在mysql不合适&#xff0c;MongoDB不适合分析&#xff0c;于是准备存放在clickhouse&#xff0c;clickhouse对于读写支持也比较友好&#xff0c;说干就干 1、在服务器中…

6.综合案例

1. 需求描述 1.1 显示所有员工信息 URI:emps 请求方式:GET 显示效果 1.2 添加操作- 去往添加页面 显示添加页面: URI:emp 请求方式:GET 显示效果 1.3 添加操作- 添加员工 添加员工信息: URI:emp 请求方式:POST 显示效果:完成添加, 重定向到 list 页面。 1.4…

Java-网络爬虫(一)

文章目录 前言一、网络爬虫1. 介绍2. 爬虫协议3. 法律法规 二、相关知识1. HttpClient2. Jsoup 三、综合案例1. 案例一2. 案例二 四、总结 前言 下篇&#xff1a;Java-网络爬虫(二) 在大数据时代&#xff0c;信息采集是一项重要的工作&#xff0c;而互联网中的数据是海量的&am…

2024年第01周农产品价格报告

一、摘要 农产品价格监测主要涉及对畜禽类产品、水产品、蔬菜类产品、水果类产品的价格&#xff0c;以周为单位&#xff0c;进行变化情况的数据监测。其中&#xff0c;蔬菜类产品共18种&#xff0c;分别为大白菜、西红柿、黄瓜、青椒、芹菜、土豆、白萝卜、茄子、豆角、胡萝卜…

和可被K整除的子数组(Java详解)

目录 一、题目描述 二、题解 思路分析 具体实现 完整代码 一、题目描述 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例&#xff1a; 输入&#…

MYSQL学习之buffer pool的理论学习

MYSQL学习之buffer pool的理论学习 by 小乌龟 文章目录 MYSQL学习之buffer pool的理论学习前言一、buffer pool是什么&#xff1f;二、buffer pool 的内存结构三、buffer pool 的初始化和配置初始化配置 四、buffer pool 空间管理LRU淘汰法冷热数据分离的LRU算法1.引入库2.读入…

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…