普吕克线( Plücker 线)

news2024/11/26 14:40:07

普吕克线

在 Plücker 坐标表示中,一条直线 l ‾ 1 \underline{l}_1 l1可以用以下两个向量来表示:
l ‾ 1 = l 1 + ϵ m 1 \underline{l}_1 = l_1+ \epsilon m_1 l1=l1+ϵm1

  1. 方向向量 l 1 l_1 l1:表示直线的方向。
  2. 动量向量 m 1 m_1 m1:表示直线在空间中的位置特性,通常定义为:
    m 1 = p l × l 1 m_1 = p_l \times l_1 m1=pl×l1
    其中, p l p_l pl 是直线上任意一的位置向量, × \times × 表示叉积。

点到直线的距离公式

在这里插入图片描述

对于一个点 p ∈ H p p \in \mathbb{H}_p pHp 和一条直线 l ‾ 1 ∈ H p ∩ S 3 \underline{l}_1 \in \mathbb{H}_p \cap \mathbb{S}^3 l1HpS3,点到直线的距离 d p , l 1 d_{p, l_1} dp,l1 可以表示为:

d p , l 1 = ∥ p × l 1 − m 1 ∥ d_{p, l_1} = \|p \times l_1 - m_1\| dp,l1=p×l1m1

其中, m 1 m_1 m1 是直线上的一个动量向量(moment)。

使用 DQ Robotics 进行计算

以下是使用DQ Robotics来计算该距离的示例代码:

% Point coordinates
p = i_ + j_; % 定义点 p 的坐标

% Build the line
l1 = k_; % 定义直线方向,沿 z轴方向延伸
m1 = cross(i_, k_); % 计算动量向量 m1,经过x轴上 x = 1 点
l1_dq = l1 + E_ * m1; % 构建 Plücker 线的双四元数表示

% Calculate distance
d_p_l1 = norm(cross(p, l1) - m1)

在此示例中:

  • 定义了一个点 p p p 的坐标为 i + j i+ j i+j,即(1,1,0)。
  • 构建了直线 l 1 l_1 l1 和其方向向量 m 1 m_1 m1
  • 使用叉积计算点到直线的距离。

计算结果为:

d_p_l1 = 1

使用 DQ_Geometry 模块的专用函数

我们还可以使用 DQ_Geometry 模块中的专用函数 point_to_line_squared_distance 来计算距离:

d_p_l1 = sqrt(DQ_Geometry.point_to_line_squared_distance(p, l1_dq))

这个函数直接计算平方距离,然后通过平方根获得最终的距离。结果同样为1。
在控制机器人时,通常使用平方范数比直接使用范数更方便。

平方范数范数都是度量向量大小的方式,但平方范数因为省去平方根,计算更简单,且在很多情况下可以有效替代范数,特别是在机器人控制和优化任务中。

  1. 范数 范数是向量长度或大小的度量。对于向量 v = [ v 1 , v 2 , … , v n ] \mathbf{v} = [v_1, v_2, \ldots, v_n] v=[v1,v2,,vn],其 2-范数(Euclidean norm) 计算公式为:

∥ v ∥ = v 1 2 + v 2 2 + ⋯ + v n 2 \|\mathbf{v}\| = \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2} v=v12+v22++vn2

  1. 平方范数 平方范数是范数的平方,公式为:

∥ v ∥ 2 = v 1 2 + v 2 2 + ⋯ + v n 2 \|\mathbf{v}\|^2 = v_1^2 + v_2^2 + \cdots + v_n^2 v2=v12+v22++vn2

  1. 两者的区别
  • 计算简化:平方范数去掉了平方根,因此计算更简单。对于大多数优化或控制任务,计算平方根可能会带来不必要的复杂度,平方范数在计算效率上更有优势。

  • 物理意义不变:平方范数在表示向量大小时虽然少了平方根,但在很多应用中可以等效替代范数,因为优化目标通常不关心绝对距离,而是关心相对大小。

  1. 在机器人控制中的应用 在机器人控制中,使用平方范数的好处包括:
  • 效率高:例如在距离或误差度量中,直接使用平方范数可以避免计算平方根,提高运算效率。

  • 优化问题:许多优化算法(如梯度下降)会使用平方范数来衡量误差,因为平方范数是连续可微的,而范数在零点可能不可导。

