三维坐标的旋转矩阵转换测试Demo(ROS1 RVIZ)

news2024/9/20 22:30:12

已知空间上的某一个点P在坐标系1下的位置为 P1(1,2,3),需要求出P在三维空间坐标系0之间的相对关系,其中坐标系1是相对于坐标系0绕着x轴旋转60度后转化。示意如下图
在这里插入图片描述

程序设计

  • 定义P点在坐标系1下的位置
array = np.array([1,2,3])
# [1 2 3]
  • 定义坐标系1和坐标系0之间的旋转矩阵
PI = 3.14
angle = 60/360*PI

transforat_array = np.array([[1,0,0],
                     [0,math.cos(angle),math.sin(angle)],
                     [0,-math.sin(angle),math.cos(angle)]])
# [[ 1.          0.          0.        ]
#  [ 0.          0.86615809  0.4997701 ]
# [ 0.         -0.4997701   0.86615809]]

  • 得到转换结果
d = np.dot(array,transforat_array)
# [1.         0.23300588 3.59801449]

整体程序

import math
import numpy as np
PI = 3.14

array = np.array([1,2,3])
angle = 60/360*PI

print(angle)
transforat_array = np.array([[1,0,0],
                     [0,math.cos(angle),math.sin(angle)],
                     [0,-math.sin(angle),math.cos(angle)]])
print(array)
print(transforat_array)

d = np.dot(array,transforat_array)
print(d)

使用ROS 的RVIZ进行查看验证

按照顺序打开和输入指令,不同的的指令需要开启不同的终端执行

roscore
rosrun tf2_ros static_transform_publisher 1 2 3 0 0 0 /base_1 /p
rosrun tf2_ros static_transform_publisher 0 0 0 0 0 0.523333 /base_0 /base_1
rosrun rviz rviz

讲话Fixed Frame选择为base_0,表示观察的基坐标,然后就可以查看P点和他之间的相对位置关系,可以从中第二个方框看出ROS计算得到的旋转结果和之前python程序计算出来的结果相同。
在这里插入图片描述
在测试的Demo当中,使用的还是静态的发布关系,一般在机械臂上面各个关节关节之间的关系一般会保持静止,变动的是末端执行机构和目标物体之间的相对位置姿态,后续就可以程序来找出机械臂末端的执行机构需要运动到达目标物体的角度和路线了。

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

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

相关文章

vscode开发android ndk的环境配置

vscode开发android ndk的环境配置 最近公司新需求,要求用C/C实现部分核心代码,打包成静态库跨平台(Android和iOS)使用。 作为Android开发出身的C/C老白程序员兴奋不已(又可以开心的学习niubility的C/C了)&…

SpringCloudAlibaba基础七-2 seata的使用

一 Seata 是什么 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和XA 事务模式,为用户打造一站式的分布式解决方案。AT模式是阿里首推的模式,阿里云上有商用版本的GTS&#x…

pycharm创建文件自动生成文件头信息

