当前位置: 首页 > wzjs >正文

espcms易思企业网站管理系统网站编程培训学校有哪些

espcms易思企业网站管理系统,网站编程培训学校有哪些,电脑有了外网是不是就可以做网站,深圳的网站设计🧭 一、欧拉角、四元数、旋转矩阵之间的关系 1.1 欧拉角(Euler Angles) 欧拉角是描述三维空间旋转的最直观方式,用三个角度表示依次绕三个坐标轴的旋转: 常见顺序:ZYX,即依次绕 Z轴&#xff…

🧭 一、欧拉角、四元数、旋转矩阵之间的关系

1.1 欧拉角(Euler Angles)

欧拉角是描述三维空间旋转的最直观方式,用三个角度表示依次绕三个坐标轴的旋转:

  • 常见顺序:ZYX,即依次绕 Z轴(航向 yaw)→ Y轴(俯仰 pitch)→ X轴(横滚 roll)
  • 通常记作: ( ϕ , θ , ψ ) (\phi, \theta, \psi) (ϕ,θ,ψ)(roll, pitch, yaw)

1.2 四元数(Quaternion)

四元数是一种避免欧拉角万向锁问题的姿态表示方法,形式为:

q = ( w , x , y , z ) q = (w, x, y, z) q=(w,x,y,z)

其中 w w w 是实部, ( x , y , z ) (x, y, z) (x,y,z) 是虚部。

特点:

  • 无奇异点
  • 可用于插值
  • 可以转换为旋转矩阵用于实际运算

1.3 旋转矩阵(Rotation Matrix)

旋转矩阵 R ∈ R 3 × 3 R \in \mathbb{R}^{3\times3} RR3×3 表示一个正交矩阵,它将向量从一个坐标系旋转到另一个坐标系:

  • R w b R_{wb} Rwb:表示从机体坐标系到世界坐标系的旋转。
  • 向量变换: v world = R w b ⋅ v body \mathbf{v}_{\text{world}} = R_{wb} \cdot \mathbf{v}_{\text{body}} vworld=Rwbvbody

🔁 二、三者之间的转换关系

2.1 四元数 → 旋转矩阵

四元数 q = ( w , x , y , z ) q = (w, x, y, z) q=(w,x,y,z) 对应的旋转矩阵为:

R = [ 1 − 2 ( y 2 + z 2 ) 2 ( x y − w z ) 2 ( x z + w y ) 2 ( x y + w z ) 1 − 2 ( x 2 + z 2 ) 2 ( y z − w x ) 2 ( x z − w y ) 2 ( y z + w x ) 1 − 2 ( x 2 + y 2 ) ] R = \begin{bmatrix} 1 - 2(y^2 + z^2) & 2(xy - wz) & 2(xz + wy) \\ 2(xy + wz) & 1 - 2(x^2 + z^2) & 2(yz - wx) \\ 2(xz - wy) & 2(yz + wx) & 1 - 2(x^2 + y^2) \end{bmatrix} R= 12(y2+z2)2(xy+wz)2(xzwy)2(xywz)12(x2+z2)2(yz+wx)2(xz+wy)2(yzwx)12(x2+y2)

你也可以用库函数自动转换,如:

from scipy.spatial.transform import Rotation as R
rot_matrix = R.from_quat([x, y, z, w]).as_matrix()

2.2 欧拉角 ↔ 四元数

  • 欧拉角 → 四元数:
R.from_euler('xyz', [roll, pitch, yaw]).as_quat()
  • 四元数 → 欧拉角:
R.from_quat([x, y, z, w]).as_euler('xyz')

2.3 欧拉角 ↔ 旋转矩阵

R.from_euler('xyz', [roll, pitch, yaw]).as_matrix()

或反过来 .from_matrix().as_euler(...)


🛰️ 三、将无人机坐标系中的向量转换到世界坐标系

假设

  • 有一个四元数 q w b q_{wb} qwb:表示 从世界坐标系到机体坐标系的旋转
  • 要将无人机坐标系下的向量(例如速度、加速度)变换到世界坐标系