Plücker 坐标 中的直线表示,其中:

  1. 定义直线方向 ( l_1 ):

直线的方向向量被定义为 l 1 = k l_1 = k l1=k,这表示直线沿着 ( z ) 轴的正方向。

  1. 选择直线上一点 ( p ):

    为了使用 Plücker 坐标表示直线,我们需要知道直线上的一个点 p l 1 p_{l1} pl1。在这个示例中,选择了点: p l 1 = i p_{l1} = {i} pl1=i,这表示点 p l 1 p_{l1} pl1位于 x x x轴正方向上的单位位置,即坐标为 ( 1 , 0 , 0 ) (1, 0, 0) (1,0,0)

  2. 计算动量向量 ( m_1 ):

    根据 Plücker 坐标的定义,动量向量 m 1 m_1 m1计算为:
    m 1 = p l 1 × l 1 = i × k m_1 = p_{l1} \times l_1 = i \times k m1=pl1×l1=i×k
    因此,在代码中有:

    m1 = cross(i_, k_);
    

    计算叉积 i × k i \times k i×k
    i × k = − j i \times k = -j i×k=j
    所以:
    m 1 = − j m_1 = -j m1=j
    这意味着动量向量 m 1 m_1 m1 指向 y y y轴的负方向。

为什么选择 p l 1 = i p_{l1} = i pl1=i

  • 为了定义一条经过 x x x轴上 x = 1 点并沿 z轴方向延伸的直线
  • 通过计算 m 1 = p l 1 × l 1 = i × k m_1 = p_{l1} \times l_1 = i \times k m1=pl1×l1=i×k,我们得到动量向量 m 1 m_1 m1,这与直线的位置和方向相关。

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

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

相关文章

SLMi350DB-DG适用于驱动低边侧和高边侧的MOSFET和IGBT 兼容光耦的单通道隔离驱动器

SLMi350DB-DG是一款兼容光耦的单通道隔离驱动器,具有4A/7A源电流/灌电流以及3.75kVRMS隔离耐压值,适用于驱动低边侧和高边侧的MOSFET和IGBT。与光耦栅极驱动器相比,SLMi350DB-DG具有高共模瞬态抗扰度(CMTI)、低传播延迟和较小的脉宽失真等关键…

帕金森患者必看!这些维生素能帮你改善生活质量!

帕金森病,这个看似遥远的疾病,却悄然影响着许多人的生活质量。作为一种慢性神经退行性疾病,帕金森不仅会导致患者的运动能力受限,还会引发一系列非运动性症状,如便秘、情绪波动等。然而,你知道吗&#xff1…

5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗

在当今这个快速发展的数字化时代,5G技术的广泛应用正以前所未有的速度推动着各行各业的变革。作为这一技术浪潮中的重要一环,5G智能终端QM630D凭借其卓越的性能和多样化的功能,在林业、渔业、安保、电力、交通等多个领域展现出了巨大的应用潜…

【comfyui教程】ComfyUI有趣工作流推荐:快速换脸,创意随手掌握!

前言 在数字影像处理和创意表达领域,ComfyUI 绝对是你的得力助手!今天我们推荐一个非常有趣的工作流——快速换脸。无论你是图像编辑小白,还是深耕AI影像的达人,这个工作流都能让你快速实现面部迁移,体验全新的照片玩…

GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库

目录 GPT原理 GPT架构 GPT 主要基于 Transformer 的解码器部分 ChatGPT 等类似的问答系统工作流程如下: 用户输入 文本预处理 模型处理 答案生成 输出回答 当用户向 ChatGPT 输入一个问题后:举例说明 文本预处理: ChatGPT不是通过索引搜索的传统知识库 GPT GPT…

Linux云计算 |【第五阶段】CLOUD-DAY8

主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…

基于Zynq FPGA对雷龙SD NAND的测试

一、SD NAND 特征 1.1 SD 卡简介 雷龙的 SD NAND 有很多型号,在测试中使用的是 CSNP4GCR01-AMW 与 CSNP32GCR01-AOW。芯片是基于 NAND FLASH 和 SD 控制器实现的 SD 卡。具有强大的坏块管理和纠错功能,并且在意外掉电的情况下同样能保证数据的安全。 …

