首页 > 编程问答 >从给定的旋转矩阵和定义的旋转中提取旋转矩阵

从给定的旋转矩阵和定义的旋转中提取旋转矩阵

时间:2024-07-30 09:55:13浏览次数:15  
标签:python matrix rotation robotics

如下图所示,我有一个给定的旋转矩阵 R_given(从最右到最左的坐标系),并且我知道旋转矩阵 R_around_z,它是围绕最右坐标系的 z 轴的简单旋转。

旋转矩阵如下:

R_given = np.array([[-0.9993, -0.0172, 0.0340],
                    [0.0099, -0.9785, -0.2062],
                    [0.0368, -0.2057, 0.9779]])

R_around_z = np.array([[-1, 0, 0],
                       [0, -1, 0],
                       [0, 0, 1]])

是否有机会根据给定的两个矩阵获得我想找到的搜索旋转矩阵 R_searched?

我正在使用 Python 和 NumPy。

先感谢您。

enter image description here


当然可以!你可以通过矩阵乘法来获得你想要的旋转矩阵 R_searched 。因为旋转是连续应用的,所以你可以这样做:

import numpy as np

R_given = np.array([[-0.9993, -0.0172, 0.0340],
                    [0.0099, -0.9785, -0.2062],
                    [0.0368, -0.2057, 0.9779]])

R_around_z = np.array([[-1, 0, 0],
                       [0, -1, 0],
                       [0, 0, 1]])

# 为了得到 R_searched, 你需要反转 R_around_z 的应用顺序。
R_searched = np.dot(R_given, np.linalg.inv(R_around_z))

print(R_searched)

这里解释一下:

  1. np.linalg.inv(R_around_z) : 我们首先计算 R_around_z 的逆矩阵。这是因为我们需要“撤销” R_around_z 的旋转来获得 R_searched
  2. np.dot(R_given, ...) : 然后我们将 R_given R_around_z 的逆矩阵相乘。这实际上是先应用 R_searched 然后再应用 R_around_z 来获得 R_given 的过程的逆向操作。

最终得到的 R_searched 就是你想要的旋转矩阵。

标签:python,matrix,rotation,robotics
From: 71455296

相关文章

  • Python,计算HSV图像的直方图,忽略背景
    我正在尝试使用openCV计算HSV图像的直方图,使用以下代码:defistogrammaHSV(image,histSize):hsv_planes=cv2.split(image)histSize=histSizehistRange=(0,256)accumulate=Falseh_hist=np.array(cv2.calcHist(hsv_planes,[0],None,[......
  • opencascade AIS_RubberBand AIS_RotationMode源码学习
    //!相机旋转类型Camerarotationmode.enumAIS_RotationMode{AIS_RotationMode_BndBoxActive,//!<defaultOCCTrotationAIS_RotationMode_PickLast,//!<rotatearoundlastpickedpointAIS_RotationMode_PickCenter,//!<rotatearoundpointatthecenter......
  • python性能分析器:cProfile
    代码:(1)importcProfileimportrecProfile.run('re.compile("foo|bar")')运行结果:(2)importcProfiledefrunRe():importrecProfile.runctx('re.compile("foo|bar")',None,locals())runRe()运行结果:(3)i......
  • 基于Python网络招聘数据可视化分析系统的设计与实现
    基于Python网络招聘数据可视化分析系统的设计与实现DesignandImplementationofPython-basedNetworkRecruitmentDataVisualizationAnalysisSystem完整下载链接:基于Python网络招聘数据可视化分析系统的设计与实现文章目录基于Python网络招聘数据可视化分析系......
  • 即使使用 docker run -dit 命令,python-Docker 容器也会在运行两秒后退出
    我想从此处使用Dockerfile测试自定义kubernetes调度程序:FROMpython:3.7RUNpipinstallkubernetesCOPYscheduler.py/scheduler.pyCMDpython/scheduler.py一旦创建了映像和容器:dockerbuild-tapp.dockercontainerrun-d-it--namemy-sched......
  • Python多重处理,如何避免创建具有百万个对象的元组
    python多处理新手。我有一项任务,涉及访问网络服务数百万次并将响应保存在文件中(每个请求都有单独的文件)。我已经得到了高级工作代码,但对一些事情没有感到困惑。以下两种语法有什么区别?pool=Pool(processes=4)pool.starmap(task,listOfInputParametersTu......
  • Python OpenCV - 显示坏像素检查测试
    我想找到显示器中存在的每个坏像素。坏像素可能是颜色不正确的像素,或者像素只是黑色。显示屏的尺寸为160x320像素。所以如果显示效果好的话,必须有160*320=51200像素。如果显示器没有51200像素,那就是坏的。另外,我想知道每个坏像素的位置。一旦拍摄的图像太大,我将共享一个......
  • 在python日志输出的每一行前面添加变量缩进
    我正在将日志记录构建到一个Python应用程序中,我希望它是人类可读的。目前,调试日志记录了调用的每个函数以及参数和返回值。这意味着,实际上,嵌套函数调用的调试日志可能如下所示:2024-07-2916:52:26,641:DEBUG:MainController.initialize_componentscalledwithargs<control......
  • 使用 DQN 实现 pong,使用 python 中的特征向量而不是像素。我的 DQNA 实现代码正确吗,因
    我正在致力于使用OpenAI的Gym为Pong游戏实现强化学习(RL)环境。目标是训练人工智能代理通过控制球拍来打乒乓球。代理收到太多负面奖励,即使它看起来移动正确。具体来说,奖励函数会惩罚远离球的智能体,但这种情况发生得太频繁,即使球朝球拍移动时似乎也会发生。观察......
  • Python CDLL 无法加载两次
    我正在尝试用python创建一个密码管理器,但遇到了一个问题,一旦加载了一种类型的dll,我就无法加载不同的dll,在这个示例中,我加载了一个dll,并尝试解密加密的密码数据,它工作正常,直到我加载另一个不同的nss3.dll文件,此时它给我一个错误:“过程入口点HeapAlloc无法位于动态链......