例四和例五:The exponential map of SO(3)+

2023-10-04 10:50

本文主要是介绍例四和例五:The exponential map of SO(3)+,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Example 4:The exponential map of SO(3)

We have seen in Ex.3 that R ˙ = R [ ω ] × ∈ T R S O ( 3 ) . \dot R = R [ω]_× ∈ T_RSO(3). R˙=R[ω]×TRSO(3).
For ω constant, this is an ordinary differential equation(ODE), whose solution is
R ( t ) = R 0 ∗ e x p ( [ ω ] × t ) R(t) = R0*exp([ω]_× t) R(t)=R0exp([ω]×t). At the origin R 0 = I R0 = I R0=I we have the exponential map,
R ( t ) = e x p ( [ ω ] × t ) ∈ S O ( 3 ) R(t) = exp([ω]_× t) \ \ \ \ \ ∈ SO(3) R(t)=exp([ω]×t)     SO(3) .
We now define the vector θ ≜ u θ ≜ ω t ∈ R 3 θ \triangleq uθ\triangleq ωt ∈ R^3 θuθωtR3 as the integrated rotation in angle-axis form, with angle θ and unit axis u. Thus [ θ ] × ∈ s o ( 3 ) [θ]_× ∈ so(3) [θ]×so(3) is the total rotation expressed in the Lie algebra. We substitute it above. Then write the exponential as a power series,
R = e x p ( [ θ ] × ) = ∑ k θ k k ! ( [ u ] × ) k . R = exp([θ]_×) = \sum_k\frac{θ^k}{k!}([u]_×)k. R=exp([θ]×)=kk!θk([u]×)k.
In order to find a closed-form expression, we write down a few powers of [u]×,
[ u ] × 0 = I , [ u ] × 1 = [ u ] × [ u ] × 2 = u u t − I , [ u ] × 3 = − [ u ] × , [ u ] 4 × = − [ u ] × 2 , ⋅ ⋅ ⋅ [u]^0_× = I,\ \ \ \ \ \ [u]^1_× = [u]_× \\ [u]^2_× = uu^t − I,\ \ [u]^3_× = − [u]_× ,\\ [u]4× = − [u]^2_× ,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ · · · [u]×0=I,      [u]×1=[u]×[u]×2=uutI,  [u]×3=[u]×,[u]4×=[u]×2,                       
and realize that all can be expressed as multiples of I,[u]_× or [u]^2_×. We thus rewrite the series as,
R = I + [ u ] × ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − … … ) + [ u ] × 2 ( 1 2 θ 2 − 1 4 ! θ 4 + 1 6 ! θ 6 − … … ) R = I + [u]_×(θ −\frac{1}{3!} θ^3 +\frac{1}{5!} θ^5-……)\\+ [u]_×^2(\frac{1}{2}θ^2 −\frac{1}{4!} θ^4 +\frac{1}{6!} θ^6-……) R=I+[u]×(θ3!1θ3+5!1θ5)+[u]×2(21θ24!1θ4+6!1θ6)
where we identify the series of sin θ and cos θ, yielding the closed form
R = e x p ( [ u θ ] × ) = I + [ u ] × s i n θ + [ u ] × 2 ( 1 − c o s θ ) R = exp([uθ]×) = I + [u]_× sin θ + [u]^2_× (1−cos θ) R=exp([uθ]×)=I+[u]×sinθ+[u]×2(1cosθ)
This expression is the well known Rodrigues rotation formula. It can be used as the capitalized exponential just by doing R = E x p ( u θ ) = e x p ( [ u θ ] × ) R = Exp(uθ) = exp([uθ]_×) R=Exp(uθ)=exp([uθ]×)


