两个相似的位姿具有较大的相对欧拉角

2023-12-27

欧拉角表示的相似位姿有两种:

s_euler_angle_o1:
0.000549608
    -3.1334
    1.23193
s_euler_angle_o2:
0.0222646
 -3.10948
  1.31032

但 Eigen 计算出的相对欧拉角为

o1_euler_angle_o2:
 3.11182
-3.12907
-3.06258

欧拉约定是ZYX。 我计算 o1_euler_angle_o2 的代码如下:

#include <iostream>
#include <vector>
#include "sophus/se3.h"
#include "sophus/so3.h"
#include <Eigen/Core>
Sophus::SE3 EulerTranslatetoSE3(Eigen::Vector3d euler_angle, Eigen::Vector3d translate){
        Eigen::Matrix3d o1_R_on = (Eigen::AngleAxisd(euler_angle[0],Eigen::Vector3d::UnitZ())*Eigen::AngleAxisd(euler_angle[1],Eigen::Vector3d::UnitY())*Eigen::AngleAxisd(euler_angle[2],Eigen::Vector3d::UnitX())).matrix();
        Sophus::SE3 o1_T_on_sop(o1_R_on,translate);
        return o1_T_on_sop;

    }
int main() {
    Eigen::Vector3d s_euler_angle_o1 = Eigen::Vector3d(0.000549608,-3.1334,1.23193);
    Eigen::Vector3d s_euler_angle_o2 = Eigen::Vector3d(0.0222646,-3.10948,1.31032);
    Eigen::Vector3d s_t_o1 = Eigen::Vector3d(0.0148442,0.0453362,0.342611);
    Eigen::Vector3d s_t_o2 = Eigen::Vector3d(0.0213847,0.0488918,0.341841);

    Sophus::SE3 s_T_o1 = EulerTranslatetoSE3(s_euler_angle_o1,s_t_o1);
    Sophus::SE3 s_T_o2 = EulerTranslatetoSE3(s_euler_angle_o2,s_t_o2);
    Sophus::SE3 o1_T_o2 = s_T_o1.inverse() * s_T_o2;
    Eigen::Matrix3d o1_R_o2 = o1_T_o2.rotation_matrix();
    Eigen::Vector3d o1_euler_angle_o2 = o1_R_o2.eulerAngles(2,1,0);
    std::cout<<"o1_euler_angle_o2:\n"<<o1_euler_angle_o2<<std::endl;
    return 0;
}

CMakelist.txt 如下:

cmake_minimum_required(VERSION 3.14)
project(test)

set(CMAKE_CXX_STANDARD 14)
#sophus
find_package(Sophus REQUIRED)
include_directories(${Sophus_INCLUDE_DIRS})
add_executable(test main.cpp)
# Eigen
include_directories("/usr/include/eigen3" )
target_link_libraries(test PRIVATE
        ${DEPENDENCIES}
        ${Sophus_LIBRARIES}
        )

我使用欧拉角,因为欧拉角是三维的。遗传算法更容易实现。

这个相对姿势是唯一的结果吗?如果没有,是否有一个结果可以用欧拉角反映小相对位姿?


结果是完全有效的。但通过的文档.eulerAngles() http://eigen.tuxfamily.org/dox/group__Geometry__Module.html#ga17994d2e81b723295f5bc3b1f862ed3b返回角的范围是[0:pi]x[-pi:pi]x[-pi:pi]。在您的情况下,这是不幸的,因为会有一个较小的表示,但需要第一个角度为负值。

如果您确实需要欧拉角,您可以尝试不支持的欧拉角模块 https://eigen.tuxfamily.org/dox-devel/unsupported/group__EulerAngles__Module.htmlEigen,它允许对输出进行更多配置。

