Slam14讲学习,再新版本的sophus的ch4代码
📅 2026/7/23 4:43:55
👁️ 次浏览
1.修改后的代码#include iostream #include cmath #include Eigen/Core #include Eigen/Geometry #include sophus/so3.hpp #include sophus/se3.hpp using namespace std; using namespace Eigen; int main(int argc, char **argv) { // 旋转矩阵 (绕Z轴旋转90度) Matrix3d R AngleAxisd(M_PI / 2, Vector3d(0, 0, 1)).toRotationMatrix(); // 四元数 Quaterniond q(R); // 平移向量 // ---------- SO(3) ---------- // 从旋转矩阵构造 Sophus::SO3double SO3_R(R); // 从旋转向量构造 (使用指数映射) Vector3d v(0, 0, M_PI / 2); Sophus::SO3double SO3_v Sophus::SO3double::exp(v); // 从四元数构造 Sophus::SO3double SO3_q(q); // 输出时需转换为矩阵或对数 cout SO(3) from matrix:\n SO3_R.matrix() endl; cout SO(3) from vector (exp):\n SO3_v.matrix() endl; cout SO(3) from quaternion:\n SO3_q.matrix() endl; // 对数映射 (李代数) Vector3d so3 SO3_R.log(); cout so3 so3.transpose() endl; // hat 和 vee cout so3 hat \n Sophus::SO3double::hat(so3) endl; cout so3 hat vee Sophus::SO3double::vee(Sophus::SO3double::hat(so3)).transpose() endl; // 扰动更新 (左乘) Vector3d update_so3(1e-4, 0, 0); Sophus::SO3double SO3_updated Sophus::SO3double::exp(update_so3) * SO3_R; cout SO3 updated matrix:\n SO3_updated.matrix() endl; cout************我是分割线*************endl; // ---------- SE(3) ---------- Vector3d t(1, 0, 0); Sophus::SE3double SE3_Rt(R, t); // 从 R, t 构造 Sophus::SE3double SE3_qt(q, t); // 从 q, t 构造 cout SE3 from R,t (matrix):\n SE3_Rt.matrix() endl; cout SE3 from q,t (matrix):\n SE3_qt.matrix() endl; // 李代数 se(3) typedef Matrixdouble, 6, 1 Vector6d; Vector6d se3 SE3_Rt.log(); cout se3 se3.transpose() endl; // hat 和 vee cout se3 hat \n Sophus::SE3double::hat(se3) endl; cout se3 hat vee Sophus::SE3double::vee(Sophus::SE3double::hat(se3)).transpose() endl; // 扰动更新 Vector6d update_se3 Vector6d::Zero(); update_se3(0) 1e-4; Sophus::SE3double SE3_updated Sophus::SE3double::exp(update_se3) * SE3_Rt; cout SE3 updated matrix:\n SE3_updated.matrix() endl; return 0; }CMakeList.txtcmake_minimum_required( VERSION 3.10 ) project( useSophus ) # Sophus set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Eigen3 REQUIRED) find_package( Sophus REQUIRED ) add_executable( useSophus useSophus.cpp ) # 现代写法自动带入头文件路径依赖不需要手动include_directories target_link_libraries( useSophus Sophus::Sophus )2. 修改不同方面原始代码书中修正后代码适配新版类型声明Sophus::SO3 R;无模板参数Sophus::SO3double R;必须指定标量类型从旋转向量构造Sophus::SO3 SO3_v(0, 0, M_PI/2);改为auto SO3_v Sophus::SO3double::exp(Vector3d(0,0,M_PI/2));使用指数映射输出对象cout SO3_R endl;直接流输出cout SO3_R.matrix() endl;调用.matrix()或.log()等静态方法调用Sophus::SO3::hat(so3)Sophus::SO3double::hat(so3)也要加模板参数头文件#include sophus/so3.h#include sophus/so3.hpp但新版也兼容.h旧名更推荐.hppC 标准默认 C11/14必须在 CMake 中设置CMAKE_CXX_STANDARD 17依赖项仅需 Eigen额外需要fmt库新版依赖
1. 项目概述:为什么我们需要一个Pak文件解析工具?如果你在虚幻引擎项目开发或逆向分析中打过交道,那么对.pak文件一定不会陌生。这个后缀的文件,是虚幻引擎用于打包游戏资源——包括模型、贴图、音频、蓝图、关卡数据等所有内容—…
📅 2026/7/23 4:43:55
温变与震动工况下精密贴标稳定性技术科普|苏州AI视觉贴标机工业环境适配原理
现代精密制造车间属于典型的动态复杂工况,设备持续高速运转产生机械震动、车间昼夜温差变化、空调启停导致温度波动、流水线高频启停带来的瞬时负载变化,都是常态化…
📅 2026/7/23 4:43:55
1. 从F280x到Piccolo:为什么ADC、ePWM和CSM的升级值得关注如果你和我一样,是从TI的C2000系列老将——比如TMS320F280x、2801x或2804x——一路用过来的工程师,那么初次接触F2802x/2803x Piccolo系列时,可能会觉得它们看起来像是“精…
📅 2026/7/23 4:43:55
在实际技术文档撰写和项目开发过程中,标题的优化并非简单的文字游戏,而是对项目核心价值、技术边界和受众群体的精准提炼。一个糟糕的标题可能导致技术方案被误解、资源申请被驳回,或者让潜在的协作者失去深入了解的兴趣。本文将围绕技术文档…
📅 2026/7/23 6:07:19
1. 异步执行场景与需求
在实际的脚本开发中,经常需要同时运行多个任务以提高执行效率。例如,一个备份脚本可能需要同时压缩多个目录,或者一个日志处理脚本需要并发解析多个文件。bash 提供了简单的异步执行机制——通过 & 将命令放入后台,让父脚本不必等待子任务完成就…
📅 2026/7/23 6:07:19
阅读时间:6分钟 | 适用人群:芯片测试工程师/射频开发工程师/自动化测试主管🔥 痛点引爆:芯片出厂测试太慢,传统方法根本跟不上市场需求某研究所的AD9910芯片生产线遇到了一个棘手问题:这款由ADI公司推出的高…
📅 2026/7/23 6:07:19
近期,国家医疗保障局正式发布《“医保影像云”基础规范》,文件统一了全国医保影像云底层建设标准与强制落地执行准则,同步为影像数据的长效存储、全链路安全防护、业务连续灾备建设划定了不可逾越的合规红线。
《“医保影像云”基础规范》核…
📅 2026/7/23 6:07:19
1. 项目概述:为什么我们需要深入Vulkan多线程渲染的“深水区”?如果你是一名图形程序员,或者正在向这个方向努力,那么“Vulkan”和“多线程渲染”这两个词对你来说一定不陌生。前者是Khronos组织推出的新一代跨平台图形与计算API&…
📅 2026/7/23 6:07:19
选对粉底,脸小一半。这篇不聊虚的,只讲怎么挑出适合你的那一款。读完这篇,你不会再花冤枉钱买错色号。最近后台私信炸了。好多姐妹问,为什么别人用 geo skincare 粉底 是妈生好皮,自己用就是斑驳卡粉。其实真不是产品不行,是你没搞懂它的脾气。这牌子在欧美圈挺火,主打一…
📅 2026/7/23 6:06:11
更多请点击:
https://intelliparadigm.com
第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…
📅 2026/7/23 0:00:26
最近好多同行在群里问 geo s1230 到底值不值得买。说实话,这机器在二手市场挺火。但水很深,新手很容易踩雷。我干了十年设备维护,见过太多冤大头。今天不扯虚的,直接上干货。先说价格,心里得有底。目前成色不错的二手货,大概在一万二到一万五之间。如果低于八千,别犹豫,…
📅 2026/7/23 0:01:16
更多请点击:
https://codechina.net
第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现࿱…
📅 2026/7/23 0:01:26
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/23 1:06:38
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/23 1:06:38
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/23 1:06:38
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/22 7:05:39
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/22 17:06:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/23 5:06:50