机器人与3D视觉 Robotics Toolbox Python 二 空间位姿描述

空间位姿描述

二维空间位姿描述

二维空间位姿表示方法

from spatialmath.base import *
from spatialmath import *
T1 = SE2(x=3,y=3,theta=30,unit="deg")
trplot2(T1.A,frame="T1",dims=[0, 5, 0, 5])
T2=transl2(3, 4)
trplot2(T2,frame="T2",dims=[0, 5, 0, 5],color='red')

在这里插入图片描述

三维空间姿态描述

R1=SO3.Rx(60,"deg")*SO3.Ry(30,"deg")*SO3.Rz(50,"deg") #绕x轴旋转60°,再绕y轴旋转30°,再绕z轴旋转50°
trplot(R1.A,frame="A", color= "b")#画出旋转矩阵R1
tranimate(R1.A,fram="A", color= "b")#将R1的变换做成动画
R2=SO3.Rz(50,"deg")*SO3.Ry(30,"deg")*SO3.Rx(60,"deg");#绕z轴旋转50°,再绕y轴旋转30°,再绕x轴旋转60°
trplot(R2.A,frame="B", color="r")#画出旋转矩阵R2
tranimate(R2.A,frame="B",color= "r")#将R2的变换做成动画

在这里插入图片描述

角度表示法

欧拉角表示方法

>>> R3=SO3.Rz(0.1)*SO3.Ry(0.2)*SO3.Rz(0.3)#构造旋转矩阵R3
>>> print(R3)0.9021   -0.3836    0.1977    0.3875    0.9216    0.01983-0.1898    0.05871   0.9801>>> R4=eul2r(0.1,0.2,0.3)# 欧拉角转化为旋转矩阵
>>> print(R4)
[[ 0.902113   -0.38355704  0.19767681][ 0.3875172   0.92164909  0.01983384][-0.18979606  0.0587108   0.98006658]]
>>> eul=tr2eul(R3.A)# 旋转矩阵转化为欧拉角
>>> print(eul)
[0.1 0.2 0.3]
>>>

RPY角表示方法

>>> R5=SO3.Rz(0.3)*SO3.Ry(0.2)*SO3.Rx(0.1)# 构造旋转矩阵R5
>>> print(R5)0.9363   -0.2751    0.2184    0.2896    0.9564   -0.03696-0.1987    0.09784   0.9752>>> R6=rpy2r(0.3,0.2,0.1)# rpy角转化为旋转矩阵
>>> print(R6)
[[ 0.97517033 -0.03695701  0.21835066][ 0.0978434   0.95642509 -0.27509585][-0.19866933  0.28962948  0.93629336]]
>>> rpy=tr2rpy(R5.A)# 旋转矩阵转化为rpy角
>>> print(rpy)
[0.1 0.2 0.3]

双向量表示法

a=[1, 0, 0]
o=[0, 1, 0]
R7=SE3.OA(o,a) #将双向量o,a转化为旋转矩阵R7
trplot(R7.A,frame="A", color= "b")#画出旋转矩阵R7

在这里插入图片描述

向量旋转角表示法

vec=[1,0,0]
R8=angvec2tr(theta=20,v=vec,unit='deg')
trplot(R8,frame="A", color= "b")#画出旋转矩阵R8

在这里插入图片描述

四元素表示法

s=0.98335
v=[0.034271, 0.10602, 0.14357]
Q=UnitQuaternion(s,v) # 组成四元数
R9=q2r(Q.A) #四元数转为旋转矩阵
Q1=r2q(R9)  #旋转矩阵转为四元数
rul=Q.eul(unit='deg') #四元数转为欧拉角
rpy=Q.rpy(unit='deg',order='zyx')  #四元数转为rpy角
trplot(R9,frame="R9", color= "b")#画出旋转矩阵R9

在这里插入图片描述

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

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

相关文章

如何理解 RPC 远程服务调用?

本文主要讲解 RPC 远程服务调用相关的知识。 RPC 远程服务调用是分布式服务架构的基础,无论微服务设计上层如何发展,讨论服务治理都绕不开远程服务调用,那么如何理解 RPC、有哪些常见的 RPC 框架、实现一款 RPC 框架需要哪些技术呢&#xff…

解决electron修改主进程后需要重启才生效

nodemon 是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序 nodemon 特性 自动重新启动应用程序。检测要监视的默认文件扩展名。默认支持 node,但易于运行任何可执行文件,如 python、…

自动驾驶学习笔记(十七)——视觉感知

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 分类 目标检测 语义分割 实例分割 …

SQL语句的执行顺序怎么理解?

SQL语句的执行顺序怎么理解? 我们常常会被SQL其书写顺序和执行顺序之间的差异所迷惑。理解这两者的区别,对于编写高效、可靠的SQL代码至关重要。今天,让我们用一些生动的例子和场景来深入探讨SQL的执行顺序。 一、书写顺序 VS 执行顺序 SQ…

【unity实战】一个通用的FPS枪支不同武器射击控制脚本

文章目录 前言模型素材文章用到的粒子火光特效射击效果换弹瞄准开枪抖动效果设置显示文本最终代码不同武器射击效果1. 手枪2. 机枪3. 狙击枪4. 霰弹枪5. 加特林 其他感谢完结 前言 实现FPS枪支不同武器效果,比如手枪,喷子,狙击枪&#xff0c…