但如果你只需要一个好的 SO3->R^3 映射,我强烈建议使用与李群相关的对数映射(这就是Sophus::SO3::log应该是计算)。另外,我将无耻地插入一篇关于该主题的论文:“通过流形封装将通用传感器融合算法与声音状态表示集成”(在网上应该不难找到)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个相似的位姿具有较大的相对欧拉角 的相关文章

  • 稠密对称矩阵的特征有效类型

    Does Eigen http eigen tuxfamily org index php title Main Page有存储密集 固定大小 对称矩阵的有效类型吗 嘿 它们无处不在 IE 对于 N 9 它应该只存储 1 9 9 2 45
  • Eigen::Tensor 和 Eigen::Matrix 性能比较

    我想用单个 3 D Eigen Tensor 替换代码中的一系列矩阵 考虑到这一点 我尝试比较张量和矩阵的性能 下面的函数 tensorContractTest 执行 n n n 3 阶张量与大小为 n n 500 的 1 阶张量的收缩 此
  • 如何将 Eigen 库添加到 C++ 项目中

    可能是一个愚蠢 简单的问题 但我一直无法找到答案 我不知道如何使用 CodeBlocks c 添加库 我从以下位置下载了 zip 文件http eigen tuxfamily org index php title Main Page ht
  • Rcpp 相当于 rowsum [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找 R 函数的快速替代方案r
  • eigen::select() 的奇怪行为

    在本征中 构造 R array lt s select P Q 当 P Q 之一或两者都是向量时有效 与R的长度相同 但只要两者 其中一些是标量 我收到编译错误 我的问题是 是的行为select在场 两个标量是特征警告我的一种方式 还有更有
  • 如何在 CUDA 内核中使用 Eigen

    Eigen 是一个 C 线性代数库http eigen tuxfamily org http eigen tuxfamily org 使用基本数据类型 例如基本浮点数组 很容易 只需将其复制到设备内存并将指针传递给 cuda 内核即可 但是
  • 元素矩阵乘法:R 与 Rcpp(如何加速此代码?)

    我是新来的C 编程 使用Rcpp无缝集成到R 并且我希望得到一些有关如何加快某些计算速度的建议 考虑以下示例 testmat lt matrix 1 9 nrow 3 testvec lt 1 3 testmat testvec 1 2 3
  • 如何复制特征矩阵

    我有两个Eigen MatrixXd他们总是有一排 输入矩阵是A我想将这个矩阵复制到另一个矩阵中B 但矩阵之间的列数可以不同 下面是一个例子 A 0 5 我需要创建一个B1行4列的矩阵 因此它是 B 0 5 0 5 0 5 0 5 But
  • Eigen:返回对带有编译时维度检查的矩阵块的引用

    我要问的是一个概括这个问题 https stackoverflow com questions 13548253 eigen library return a matrix block in a function as lvalue 具体来
  • 在 Eigen3 中实现 Bartels–Stewart 算法?

    过去当我需要解西尔维斯特方程时AX XB C 我用过scipy的函数 solve sylvester 1 它显然是通过使用 Bartels Stewart 算法将事物转化为上三角形式 然后使用lapack 我现在需要使用以下方法求解方程ei
  • 将特征矩阵转换为 C++ 形式的三元组

    我认为 Eigen 使用压缩方法来存储稀疏矩阵 有什么方法可以从 std vectors 中提取特征稀疏矩阵的三重格式向量 Thanks 更多信息 三元组格式的示例 矩阵的三元组格式 A 3 0 4 0 0 0 1 0 0 2 0 5 4
  • 使用特征值测试奇点:识别共线列

    我正在尝试使用特征值方法检查我的矩阵是否是奇异的 即 如果特征值之一为零 则矩阵是奇异的 这是代码 z lt matrix c 3 2 1 4 9 6 3 12 5 5 9 4 nrow 4 ncol 3 eigen t z z value
  • libgdx 中四元数的 euler getPitch()、getRoll()、getYaw() 的旋转顺序?

    将四元数转换为欧拉角时 通常必须有轴旋转的顺序 例如这种可视化 http quaternions online libgdx 是如何工作的 四元数类具有以下功能 getRoll Math asin MathUtils clamp 2f w
  • Eigen static libaligned_free“双重释放或损坏”

    这是一个延续较早的帖子 https stackoverflow com questions 70788173 eigen static lib memory align 但这一次希望有一个更好的例子 设置向量时 这个简单的测试会崩溃 我正在
  • 万向节锁是怎么发生的?

    所以我在网上搜索 我在想象如何 发生万向节锁定 根据我所看到的 当两个或多个轴对齐失去一定的自由度时就会发生这种情况 但我无法想象这些轴将如何开始对齐 我的意思是 当我绕 x 轴旋转对象时 例如 y 轴和 z 轴是否不会随 X 轴旋转以保持
  • 如何传递特征矩阵行引用以将其视为向量?

    我有一个对向量引用进行操作的函数 例如 void auto bias const Eigen VectorXf v Eigen Ref
  • 将函数应用于所有特征矩阵元素

    我有一个Eigen MatrixXd我想通过按组件应用函数来修改其所有元素 例如 MatrixXd m for each m i j m i j exp m i j 有办法达到这个结果吗 是的 使用Eigen MatrixBase lt g
  • 特征密集稀疏矩阵乘积是线程化的吗?

    我知道稀疏密集产品是根据文档进行线程化的 https eigen tuxfamily org dox TopicMultiThreading html https eigen tuxfamily org dox TopicMultiThre
  • 从模板类创建对象时出错

    我一直在尝试找到一种方法 从 C 中的多元正态分布中采样随机向量 同时具有均值向量和协方差矩阵 就像 Matlab 的那样mvnrnd功能有效 我找到了实现此功能的类的相关代码这一页 http lost found wandering bl
  • 模板成员函数和 std::invocable 的 C++20 概念中的错误

    我正在尝试 C 20 概念和本征库 https eigen tuxfamily org index php title Main Page 我发生了意想不到的行为 具体来说 考虑以下概念 要求类型可以通过以下任一方式调用 Eigen Mat

随机推荐

  • Heroku:“https://git.heroku.com”的用户名:git

    我正在尝试检查 heroku 上的 git 远程 heroku auth logout Local credentials cleared heroku auth login Enter your Heroku credentials Em
  • 如何查找特定 Subversion 用户所做的修订?

    使用命令行 我想查看特定用户所做的所有更改集 这可能吗 我查看了文档svn log但不知道如何做到这一点 我不知道有什么方法可以使用纯 Subversion 来做到这一点 但你可以做到with sed http svn haxx se us
  • PHP - preg_replace - 文本链接作为可点击链接

    我使用此 preg replace 将文本 url 更改为可在脚本中单击 将文本链接替换为带有 preg replace 的链接 https stackoverflow com questions 13105960 replacing te
  • jQuery element.data() 语法。我怎么知道`$(this)`是什么?

    我有以下 jQuery 变量 var confirmbox div div data defaultText This action cannot be reversed Are you sure you wish to do this d
  • intellij idea中设置tomcat的问题

    我正在尝试使用 intellij idea 创建一个简单的测试 Restful Web 服务 我正在关注这个教程 https medium com jamsesso starting out with jersey apache tomca
  • 当您克隆 Backbone.Collection 时,模型引用是否完好无损?

    我正在 clone ing 一个集合 以便我可以在其上使用拼接循环而不干扰原始集合 克隆阵列中的模型是原件还是副本 我需要的是包含原始模型的数组的副本 感谢您提供任何信息 您将获得与包装在相同类型的新集合中的源集合相同的模型 这是colle
  • 拖动元素时滚动 div 而不移动鼠标

    我开发了一个代码 其中包括一个表格 其中所有单元格都是可删除的 表格容器是具有固定高度和滚动条的 div 我想将一个元素 在我的示例中为黄色方块 拖到表格底部的最后一个表格单元格中 一切正常 但要在拖动元素时激活 div 容器的滚动条 我必
  • 如何绑定到 Style.Resource 中的附加属性?

    我正在尝试使用附加属性在 TextBox 的背景中创建提示文本标签 但无法解析样式资源中文本标题的绑定 风格定义
  • Postgres 数据库已锁定:查询永远运行

    我的一个 python 脚本在 Postgres 数据库上运行了一些 ALTER TABLE 查询 发生了一些问题 桌子被锁了 当我对这些表中的任何一个运行任何查询时 它告诉我查询正在运行 但什么也没有发生 目前 我只能通过关闭系统并重新启
  • iOS 5.0 用户代理字符串是什么?

    是什么iOS 5 0用户代理字符串 这里是iOS 4 0用户代理 iPhone 4 用户代理是什么 https stackoverflow com q 3105555 836407 iPhone Mozilla 5 0 iPhone CPU
  • KIF 输出:AX Exchange 错误:错误域=辅助功能代码=0“远程服务不响应 _accessibilityMachPort”

    在使用 iOS 8 1 3 的设备上运行 KIF 集成测试时 我收到大量以下类型的诊断消息作为控制台输出 AX Exchange 错误 错误域 辅助功能代码 0 远程服务 不响应 accessibilityMachPort UserInfo
  • 将文件读入数组 - Java

    我正在练习java 并在网上查看练习 然而 我陷入了我需要的地步 Read the file again and initialise the elements of the array Task 将表示成员列表的类 Members 编写为
  • file_exists() 的 PHP 不区分大小写版本

    我试图想出在 PHP 中实现不区分大小写的 file exists 函数的最快方法 我最好的选择是枚举目录中的文件并进行 strtolower 与 strtolower 比较 直到找到匹配项 我使用评论中的源代码来创建这个函数 如果找到则返
  • Firebase Auth UI 的电子邮件验证

    我在用firebase auth UI FirebaseUI Android https github com firebase FirebaseUI Android blob master auth README md 在 Android
  • django 迁移 - 具有多个开发分支的工作流程

    我很好奇其他 django 开发人员如何通过迁移来管理多个代码分支 例如在 git 中 我的问题如下 我们在 git 中有多个功能分支 其中一些带有 django 迁移 其中一些更改字段 或完全删除它们 当我切换分支时 git checko
  • 将 jQuery 与 SQL Server 数据库连接

    我正在尝试构建一个 jQuery 功能 其场景如下所示 假设用户单击网站中的图像 页面上会弹出一个 jQuery 对话框 该对话框有一个文本字段 用于输入图像的 替代文本 当用户单击提交按钮时 该页面的文本应与图像的 URL 一起保存到我的
  • Hive 日期/时间戳列

    我在 HDFS 上有一些数据 我正在尝试将其设置为通过 hive 进行查询 数据采用逗号分隔文本文件的形式 文件中的一列是日期 时间列 如下所示 Wed Aug 29 16 16 58 CDT 2018 当我尝试读取使用以下脚本创建的 Hi
  • Auth 过滤器重定向回 Laravel 中的原始 POST 请求

    看来 Redirect guest login 只适用于 GET 请求 IE 它会将经过身份验证的用户重定向到原始预期 URL GET 在存在 POST 请求的情况下 是否有办法让身份验证过滤器在用户成功登录后继续 POST 到 URL 一
  • 如何避免 Linux/X11 上的 pygame 撕裂

    我一直在玩 pygame 在 Debian Lenny 上 它似乎工作得很好 除了烦人的位图撕裂 全屏或窗口模式 我正在使用默认的 SDL X11 驱动程序 谷歌搜索表明 X11 不提供垂直同步功能 这是 SDL 的一个已知问题 即使使用使
  • 两个相似的位姿具有较大的相对欧拉角

    欧拉角表示的相似位姿有两种 s euler angle o1 0 000549608 3 1334 1 23193 s euler angle o2 0 0222646 3 10948 1 31032 但 Eigen 计算出的相对欧拉角为