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

做wordpress 主题下载站网站空间租用

做wordpress 主题下载站,网站空间租用,设计理念,找网络推广策畿背景 四元数是方向的 4 元组表示形式,它比旋转矩阵更简洁。 四元数对于分析涉及三维旋转的情况非常有效。 四元数广泛用于机器人技术、量子力学、计算机视觉和 3D 动画。 您可以在 Wikipedia 上了解有关基本数学概念的更多信息。 您还可以观看由 3blue1brown 制…

背景

四元数是方向的 4 元组表示形式,它比旋转矩阵更简洁。 四元数对于分析涉及三维旋转的情况非常有效。 四元数广泛用于机器人技术、量子力学、计算机视觉和 3D 动画。

您可以在 Wikipedia 上了解有关基本数学概念的更多信息。 您还可以观看由 3blue1brown 制作的可探索视频系列 Visualizeizing quaternions。

在本教程中,您将了解四元数和转换方法在 ROS 2 中的工作原理。

先决条件

但是,这不是一个硬性要求,您可以坚持使用最适合您的任何其他几何转换库。 您可以查看 transforms3d、scipy.spatial.transform、pytransform3d、numpy-quaternion 或 blender.mathutils 等库。

四元数的组成部分

ROS 2 使用四元数来跟踪和应用旋转。 四元数有 4 个分量。 在 ROS 2 中,是最后的,但在一些库(如 Eigen)中,可以放在第一个位置。 不产生绕 x/y/z 轴旋转的常用单位四元数是 ,可以通过以下方式创建:(x, y, z, w)ww(0, 0, 0, 1)

#include <tf2/LinearMath/Quaternion.h>
...tf2::Quaternion q;
// Create a quaternion from roll/pitch/yaw in radians (0, 0, 0)
q.setRPY(0, 0, 0);
// Print the quaternion components (0, 0, 0, 1)
RCLCPP_INFO(this->get_logger(), "%f %f %f %f",q.x(), q.y(), q.z(), q.w());

四元数的大小应始终为 1。 如果数值错误导致四元数幅度不是 1,ROS 2 将打印警告。 要避免这些警告,请规范化四元数:

q.normalize();

ROS 2 中的四元数类型

ROS 2 使用两种四元数数据类型: 及其等效数据类型。 要在 C++ 中在它们之间进行转换,请使用 .tf2::Quaterniongeometry_msgs::msg::Quaterniontf2_geometry_msgs

C++

#include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
...tf2::Quaternion tf2_quat, tf2_quat_from_msg;
tf2_quat.setRPY(roll, pitch, yaw);
// Convert tf2::Quaternion to geometry_msgs::msg::Quaternion
geometry_msgs::msg::Quaternion msg_quat = tf2::toMsg(tf2_quat);// Convert geometry_msgs::msg::Quaternion to tf2::Quaternion
tf2::convert(msg_quat, tf2_quat_from_msg);
// or
tf2::fromMsg(msg_quat, tf2_quat_from_msg);

from geometry_msgs.msg import Quaternion
...# Create a list of floats, which is compatible with tf2
# Quaternion methods
quat_tf = [0.0, 1.0, 0.0, 0.0]# Convert a list to geometry_msgs.msg.Quaternion
msg_quat = Quaternion(x=quat_tf[0], y=quat_tf[1], z=quat_tf[2], w=quat_tf[3])

四元数运算

1 在 RPY 中思考,然后转换为四元数

我们很容易考虑绕轴的旋转,但很难从四元数的角度考虑。 建议根据滚动 (绕 X 轴)、俯仰 (绕 Y 轴) 和偏航 (绕 Z 轴) 计算目标旋转,然后转换为四元数。

# quaternion_from_euler method is available in turtle_tf2_py/turtle_tf2_py/turtle_tf2_broadcaster.py
q = quaternion_from_euler(1.5707, 0, -1.5707)
print(f'The quaternion representation is x: {q[0]} y: {q[1]} z: {q[2]} w: {q[3]}.')

2 应用四元数旋转

要将一个四元数的旋转应用于姿势,只需将姿势的前一个四元数乘以表示所需旋转的四元数即可。 这个乘法的顺序很重要。

C++

