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

华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力3-获取设备位姿

设备位姿描述了物体在真实世界中的位置和朝向。AR Engine提供了世界坐标下6自由度(6DoF)的位姿计算,包括物体的位置(沿x、y、z轴方向位移)和朝向(绕x、y、z轴旋转)。通过AR Engine,您可以实时获取设备在空间中任意时刻的位姿。

创建ARSession

您可以参考管理AR会话创建ARSession。

世界坐标系

设备位姿一般在世界坐标系下进行表示。世界坐标系描述了真实物理空间中物体的绝对位置,其正方向如图所示。

图1 世界坐标系示意图

AR Engine会帮助您自动完成世界坐标系初始化。

获取设备当前位姿

  1. 创建一个空位姿变量cameraPose。
     
    1. AREngine_ARPose *cameraPose = nullptr;
    2. HMS_AREngine_ARPose_Create(arSession, nullptr, 0, &cameraPose);
  2. 获取当前时刻相机位姿信息,并存储在cameraPose变量中。
     
    1. // 创建一个新的AREngine_ARFrame对象。
    2. AREngine_ARFrame *arFrame = nullptr;
    3. HMS_AREngine_ARFrame_Create(arSession, &arFrame);
    4. // 更新当前帧的结果到arFrame。
    5. HMS_AREngine_ARSession_Update(arSession, arFrame);
    6. // 获取当前帧的相机参数对象。
    7. AREngine_ARCamera *arCamera = nullptr;
    8. HMS_AREngine_ARFrame_AcquireCamera(arSession, arFrame, &arCamera);
    9. // 获取当前时刻相机位姿信息。
    10. HMS_AREngine_ARCamera_GetPose(arSession, arCamera, cameraPose);
  1. 从cameraPose中获取相机位姿的不同分量,包括平移分量和旋转分量。
     
    1. float poseRaw[7] = { 0.0f };
    2. HMS_AREngine_ARPose_GetPoseRaw(arSession, cameraPose, poseRaw, 7);

AR Engine中,设备位姿由一个7维向量描述,包括旋转量

和位移量

。其中旋转量

是一组四元数,描述了设备相对于坐标原点的旋转状态;位移量是一组三维向量,描述了设备相对于坐标原点的平移状态,如下图所示。

图2 设备位姿的旋转和平移变化示意图

通过旋转分量和平移分量,您可以完备的描述设备位姿在空间中任意时刻的位姿状态。

http://www.lryc.cn/news/478124.html

相关文章:

  • qt QColorDialog详解
  • 【测试小白--如何写好测试用例--测试用例编写的方法+结合常见登录模块为实例--保姆级教学】
  • 真题--数组循环题目
  • 【Linux系列】在Linux下安装微信
  • 还在使用ElementUI不如试一试DaisyUI,DaisyUI: Tailwind CSS 的高效组件库,
  • 高光谱激光雷达遥感团队成员白杰博士获全国激光雷达优博论文奖
  • 24年配置CUDA12.4,Pytorch2.5.1,CUDAnn9.5运行环境
  • 基于springboot得高校评教教师工作量管理系统设计与实现
  • Rust 力扣 - 1456. 定长子串中元音的最大数目
  • 【Golang】validator库的使用
  • 【AI日记】24.11.06 我对投资的一点浅见
  • 2024江苏省网络建设与运维省赛Linux(一)系统安装
  • 详解Python面向对象程序设计
  • JS保留两位小数
  • ClickHouse集成Mysql表引擎跨服务器读表说明
  • 【AI构思渲染】别眨眼!这些图片立马变效果图!
  • 多特征变量序列预测(10)基于麻雀优化算法的CEEMDAN-SSA-Transformer-BiLSTM预测模型
  • 算法学习(十)—— 字符串
  • 「Mac畅玩鸿蒙与硬件16」鸿蒙UI组件篇6 - List 和 Grid 组件展示数据列表
  • masm汇编字符输入小写转大写演示
  • 防火墙|WAF|漏洞|网络安全
  • 继承机制深度解析:从基础到进阶的完整指南
  • 8. 数据结构——邻接表、邻接矩阵的基本操作
  • OpenCV Python 版使用教程(二)摄像头调用
  • 基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)
  • 几种常见的处理ARP欺骗的方法:静态ARP表和VLAN等
  • 突破1200°C高温性能极限!北京科技大学用机器学习合成24种耐火高熵合金,室温延展性极佳
  • ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效
  • Python学习笔记-断点操作结合异常处理
  • Java实现JWT登录认证