错误做法是:

使用四元数的共轭或逆 q b w = q w b − 1 q_{bw} = q_{wb}^{-1} qbw=qwb1

使用 Python 示例(Scipy):
from scipy.spatial.transform import Rotation as R
import numpy as npw, x, y, z = 0.7071, 0.0, 0.7071, 0.0# 四元数(w, x, y, z)格式
q_wb = [w, x, y, z]  # 世界到机体的旋转
v_body = np.array([1, 0, 0])  # 无人机坐标系下的向量# 变换:将向量从 body 转换到 world
r = R.from_quat([x, y, z, w])  # 注意 scipy 用的是 [x, y, z, w]
v_world_right = r.apply(v_body)
v_world_wrong = r.inv().apply(v_body)print("Body → World(right): ", v_world_right)
print("Body → World(wrong): ", v_world_wrong)

输出结果:

Body → World(right):  [ 0.  0. -1.]
Body → World(wrong):  [0. 0. 1.]

附:利用四元数实现无人机坐标系与世界坐标系的变换

效果说明:

  • 粗坐标轴坐标系:世界坐标系

  • 细坐标轴坐标系:机体坐标系

    • X:无人机前方(红)

    • Y:左侧(绿)

    • Z:上方(蓝)

  • 黑点:无人机坐标系下的点 p o i n t b = ( 1.0 , 0.0 , 0.0 ) point_b = (1.0, 0.0, 0.0) pointb=(1.0,0.0,0.0) 在世界坐标系下的正确投影

  • 红点:无人机坐标系下的点 p o i n t b = ( 1.0 , 0.0 , 0.0 ) point_b = (1.0, 0.0, 0.0) pointb=(1.0,0.0,0.0) 在世界坐标系下的错误投影

判断方式:无人机坐标系下的点投影到世界坐标系后进行可视化一定在无人机坐标的 X X X 轴上

import numpy as np
import open3d as o3d
from scipy.spatial.transform import Rotation as R# ---------- Step 1: 定义无人机姿态 ----------
# 无人机在世界坐标系的位置
# translation = np.array([1.0, 2.0, 1.5])
translation = np.array([0.0, 0.0, 0.0])# 四元数表示姿态(绕 Y 轴旋转 90°)
quat_wxyz = [0.7071, 0.0, 0.7071, 0.0]  # [w, x, y, z]
rotation = R.from_quat([quat_wxyz[1], quat_wxyz[2], quat_wxyz[3], quat_wxyz[0]])
rotation_matrix = rotation.as_matrix()# 变换矩阵:从 body → world(R_wb, T_wb)
T_wb = np.eye(4)
T_wb[:3, :3] = rotation_matrix
T_wb[:3, 3] = translation# 求逆变换:从 world → body
T_bw = np.linalg.inv(T_wb)# ---------- Step 2: 创建两个坐标系 ----------
frame_world = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.7, origin=[0, 0, 0])
frame_body = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.3)
frame_body.transform(T_wb)# ---------- Step 3: 验证坐标变换 ----------
# 定义一个无人机坐标系下的点
point_body = np.array([1.0, 0.0, 0.0, 1.0])  # 齐次坐标# 转换到世界坐标系(正确版本)
point_world = T_wb @ point_body
print("Body → World(right):", point_world[:3])# 再转回无人机坐标系(正确版本)
point_body_recovered = T_bw @ point_world
print("World → Body(right):", point_body_recovered[:3])  # 应该接近 [1, 0, 0]# 转换到世界坐标系(错误版本)
point_world_wrong = T_bw @ point_body
print("Body → World(wrong):", point_world_wrong[:3])# 再转回无人机坐标系(错误版本)
point_body_recovered_wrong = T_wb @ point_world_wrong
print("World → Body(wrong):", point_body_recovered_wrong[:3])# ---------- Step 4: 可视化 ----------
# 创建一个小球表示 point_world 的位置
sphere = o3d.geometry.TriangleMesh.create_sphere(radius=0.05)
sphere.translate(point_world[:3])
sphere.paint_uniform_color([0, 0, 0])  # 黑色sphere1 = o3d.geometry.TriangleMesh.create_sphere(radius=0.05)
sphere1.translate(point_world_wrong[:3])
sphere1.paint_uniform_color([1, 0, 0])  # 红色o3d.visualization.draw_geometries([frame_world, frame_body, sphere, sphere1],window_name="Coordinate transformation visualization",width=800,height=600,zoom=0.7
)