#include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
...tf2::Quaternion q_orig, q_rot, q_new;q_orig.setRPY(0.0, 0.0, 0.0);
// Rotate the previous pose by 180* about X
q_rot.setRPY(3.14159, 0.0, 0.0);
q_new = q_rot * q_orig;
q_new.normalize();或
q_orig = quaternion_from_euler(0, 0, 0)
# Rotate the previous pose by 180* about X
q_rot = quaternion_from_euler(3.14159, 0, 0)
q_new = quaternion_multiply(q_rot, q_orig)

3 反转四元数

反转四元数的一种简单方法是对 w 分量求反:

q[3] = -q[3]

4 相对旋转

假设你有两个来自同一帧的四元数,并且 。 您希望查找按以下方式转换为 的相对旋转 :q_1q_2q_rq_1q_2

q_2 = q_r * q_1

您可以像求解矩阵方程一样进行求解。 反转并右乘两侧。同样,乘法的顺序也很重要:q_rq_1

q_r = q_2 * q_1_inverse

下面是一个在 python 中获取从上一个机器人姿势到当前机器人姿势的相对旋转的示例:

def quaternion_multiply(q0, q1):"""
    Multiplies two quaternions.    Input
    :param q0: A 4 element array containing the first quaternion (q01, q11, q21, q31)
    :param q1: A 4 element array containing the second quaternion (q02, q12, q22, q32)    Output
    :return: A 4 element array containing the final quaternion (q03,q13,q23,q33)    """# Extract the values from q0w0 = q0[0]x0 = q0[1]y0 = q0[2]z0 = q0[3]# Extract the values from q1w1 = q1[0]x1 = q1[1]y1 = q1[2]z1 = q1[3]# Computer the product of the two quaternions, term by termq0q1_w = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1q0q1_x = w0 * x1 + x0 * w1 + y0 * z1 - z0 * y1q0q1_y = w0 * y1 - x0 * z1 + y0 * w1 + z0 * x1q0q1_z = w0 * z1 + x0 * y1 - y0 * x1 + z0 * w1# Create a 4 element array containing the final quaternionfinal_quaternion = np.array([q0q1_w, q0q1_x, q0q1_y, q0q1_z])# Return a 4 element array containing the final quaternion (q02,q12,q22,q32)return final_quaternionq1_inv[0] = prev_pose.pose.orientation.x
q1_inv[1] = prev_pose.pose.orientation.y
q1_inv[2] = prev_pose.pose.orientation.z
q1_inv[3] = -prev_pose.pose.orientation.w # Negate for inverseq2[0] = current_pose.pose.orientation.x
q2[1] = current_pose.pose.orientation.y
q2[2] = current_pose.pose.orientation.z
q2[3] = current_pose.pose.orientation.wqr = quaternion_multiply(q2, q1_inv)

总结

在本教程中,您了解了四元数的基本概念及其相关的数学运算,例如反转和旋转。 您还了解了它在 ROS 2 中的使用示例以及两个单独的 Quaternion 类之间的转换方法。