《使用ThinkPHP6开发项目》 - 创建应用

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 《使用ThinkPHP6开发项目》 - 项目使用多应用开发-CSDN博客 根据前面的步骤,我们现在就可以开发我们的项目开发了,根据项目开发的需要…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第四次作业

云数据库研究 云计算与云数据库背景 云计算(cloud computing)是 IT 技术发展的最新趋势,正受到业界和学术界的广泛关注。云计算是在分布式处理、并行处理和网格计算等技术的基础上发展起来的,是一种新兴的共享基础架构的方法。它…

Django多对多ManyToManyField字段

Django是一个支持多对多关系的Web框架,可以在模型中定义多对多关系。多对多关系通常涉及两个实体之间的复杂交互,例如用户和组之间的关系,或者课程和学生之间的关系。在Django中,可以使用ManyToManyField字段来定义多对多关系。 …

[足式机器人]Part4 南科大高等机器人控制课 Ch05 Instantaneous Velocity of Moving Frames

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 南科大高等机器人控制课 Ch05 Instantaneous Velocity of Moving Frames 1.Instantanenous Velocity of Rotating Frames2.Instantanenous Veloc…

机器学习基础入门

机器学习 引言 介绍机器学习的重要性和应用领域。简要说明机器学习与人工智能的关系。 在当今迅速发展的技术世界中,机器学习已经成为一项不可或缺的技术,它正在改变我们解决问题和理解世界的方式。机器学习,作为人工智能(AI&a…

最新Redis7持久化(权威出版)

首先我们要知道什么是持久化:持久化是指将数据保存到磁盘上,以确保在Redis服务器重启时数据不会丢失。 Redis支持两种主要的持久化方式:RDB持久化和AOF持久化 下面让我依次给你介绍一下: RDB持久化 作用 这是将Redis数据保存…

Java8新特性 - Stream

一、特性 Java 8引入的Stream API为集合&#xff08;Collections&#xff09;提供了一种声明式的处理方式&#xff0c;支持丰富的操作&#xff0c;包括筛选、映射、归约等。以下是一些Stream的主要功能和使用方式的案例&#xff1a; 创建Stream&#xff1a; List<String&…

Java语言概述及保姆级入门教程(JDK 17版本)

笔记来自尚硅谷老师-康老师 学习教程&#xff1a;https://www.bilibili.com/video/BV1PY411e7J6/?spm_id_from333.337.search-card.all.click 1、Java基础全程脉络图 1.1 本章专题与脉络 2. 抽丝剥茧话Java 2.1 当前大学生就业形势 麦可思研究院发布了《2022年中国大学生就业…

TCP 和UDP 到底有啥区别

TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;是互联网上常用的两种传输层协议&#xff0c;它们在数据传输方式和特性上有显著的区别。下面是TCP和UDP的主要区别&#xff1a; 连接性: TCP 是一种面向连接的协议。在数据传输前&#xf…

C#图像处理OpenCV开发指南(CVStar,09)——边缘识别之Scharr算法的实例代码

1 边缘识别之Scharr算法 算法文章很多&#xff0c;不再论述。 1.1 函数原型 void Cv2.Scharr(src,dst,ddepth,dx,dy,scale,delta,borderType&#xff09; 1.2 参数说明 src 代表原始图像。dst 代表目标图像。ddepth 代表输出图像的深度。CV_16Sdx 代表x方向上的求导阶数…

uniApp应用软件在运行时,不符合华为应用市场审核标准。解决方案合集!

&#xff08;暂时用不到的也建议收藏一下&#xff0c;因为文章持续更新中&#xff09; 最新更改时间&#xff1a;20023-12-10 第一次做App应用开发相信大家一定都遇到过华为应用市场审核的“驳回”&#xff01; 有些问题一看就明白可以立马修改&#xff0c;而有一些问题修改意…

Dubbo入门直接上手,结合微服务详解

Dubbo 高性能、轻量级的 Java RPC 框架 RPC&#xff1a; Remote Procedure Call 远程过程调用&#xff0c;简单来说就是它允许一个计算机程序通过网络请求调用另一个计算机上的程序&#xff0c;就像本地调用一样。有非常多的协议和技术来都实现了RPC的过程&#xff0c;比如&a…

Elasticsearch 8.9 refresh刷Es缓冲区的数据到Lucene,更新segemnt,使数据可见

一、相关API的handler1、接受HTTP请求的hander(RestRefreshAction)2、往数据节点发送刷新请求的action(TransportRefreshAction)3、数据节点接收主节点refresh传输的action(TransportShardRefreshAction) 二、在IndexShard执行refresh操作1、根据入参决定是使用lucene提供的阻塞…

【华为数据之道学习笔记】3-8以确保合规遵从为核心的外部数据管理

一、以确保合规遵从为核心的外部数据管理 外部数据是指华为公司引入的外部组织或者个人拥有处置权利的 数据&#xff0c;如供应商资质证明、消费者洞察报告等。外部数据治理的出发点是合规遵从优先&#xff0c;与内部数据治理的目的不同。 外部数据的治理主要遵循以下原则。 1&…

【设计模式--创建型--原型模式】

设计模式--创建型--原型模式 原型模式概述结构实现结果 案例代码结果使用场景 扩展&#xff08;深\浅克隆&#xff09;浅克隆演示&#xff1a;结果&#xff1a;使用深克隆&#xff08;利用对象流&#xff09;结果 原型模式 概述 用一个已经创建的实例作为原型&#xff0c;通过…