我们已经在 Ex3 中看到了 R ˙ = R [ ω ] × ∈ T R S O ( 3 ) \dot R = R [ω]_× ∈ T_RSO(3) R˙=R[ω]×TRSO(3)
对于 ω 常数,这是一个ODE (常微分方程),其解为 R ( t ) = R 0 ∗ e x p ( [ ω ] × t ) R(t) = R0*exp([ω]_× t) R(t)=R0exp([ω]×t)。 在
原点 R0 = I 我们有指数映射,
R ( t ) = e x p ( [ ω ] × t ) ∈ S O ( 3 ) R(t) = exp([ω]_× t) \ \ \ \ \ ∈ SO(3) R(t)=exp([ω]×t)     SO(3)
我们现在定义向量 θ ≜ u θ ≜ ω t ∈ R 3 θ \triangleq uθ\triangleq ωt ∈ R^3 θuθωtR3 为角度轴形式的积分旋转,角度 θ 和单位轴 u。 因此 [ θ ] × ∈ s o ( 3 ) [θ]_× ∈ so(3) [θ]×so(3)是李代数中表达的总旋转。 我们在上面替换它。 然后将指数写成幂级数,
R = e x p ( [ θ ] × ) = ∑ k θ k k ! ( [ u ] × ) k R = exp([θ]_×) = \sum_k\frac{θ^k}{k!}([u]_×)k R=exp([θ]×)=kk!θk([u]×)k
为了找到一个封闭形式的表达式,我们写下 [u]× 的几个幂,
[ u ] × 0 = I , [ u ] × 1 = [ u ] × [ u ] × 2 = u u t − I , [ u ] × 3 = − [ u ] × , [ u ] 4 × = − [ u ] × 2 , ⋅ ⋅ ⋅ [u]^0_× = I,\ \ \ \ \ \ [u]^1_× = [u]_× \\ [u]^2_× = uu^t − I,\ \ [u]^3_× = − [u]_× ,\\ [u]4× = − [u]^2_× ,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ · · · [u]×0=I,      [u]×1=[u]×[u]×2=uutI,  [u]×3=[u]×,[u]4×=[u]×2,                       
并意识到所有都可以表示为 I,[u]_× 或 [u]^2_× 的倍数。 因此,我们将其重写为,
R = I + [ u ] × ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − … … ) + [ u ] × 2 ( 1 2 θ 2 − 1 4 ! θ 4 + 1 6 ! θ 6 − … … ) R = I + [u]_×(θ −\frac{1}{3!} θ^3 +\frac{1}{5!} θ^5-……)\\+ [u]_×^2(\frac{1}{2}θ^2 −\frac{1}{4!} θ^4 +\frac{1}{6!} θ^6-……) R=I+[u]×(θ3!1θ3+5!1θ5)+[u]×2(21θ24!1θ4+6!1θ6)
通过 sin θ 和 cos θ 的序列形成的封闭形式
R = e x p ( [ u θ ] × ) = I + [ u ] × s i n θ + [ u ] × 2 ( 1 − c o s θ ) R = exp([uθ]×) = I + [u]_× sin θ + [u]^2_× (1−cos θ) R=exp([uθ]×)=I+[u]×sinθ+[u]×2(1cosθ)
这个表达式就是众所周知的罗德里格斯旋转公式。 只需执行以下操作即可将其用作大写指数 R = E x p ( u θ ) = e x p ( [ u θ ] × ) R = Exp(uθ) = exp([uθ]_×) R=Exp(uθ)=exp([uθ]×)

Example 5: The unit quaternions group S3(cont.)

单位四元数群 S3(续)

In the group S3(recall Ex. 2 and see e.g. [8]), the time derivative of the unit norm condition q ∗ q = 1 q^∗q = 1 qq=1 yields
q ∗ q ˙ = − ( q ∗ q ˙ ) ∗ . q^*\dot q = −(q^*\dot q)^∗. qq˙=(qq˙).
This reveals that q ∗ q ˙ q^*\dot q qq˙ is a pure quaternion (its real part is zero). Pure quaternions uv ∈ Hp have the form
u v = ( i u x + j u y + k u z ) v = i v x + j v y + k v z uv = (iu_x + ju_y + ku_z)v = iv_x + jv_y + kv_z uv=(iux+juy+kuz)v=ivx+jvy+kvz
where u ≜ i u x + j u y + k u z u\triangleq iu_x + ju_y + ku_z uiux+juy+kuzis pure and unitary, v is the norm, and i, j, k are the generators of the Lie algebra s 3 = H p s^3 = H_p s3=Hp. Re-writing the condition above we have,
q ˙ = q u v ∈ T q S 3 \dot q = q uv \ \ \ \ \ ∈ T_qS^3 q˙=quv     TqS3
which integrates to q = q 0 ∗ e x p ( u v t ) q = q0* exp(uvt) q=q0exp(uvt). Letting q0 = 1 and defining φ ≜ u φ ≜ u v t φ\triangleq uφ\triangleq uvt φuφuvt we get the exponential map,
q = e x p ( u φ ) ≜ ∑ φ k k ! u k ∈ S 3 q=exp(uφ)\triangleq \sum\frac{ φ^k}{k!}u^k\ \ \ \ \ ∈ S^3 q=exp(uφ)k!φkuk     S3
The powers of u follow the pattern 1, u, −1, −u, 1, · · · .
Thus we group the terms in 1 and u and identify the series of cos φ and sin φ. We get the closed form
q = e x p ( u φ ) = c o s ( φ ) + u s i n ( φ ) , q = exp(uφ) = cos(φ) + u sin(φ) , q=exp(uφ)=cos(φ)+usin(φ),
which is a beautiful extension of the Euler formula,exp(iφ) = cos φ+isin φ.
The elements of the Lie algebra φ = uφ ∈ s3 can be identified with the rotation vectorθ ∈ R3 trough the mappings hat and vee,
H a t : R 3 → s 3 ; θ → θ ∧ = 2 φ V e e : s 3 → R 3 ; φ → φ ∨ = θ / 2 Hat : R^3 → s^3; θ→ θ^∧ = 2φ\\ Vee : s^3 → R^3; φ → φ^∨ = θ/2 Hat:R3s3;θθ=2φVee:s3R3;φφ=θ/2 ,
where the factor 2 accounts for the double effect of the quaternion in the rotation action, x’ = q x q∗. With this choice of Hat and Vee, the quaternion exponential
q = E x p ( u θ ) = c o s ( θ / 2 ) + u s i n ( θ / 2 ) q = Exp(uθ) = cos(θ/2) + u sin(θ/2) q=Exp(uθ)=cos(θ/2)+usin(θ/2)
is equivalent to the rotation matrix R = Exp(uθ)