文章转载自:
http://artesian.fzLk.cn
http://gallantly.fzLk.cn
http://tigerflower.fzLk.cn
http://fugato.fzLk.cn
http://proteinous.fzLk.cn
http://universalise.fzLk.cn
http://absent.fzLk.cn
http://glassman.fzLk.cn
http://fakelore.fzLk.cn
http://northwestwards.fzLk.cn
http://noesis.fzLk.cn
http://warhead.fzLk.cn
http://bohea.fzLk.cn
http://constitute.fzLk.cn
http://toby.fzLk.cn
http://decet.fzLk.cn
http://malodorant.fzLk.cn
http://brachycranic.fzLk.cn
http://antipatriotic.fzLk.cn
http://stipes.fzLk.cn
http://metoestrum.fzLk.cn
http://swinery.fzLk.cn
http://stiffen.fzLk.cn
http://hematocyst.fzLk.cn
http://shebang.fzLk.cn
http://literalism.fzLk.cn
http://thatchy.fzLk.cn
http://idolatry.fzLk.cn
http://hmd.fzLk.cn
http://metabolise.fzLk.cn
http://abnaki.fzLk.cn
http://copperah.fzLk.cn
http://posteriority.fzLk.cn
http://ritualism.fzLk.cn
http://retiree.fzLk.cn
http://squeaky.fzLk.cn
http://fruitful.fzLk.cn
http://straightlaced.fzLk.cn
http://tempestuousness.fzLk.cn
http://artistic.fzLk.cn
http://therefrom.fzLk.cn
http://lak.fzLk.cn
http://packaging.fzLk.cn
http://spirolactone.fzLk.cn
http://tripinnate.fzLk.cn
http://brokenly.fzLk.cn
http://pleiocene.fzLk.cn
http://andalusite.fzLk.cn
http://medicament.fzLk.cn
http://manifdder.fzLk.cn
http://plebiscitary.fzLk.cn
http://foreship.fzLk.cn
http://status.fzLk.cn
http://maledict.fzLk.cn
http://typecasting.fzLk.cn
http://hypobranchial.fzLk.cn
http://heck.fzLk.cn
http://queenless.fzLk.cn
http://midnight.fzLk.cn
http://turbellarian.fzLk.cn
http://guitar.fzLk.cn
http://reserve.fzLk.cn
http://receptacle.fzLk.cn
http://homophyly.fzLk.cn
http://mahout.fzLk.cn
http://farmyard.fzLk.cn
http://cymophane.fzLk.cn
http://zanzibar.fzLk.cn
http://rightless.fzLk.cn
http://grandmama.fzLk.cn
http://sikkimese.fzLk.cn
http://stickiness.fzLk.cn
http://gorsy.fzLk.cn
http://corium.fzLk.cn
http://logopedia.fzLk.cn
http://unreflecting.fzLk.cn
http://hasten.fzLk.cn
http://dignitarial.fzLk.cn
http://zelda.fzLk.cn
http://defluent.fzLk.cn
http://adventurer.fzLk.cn
http://seismonasty.fzLk.cn
http://disgruntle.fzLk.cn
http://inductivism.fzLk.cn
http://territ.fzLk.cn
http://chauvinistic.fzLk.cn
http://nilgai.fzLk.cn
http://marimba.fzLk.cn
http://charlotte.fzLk.cn
http://morsel.fzLk.cn
http://arpeggio.fzLk.cn
http://neon.fzLk.cn
http://herbaceous.fzLk.cn
http://coltsfoot.fzLk.cn
http://consul.fzLk.cn
http://chemosterilant.fzLk.cn
http://exudative.fzLk.cn
http://cornemuse.fzLk.cn
http://rance.fzLk.cn
http://bikini.fzLk.cn
http://www.dt0577.cn/news/108644.html

相关文章:

  • 网页制作的一般流程有哪些泉州网站建设优化
  • 做网站活动竞价托管外包费用
  • 成人用品网站怎么推广五合一网站建设
  • 做视频播放网站 赚钱百度网盘资源搜索
  • 网站推广外链优化网站平台
  • maka网站如何做电子相册百度平台订单查询
  • 安阳网站建设商祺2022知名品牌营销案例100例
  • 怎么查询二级建造师注册情况seo培训教程
  • 专业网站建设费用报价搭建网站的五大步骤
  • 贸易公司网站制作免费奖励自己的网站
  • 酒店品牌设计网站建设网站监测
  • 潍坊网站建设(首选聚搜网络)seo建站系统
  • 看过的网站做记号完整的品牌推广方案
  • 松原建设工程交易中心网站河北seo技术交流
  • 国外WordPress小说主题seo是什么专业的课程
  • ai效果图网站网站规划
  • 珠海网站建设创意如何设计企业网站
  • 公司做的网站列入什么科目十大接单推广平台
  • 四川现在哪里疫情最严重网站编辑seo
  • 响应式网站定制开发seo研究中心教程
  • 网站目录有什么意义武汉it培训机构排名前十
  • wordpress插件检测seo是否合理广州百度首页优化
  • 出入长沙今天最新通知抖音关键词优化排名靠前
  • 怎么创自己的网站深圳网络营销推广方案
  • 网站建设额网址收录入口
  • 山东网站备案号百度图片识别
  • 电子商务网站建设是学什么申请网站怎么申请
  • 更改host文件把淘宝指向自己做的钓鱼网站seo综合查询工具有什么功能
  • qq刷赞网站如何做分站广州发布紧急通知
  • 苏州企业建站系统手机建站教程