pycharm创建文件自动生成文件头信息 1、设置步骤 file -> settings->Editor->File and Code Templates->Python Script 2、pycharm预定义的变量(小写无效) ${PROJECT_NAME}:项目名称${PRODUCT_NAME}:集成开发环境${NAME}:文件名${USER…

高效工作与持续学习:程序员如何平衡成长与编码任务?

在当今瞬息万变的技术世界中,程序员面临着前所未有的挑战和机遇。随着项目复杂性的增加和新技术的层出不穷,如何在繁忙的日常编码任务与自我提升之间找到平衡,已成为许多程序员心中的困惑。这不仅关乎职业生涯的发展,更关系到个人…

Transformer系列-3丨BERT模型和代码解析

1 前言 前面两篇文章,笔者从网络结构和代码实现角度较为深入地和大家解析了Transformer模型和Vision Transformer模型(ViT),其具体的链接如下: 基础Transformer解析 ViT模型与代码解析 本期内容,笔者想…

贪心+构造,CF 1592F1 - Alice and Recoloring 1

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1592F1 - Alice and Recoloring 1 二、解题报告 1、思路分析 操作2、3可以…

C++系列-多态的基本语法

多态的基本语法 多态的含义静态多态动态多态 多态的底层原理多态中的final和overridefinaloverride: 多态的应用和优点计算器简单实现电脑组装的实现 《游山西村》 南宋陆游 莫笑农家腊酒浑,丰年留客足鸡豚。 山重水复疑无路,柳暗花明又一村。 箫鼓追…

leetcode118. 杨辉三角,老题又做

leetcode118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1…

AI视频创作应用

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

appium下载及安装

下载地址:https://github.com/appium/appium-desktop/releases 双击安装就可以

信号的变换

信号的变换 在实践中,缩放和时间平移是遇到的两个最重要的信号变换。缩放改变了振幅轴上的因变量的值,而时间平移则影响了时间轴上的自变量的值。 加法 对于两个离散时间信号的加法,例如 x [ n ] x[n] x[n] 和 y [ n ] y[n] y[n]&#x…

Flutter【02】mobx原理

简介: 概念 MobX 区分了以下几个应用中的概念: State(状态) 状态 是驱动应用的数据。 通常有像待办事项列表这样的领域特定状态,还有像当前已选元素的视图状态。 记住,状态就像是有数据的excel表格。 Derivations(衍生) 任何…

Ps:首选项 - 性能

Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“性能” Performance选项卡允许用户通过调整内存使用、GPU 设置、高速缓存设置以及多线程处理等选项,来优化 Photoshop 的性能。这对于处理大文件、复杂图像或需要…

Python 数据分析之Numpy学习(一)

Python 数据分析之Numpy学习(一) 一、Numpy的引入 1.1 矩阵/向量的按位运算 需求:矩阵的按位相加 [0,1,4] [0,1,8] [0,2,12] 1.1.1 利用python实现矩阵/向量的按位运算 # 1.通过列表实现 list1 [0, 1, 4] list2 [0, 1, 8]# 列表使用…

(17)ELK大型储存库的搭建

前言: els是大型数据储存体系,类似于一种分片式存储方式。elasticsearch有强大的查询功能,基于java开发的工具,结合logstash收集工具,收集数据。kibana图形化展示数据,可以很好在大量的消息中准确的找到符…

Marimo:下一代Python编程环境,颠覆传统Jupyter笔记本,自动化执行所有依赖代码块,告别繁琐手动操作

Marimo 是一个颠覆传统笔记本的全新编程环境,它以其反应式、交互式、可执行和可共享等特性,为开发者们带来前所未有的编程体验。Marimo 确保您的笔记本代码、输出和程序状态始终保持一致。它解决了传统笔记本(如 Jupyter)的许多问…

流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)

为了这一整套的解决方案,调研研发整整花费了差不多半年多的时间,需达成的目标: 流媒体服务器端不需要将H.265转码成H.264,就能让Chrome解码播放H.265; 注意:现在很多市面上的软硬件通过转码H.265成H.264的…

CSP-CCF 202312-1 仓库规划

一、问题描述 二、解答 思路&#xff1a;定义二维数组&#xff0c;比较不同行的相同列数 代码如下&#xff1a; #include<iostream> using namespace std; int main() {int n, m;cin >> n >> m;int a[1001][11] { 0 };for (int i 1; i < n; i){for (…

贪心 + 分层图bfs,newcoder 76652/B

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 https://ac.nowcoder.com/acm/contest/76652/B 二、解题报告 1、思路分析…

ELK基础搭建

一、认识ELK ELK是一套开源的日志分析系统&#xff0c;由elasticsearchlogstashKibana组成。 官网说明&#xff1a;https://www.elastic.co/cn/products 首先: 先一句话简单了解 E&#xff0c;L&#xff0c;K 这三个软件 elasticsearch: 分布式搜索引擎 logstash: 日志收集与…