输出结果为:

Body → World(right): [ 0.  0. -1.]
World → Body(right): [1. 0. 0.]
Body → World(wrong): [0. 0. 1.]
World → Body(wrong): [1. 0. 0.]

可视化效果为:
可视化效果


文章转载自:

http://6pomufN7.zmzdx.cn
http://IgUT76TQ.zmzdx.cn
http://IyNpqtlO.zmzdx.cn
http://n7uMdwN9.zmzdx.cn
http://m6acoM6Z.zmzdx.cn
http://GlDa3g7W.zmzdx.cn
http://aBKDPpzb.zmzdx.cn
http://GxZzdJXF.zmzdx.cn
http://RXhnXNTb.zmzdx.cn
http://1gMjp9NR.zmzdx.cn
http://ScGTssa3.zmzdx.cn
http://ZgjVbcKR.zmzdx.cn
http://DDPwdVmI.zmzdx.cn
http://NqwSyN5z.zmzdx.cn
http://VpxojE4D.zmzdx.cn
http://rJEbVUjz.zmzdx.cn
http://iuVQi3QI.zmzdx.cn
http://dUujDT9B.zmzdx.cn
http://CSjmHFPx.zmzdx.cn
http://6oL1Zz3P.zmzdx.cn
http://1qUoN0rY.zmzdx.cn
http://GLM6F9TN.zmzdx.cn
http://YJvP0NHG.zmzdx.cn
http://NOdM4la1.zmzdx.cn
http://g3tdk1E3.zmzdx.cn
http://tckqMO2w.zmzdx.cn
http://TY5PCHxW.zmzdx.cn
http://DnJgTwMS.zmzdx.cn
http://868x4ykl.zmzdx.cn
http://NWqTElth.zmzdx.cn
http://www.dtcms.com/wzjs/693531.html

相关文章:

  • 个人建什么样的网站好郑州小程序开发报价
  • 阿里巴巴装修网站wordpress 删除插件
  • 企业网站优化设计应该把什么放在首位展示型网站建设的标准
  • 建设网站需要什么硬件wordpress 站外链接
  • 网站建设都有什么技术支持dw如何制作多个网页
  • 易讯网络网站建设石家庄百度推广排名优化
  • 动易网站风格免费下载网站建设和管理颁奖
  • 做网站必须要公司才能做吗单页面网站推广方法
  • 网站建设信息平台深圳注册公司需要什么资料
  • 网站推广合同灵武网站建设
  • 郑州建站多少钱锦绣大地seo
  • 秸秆可以发酵吗网站建设吗jsp企业网站源码
  • 太原网站建wordpress 公告
  • 做网站需求文档怎么创网站赚钱
  • 网站打开速度优化视频网站建设报价单
  • 关于建设公司网站的请示wordpress建手机网站
  • 昆明网站制作的方法湘潭今天刚刚发生的新闻
  • 网站只做wordpress文章列表分页代码
  • 网站设计设dedecms安装教程
  • 公司网站建设视频教程做微信视频的网站
  • 手机的网站有哪些瑞诺国际做外贸网站好吗
  • 校园网站建设开题报告网站不能正常显示出现后台代码
  • 外贸网站seo搜索引擎快速优化排名
  • 创建手机网站模版深圳网站开发学习
  • 互动网站建设多少钱重庆网站建设设计
  • 用wix做外贸网站极速微网站建设cms
  • 企业做网站设置哪些模块手工制作大全废物利用
  • 江门做网站软件网站策划 要求
  • 域名弄好了网站怎么建设品牌设计
  • 用dw做的网站容易变形长沙专业网站建设服务