探索空间计算与 VR 设备的未来:4K4DGen 高分辨率全景 4D 内容生成系统

在当今科技飞速发展的时代,空间计算和 VR 设备正逐渐成为人们体验沉浸式场景的重要工具。而今天,我们要为大家介绍一款具有创新性的技术 ——4K4DGen 高分辨率全景 4D 内容生成系统,它为 VR/AR 沉浸式体验带来了全新的可能性。 一、项目概述 4K4DGen 项目的核心目标是实现 …

使用官网tar包制作OpenSSL及OpenSSH rpm包进行升级安装(OpenSSH_9.9p1, without OpenSSL未解决)

一、制作openssl-1.1.1w.rpm包 1、安装基础依赖包和rpmbuild及其依赖包 yum install curl which make gcc perl perl-WWW-Curl rpm-build rpm-build rpmdevtools tree -y yum install gcc-c glibc glibc-devel openssl openssl-devel \pcre-devel zlib zlib-devel perl…

Node.js回调函数以及事件循环使用介绍(基础介绍 三)

回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如,我们可以…

Linux(CentOS)安装 MySQL

CentOS版本:CentOS 7 MySQL版本:MySQL Community Server 8.4.3 LTS 1、下载 MySQL 打开MySQL官网:https://www.mysql.com/ 直接下载网址:https://dev.mysql.com/downloads/mysql/ 其他版本 2、上传 MySQL 文件到 CentOS 使用F…

服务器被攻击排查记录

起因 我的深度学习的所有进程突然被killed,我以为是检修,后面发现好像简单的python代码可以正常运行。但是我的训练进程一启动就会被killed 第一时间没有用htop查看cpu,用top看着挺正常的,但是后面看htop,全是绿的&a…

TDengine 签约蘑菇物联,改造通用设备工业互联网平台

在当前工业互联网迅猛发展的背景下,企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出,尤其是由这些设备组成的公辅能源车间,亟需更高效的解决方案来提升设备运行效率,降低能源消耗。为此&a…

【大数据学习 | kafka高级部分】文件清除原理

2. 两种文件清除策略 kafka数据并不是为了做大量存储使用的,主要的功能是在流式计算中进行数据的流转,所以kafka中的数据并不做长期存储,默认存储时间为7天 那么问题来了,kafka中的数据是如何进行删除的呢? 在Kafka…

TOEIC 词汇专题:市场销售篇

TOEIC 词汇专题:市场销售篇 市场销售是企业推广产品和树立品牌形象的重要环节。今天为大家介绍在市场销售领域中常用的托业词汇,助力更好地理解相关英语场景。 1. 市场推广与活动 市场销售离不开推广活动,以下是一些核心词汇: A…

基于 Vue3、Vite 和 TypeScript 实现开发环境下解决跨域问题,实现前后端数据传递

引言 本文介绍如何在开发环境下解决 Vite 前端(端口 3000)和后端(端口 80)之间的跨域问题: 在开发环境中,前端使用的 Vite 端口与后端端口不一致,会产生跨域错误提示: Access to X…

OpenCV-Python-安装环境与测试样例

本文使用Pycharm安装openCV 1.打开pycharm终端 (GUI是我自己创建的项目名称) 错误:终端如果打开闪退的话 应对如下: 汉化版:文件->设置->工具->终端->红框位置设置cmd 英文版:file->settings->Tools->t…

Spark on YARN:Spark集群模式之Yarn模式的原理、搭建与实践

Spark 的介绍与搭建:从理论到实践-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 目录 一、Spark on YARN 的优势 (一&#…

基于IM场景下的Wasm初探:提升Web应用性能|得物技术

一、何为Wasm ? Wasm,全称 WebAssembly,官网描述是一种用于基于堆栈的虚拟机的二进制指令格式。Wasm被设计为一个可移植的目标,用于编译C/C/Rust等高级语言,支持在Web上部署客户端和服务器应用程序。 Wasm 的开发者参…

【JAVA毕业设计】基于Vue和SpringBoot的墙绘产品展示交易平台

本文项目编号 T 049 ,文末自助获取源码 \color{red}{T049,文末自助获取源码} T049,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…