在群 S3(回忆例 2 并参见例 [8])中,单位范数条件 q ∗ q = 1 q^∗q = 1 qq=1 的时间导数要求
q ∗ q ˙ = − ( q ∗ q ˙ ) ∗ . q^*\dot q = −(q^*\dot q)^∗. qq˙=(qq˙).
这表明 q ∗ q ˙ q^*\dot q qq˙ 是一个纯四元数(它的实部为零)。 纯四元数 uv ∈ Hp 具有形式
u v = ( i u x + j u y + k u z ) v = i v x + j v y + k v z uv = (iu_x + ju_y + ku_z)v = iv_x + jv_y + kv_z uv=(iux+juy+kuz)v=ivx+jvy+kvz
其中 u ≜ i u x + j u y + k u z u\triangleq iu_x + ju_y + ku_z uiux+juy+kuz是纯幺正的,v是范数,i, j, k是李代数 s 3 = H p s^3 = H_p s3=Hp的生成元。 重写我们上面的条件,

这篇关于例四和例五:The exponential map of SO(3)+的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1928

相关文章

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

Map

Map 是 Java 中用于存储键值对的集合接口。以下是对 Map 的详细介绍: 特点 键值对存储:每个元素包含一个键和一个值。 键唯一:键不能重复,但值可以重复。 无序/有序:根据具体实现,键值对的顺序可能无序(如 HashMap)或有序(如 TreeMap、LinkedHashMap)。 主要实现类 HashMap 基于哈希表,无序存储。 允许一个 null 键和多个 null 值。

Java中集合类Set、List和Map的区别

Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。那么它们有什么区别呢? Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对

C++数据结构重要知识点(5)(哈希表、unordered_map和unordered_set封装)

1.哈希思想和哈希表 (1)哈希思想和哈希表的区别 哈希(散列、hash)是一种映射思想,本质上是值和值建立映射关系,key-value就使用了这种思想。哈希表(散列表,数据结构),主要功能是值和存储位置建立映射关系,它通过key-value模型中的key来定位数组的下标,将value存进该位置。 哈希思想和哈希表数据结构这两个概念要分清,哈希是哈希表的核心思想。 (2)unordered

【C++STL(十四)】一个哈希桶简单模拟实现unordered_map/set

目录 前言 一、改造哈希桶 改造结点类 改造主体  模板参数改造  迭代器(重点) 改造完整哈希桶 unordered_map模拟实现 unordered_set模拟实现 前言 前面的文章都有说unordered_map/set的底层结构就是哈希表,严格来说是哈希桶,那么接下来我们就尝试使用同一个哈希桶来模拟实现一下。整体的逻辑和一棵红黑树封装map/set类似,所以

Java中Map取值转String Null值处理

Map<String, Object> 直接取值转String String value = (String)map.get("key") 当map.get(“key”)为Null值时会报错。 使用String类的valueOf静态方法可以解决这个问题 String value = String.valueOf(map.get("key"))

Creating OpenAI Gym Environment from Map Data

题意:从地图数据创建 OpenAI Gym 环境 问题背景: I am just starting out with reinforcement learning and trying to create a custom environment with OpenAI gym. However, I am stumped with trying to create an enviro

【Java编程的逻辑】Map和Set

HashMap Map有键和值的概念。一个键映射到一个值,Map按照键存储和访问值,键不能重复。 HashMap实现了Map接口。 基本原理 HashMap的基本实现原理:内部有一个哈希表,即数组table,每个元素table[i]指向一个单向链表,根据键存取值,用键算出hash值,取模得到数组中的索引位置index,然后操作table[index]指向的单向链表。 存取的时候依据键的

RDD的map和flatMap

在 Apache Spark 中,map 和 flatMap 是 RDD(弹性分布式数据集)中最常用的转换操作之一。 map 假设你有一个包含整数的 RDD,你想要计算每个元素的平方。 from pyspark import SparkContextsc = SparkContext(appName="MapExample")# 创建一个包含整数的 RDDnumbers = sc.para

【python 多进程传参】pool.map() 函数传多参数

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 一、背景介绍 相信很多人都用过,pool.map()函数,这个函数,有两个参数可以传,第一个参数传的是函数,第二个参数传的是数据列表。 那么怎么在第二个数据列表,多传几个参数呢,方法是通过对有多个参数的方法进行封装